procedure TForm1.btn_LoadClick(Sender: TObject);
begin
 with adoquery1 do
  begin
  close;
  sql.clear;
  sql.add('Select name,sex,ClientID from clientinfo where birthyear=1983');
  open;
  end;
    with adoquery2 do
  begin
  close;
  sql.clear;
  sql.add('Select chinesename,sex,id from person');
  open;
  while not adoquery1.eof do
     begin
     adoquery3.close;
     adoquery3.sql.Clear;
     adoquery3.sql.add('select * from person where id='''+adoquery1.Fields[2].asstring+'''');
     adoquery3.open;
if adoquery3.recordcount=0 then
  begin
  adoquery1.first;
  insert;
  fieldbyname('chinesename').asstring:=adoquery1.fieldbyname('name').asstring;
  fieldbyname('sex').asstring:=adoquery1.fieldbyname('sex').asstring;
  fieldbyname('id').asstring:=adoquery1.fieldbyname('ClientID').asstring;  post ;
  adoquery1.Next;
  end
  else
  begin
  end;
  end;
 end;
  end;
end.其中ADOQUERY1是连到服务器的SQL数据库
ADOQUERY2。ADOQUER.3是连接本机MDB
我想实现的功能就是:从服务器选择一些数据COPY到本机。(如果本机存在某一项数据则跳过。)
可是这个程序有问题。。请大师们帮我看看错在哪里

解决方案 »

  1.   

    if adoquery3.recordcount=0 then
      begin
      adoquery1.first;
      insert;
      fieldbyname('chinesename').asstring:=adoquery1.fieldbyname('name').asstring;
      fieldbyname('sex').asstring:=adoquery1.fieldbyname('sex').asstring;
      fieldbyname('id').asstring:=adoquery1.fieldbyname('ClientID').asstring;  post ;
      adoquery1.Next;
      end
      else
      begin
      adoquery1.Next;//加多一行
      end;
      

  2.   

    with adoquery2 do
      begin
      close;
      sql.clear;
      sql.add('Select chinesename,sex,id from person');
      open;
      adoquery1.first;
      while not adoquery1.eof do
         begin
         adoquery3.close;
         adoquery3.sql.Clear;
         adoquery3.sql.add('select * from person where id='''+adoquery1.Fields[2].asstring+'''');
         adoquery3.open;
    if adoquery3.recordcount=0 then
      begin
      insert;
      fieldbyname('chinesename').asstring:=adoquery1.fieldbyname('name').asstring;
      fieldbyname('sex').asstring:=adoquery1.fieldbyname('sex').asstring;
      fieldbyname('id').asstring:=adoquery1.fieldbyname('ClientID').asstring;  post ;
      end
      adoquery1.Next;  end;
     end;这样应该没问题了,
    感觉上你的逻辑比较乱,自己理一下就可以了。
      

  3.   

    toln521(*逃课小王子*) 
    现在没有重复的啦。。