前台为delphi 后台数据库为vfp的两个表t_pb,myban(其中myban为在程序运行时建立的)要实现的功能是这样的:用sql语句先建立结构与t_pb一样的表myban, 把exel中的数据先导入myban中,再用myban的数据更新t_pb中的数据.odbc的驱动我选的是:microsoft visual foxpro driverdatabasetype 我选的是free table directory /////////////////////// sql语句我写入下 update  t_pb  set b01=myban.b01  from   myban  where  ltrim(rtrim(t_pb.zgbh)) = ltrim(rtrim(mypan.zgbh))其中zgbh为两个表的关键字可是错误如下:Command contains unrecognized phrase/keyword我把sql语句改成update t_pb inner join myban on  ltrim(rtrim(t_pb.zgbh)) = ltrim(rtrim(mypan.zgbh))set  b01=myban.b01  错误跟上面一样。到底哪个地方错了,请高手们指条生路呀。再sql server 中轻而易举的事情在vfp中怎么比登天还难。vfp 真垃圾。

解决方案 »

  1.   

    有没有高手呀?在sql server上一分钟搞定的东西 ,在垃圾vfp上怎么就不行呢。
      

  2.   

    excel导过来的表的数据类型是不对的,特别是逻辑型字段都变成字符型了,而且内容也成为什么true和false
    update t_pb set tp_pb.b01=myban.b01 where trim(t_pb.zgbh) = trim(mypan.zgbh)
    delphi中没有ltrim()和rtrim(),只有trim(),update中好象也没有from
    我的专家分还没多少呢
      

  3.   

    我解决了,只好用笨办法了。
    var
    s:string;
    beginaq1.close;
    aq1.sq1.clear;
    aq1.sql.add('select * from myban ');
    aq1.open;aq1.first;
    while not aq1.eof do
    begin
    s:=trim(aq1.fieldbyname('zgbh').Asstring);
    aq2.close;
    aq2.sq1.clear;
    aq2.sq1.add(' select * from  t_pb where zgbh=''+s+'''' ' );
    aq2.open;if aq2.recordcount>0 then
    begin
    aq2.edit;
    aq2.fieldbyname('b01').value:=trim(aq1.fieldbyname('b01').Asstring);
    aq2.post;
    end;aq1.next;end;end;vfp这样落后的东西居然公司里面还有这样的程序。郁闷。