dm1,dm2分别连的是各自库的表,要实现的是将一个表的东西倒入另一表,双循环时间太长,报库表定位不准确,库是sqlserver 2000,有没有好的方法?begin
dts_xm1.Close;
dts_xm1.CommandText:='select * from kt_shenbao_xiangmu where fzrsfzh in(select fzrsfzh from kt_shenbao_wrong  where cond=''7'' and zgbmyj=''pass'')';
dts_xm1.open;
dts_xm2.open;
dts_xm1.First;
dts_xm2.First;
while not dts_xm1.Eof do
 begin
  i:=true;
  dts_xm2.First;
   while not dts_xm2.Eof do
     begin
       if (dts_xm1.FieldValues['fzrsfzh']<>dts_xm2.FieldValues['fzrsfzh'])then
          dts_xm2.Next
          else
            begin
              i:=false;
              break;
            end;
     end;   if (i=true) and (dts_xm2.Eof)then
    begin
      dts_xm2.Insert;
      dts_xm2.FieldValues['xmbh']:=dts_xm1.FieldValues['xmbh'];
      dts_xm2.FieldValues['xmgs_a']:=dts_xm1.FieldValues['xmgs_a'];
      dts_xm2.FieldValues['xmgs_b']:=dts_xm1.FieldValues['xmgs_b'];
      dts_xm2.FieldValues['xmgs_c1']:=dts_xm1.FieldValues['xmgs_c1'];
      dts_xm2.FieldValues['xmgs_c2']:=dts_xm1.FieldValues['xmgs_c2'];
      dts_xm2.FieldValues['xmgs_c3']:=dts_xm1.FieldValues['xmgs_c3'];
      dts_xm2.FieldValues['xmgs_c4']:=dts_xm1.FieldValues['xmgs_c4'];
      dts_xm2.FieldValues['xmgs_c5']:=dts_xm1.FieldValues['xmgs_c5'];
      dts_xm2.FieldValues['xmgs_c6']:=dts_xm1.FieldValues['xmgs_c6'];
      dts_xm2.FieldValues['byx_a']:=dts_xm1.FieldValues['byx_a'];
      dts_xm2.FieldValues['byx_b']:=dts_xm1.FieldValues['byx_b'];
      dts_xm2.FieldValues['byx_c']:=dts_xm1.FieldValues['byx_c'];
      dts_xm2.FieldValues['yjnr_a']:=dts_xm1.FieldValues['yjnr_a'];
      dts_xm2.FieldValues['yjnr_b']:=dts_xm1.FieldValues['yjnr_b'];
      dts_xm2.FieldValues['yjnr_c']:=dts_xm1.FieldValues['yjnr_c'];
      dts_xm2.FieldValues['jsfa_a']:=dts_xm1.FieldValues['jsfa_a'];
      dts_xm2.FieldValues['jsfa_b']:=dts_xm1.FieldValues['jsfa_b'];
      dts_xm2.FieldValues['xyfx_a']:=dts_xm1.FieldValues['xyfx_a'];
      dts_xm2.FieldValues['xyfx_b']:=dts_xm1.FieldValues['xyfx_b'];
      dts_xm2.FieldValues['tjjc_a1']:=dts_xm1.FieldValues['tjjc_a1'];
      dts_xm2.FieldValues['tjjc_b']:=dts_xm1.FieldValues['tjjc_b'];
      dts_xm2.FieldValues['tjjc_c']:=dts_xm1.FieldValues['tjjc_c'];
      dts_xm2.FieldValues['jdjf']:=dts_xm1.FieldValues['jdjf'];
       dts_xm2.FieldValues['clqd']:=dts_xm1.FieldValues['clqd'];
      dts_xm2.FieldValues['sbdwyj']:=dts_xm1.FieldValues['sbdwyj'];
      dts_xm2.FieldValues['xzbmyj']:=dts_xm1.FieldValues['xzbmyj'];
      dts_xm2.FieldValues['zgdwyj']:=dts_xm1.FieldValues['zgdwyj'];
      dts_xm2.FieldValues['ywcyj']:=dts_xm1.FieldValues['ywcyj'];
      dts_xm2.FieldValues['shxy']:=dts_xm1.FieldValues['shxy'];
      dts_xm2.FieldValues['fzrsfzh']:=dts_xm1.FieldValues['fzrsfzh'];
      dts_xm2.FieldValues['result']:=dts_xm1.FieldValues['result'];
      dts_xm2.FieldValues['zndm']:=dts_xm1.FieldValues['zndm'];
      dts_xm2.FieldValues['xmmc']:=dts_xm1.FieldValues['xmmc'];
      dts_xm2.FieldValues['cddw']:=dts_xm1.FieldValues['cddw'];
      dts_xm2.FieldValues['judger']:=dts_xm1.FieldValues['judger'];
      dts_xm2.FieldValues['judgeradvice']:=dts_xm1.FieldValues['judgeradvice'];
      dts_xm2.FieldValues['judgesuccess']:=dts_xm1.FieldValues['judgesuccess'];
      dts_xm2.FieldValues['judgefail']:=dts_xm1.FieldValues['judgefail'];      dts_xm2.post;
    end;
  dts_xm1.next;
  end;
  dts_xm1.Close;
  dts_xm2.Close;
end;

解决方案 »

  1.   

    各自库的表是不是指两个数据库?
    好象可以用 Insert Into 表1 Valuse(所需字段)
    (
    Select 所需字段 From 表2
    Where 条件
    )
      

  2.   

    Delphi有一个标准控件TBatchMove,实现这个功能好象不难.
    你一看就明白了.
      

  3.   

    好像tbatchmove是应用于两个相同结构的表的,异构的不知如何
    存储过程好像更好些
      

  4.   

    存储过程啊;
    没有你这样导表的;
    -------------------------------------------------
    www.nxit.net/bbs
    愿于您一起交流
      

  5.   

    dts_xm1.CommandText:='select * from kt_shenbao_xiangmu where fzrsfzh in(select fzrsfzh from kt_shenbao_wrong  where cond=''7'' and zgbmyj=''pass'')';
    //建议新建一个视图 其数据就是dts_xm1所取得的数据 ,然后不是很容易就可以使用 
    INSERT INTO TABLE1 
       (FIELD1,FIELD2...)
    SELECT FIELD1,FIELD2....
    FROM TABLE2
    WHERE ....
    查询,具体你可以参考一下SQL SERVER 联机帮助