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到本机。(如果本机存在某一项数据则跳过。)
可是这个程序有问题。。请大师们帮我看看错在哪里
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到本机。(如果本机存在某一项数据则跳过。)
可是这个程序有问题。。请大师们帮我看看错在哪里
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;
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;这样应该没问题了,
感觉上你的逻辑比较乱,自己理一下就可以了。
现在没有重复的啦。。