设:Access数据库A中a表 Access数据库B中b表
a表数据更新变化时,b表同时改变,即同步;
现在采取的方法是
while not aqryA_a.Eof do
begin
aqryB_b.close;
aqryB_b.sql.text := 'select count(*) as AS HaveCount where ID='+aqryA_a.FieldByName('ID').asString;
aqryB_b.open;
if aqryB_b.FieldByName('ID').asInteger <=0 then
begin
aqryUpdate.append;
aqryUpdate.FieldByName('XXX').asString := aqryA_a.FieldByName('XXX').asString;
end; aqryA_a.Next;
end;请问下,有没有什么更好的解决思路,现在每次数据超过10000条时,执行开销太大。
a表数据更新变化时,b表同时改变,即同步;
现在采取的方法是
while not aqryA_a.Eof do
begin
aqryB_b.close;
aqryB_b.sql.text := 'select count(*) as AS HaveCount where ID='+aqryA_a.FieldByName('ID').asString;
aqryB_b.open;
if aqryB_b.FieldByName('ID').asInteger <=0 then
begin
aqryUpdate.append;
aqryUpdate.FieldByName('XXX').asString := aqryA_a.FieldByName('XXX').asString;
end; aqryA_a.Next;
end;请问下,有没有什么更好的解决思路,现在每次数据超过10000条时,执行开销太大。
是不是应该
if aqryB_b.FieldByName('HaveCount').asInteger <=0 then ?
意思是说如果要把所有A表中有的,而B表中没有的记录插入B表,是这个意思吧?
那直接用查询语句执行,肯定比循环效率高很多
Insert Into TableB select YourNeedField From TableA a Not Exists (Select Id From TableB Where ID=a.ID)
在链接表建立是的对话框,下面不是可以选文件类型吗?选ODBC Database()就行了
with aqryA_a do
begin
Close;
Sql.Clear;
Sql.Add('Select * from TableA');
Open;
end;
with aqryB_b do
begin
Close;
Sql.Clear;
Sql.Add('Select * from TableB');
Open;
end;
while not aqryA_a.Eof do
begin
if Not aqryB_b.Locate('ID',aqryA_a.FieldByName('ID').asString,[]) then//没在B中找到
with aqryC do
begin
//插入B操作
end;
aqryA_a.Next;
end;