你说要遍历是吧。那就循环呀 效率低点,行吗,很多方法呀, 我现在 只写这些了 query1.close; query1.sql.clear; query1.sql.add('select * from table'); try query1.open; excpet query1.execsql; end; for i:=1 to query1.recordcount do//开始遍历TABLE1 begin query2.close; query2.sql.clear; query2.sql.add('select * from table where pk_field like :p'); query2.parambyname('p').asstring:=query1.fieldbyname('pk_field'); try query2.open; except query2.execsql; end; if query2.recordcount=1 then //TABLE2和TABLE1有重复记录 begin query3.close; query3.sql.clear; query3.sql.add('update table2 set .......'); query3.parmabyname.......... query3.execsql; end else ///TABLE2和TABLE1没有重复记录 begin query3.close; query3.sql.clear; query3.sql.add('insert into table2 values........'); query3.parabyname............ query3.execsql; end; query1.next; end;
table 的编号没有写 忘了,你自己看吧, 不好意思,有问题, 可以讨论
to byrybye(BYRY): 感谢你的参与,不过这种方法可以说是最没有效率的一种办法,用一条SQL语句实现是最好的,我半年前还在原来那家公司干的时候,用SQL Server实现过,使用Exists..else的语法,只不过现在真是记不得怎么写的了,要真没办法,也只好用这种笨方法了。呵呵up
效率低点,行吗,很多方法呀,
我现在 只写这些了
query1.close;
query1.sql.clear;
query1.sql.add('select * from table');
try
query1.open;
excpet
query1.execsql;
end;
for i:=1 to query1.recordcount do//开始遍历TABLE1
begin
query2.close;
query2.sql.clear;
query2.sql.add('select * from table where pk_field like :p');
query2.parambyname('p').asstring:=query1.fieldbyname('pk_field');
try
query2.open;
except
query2.execsql;
end;
if query2.recordcount=1 then //TABLE2和TABLE1有重复记录
begin
query3.close;
query3.sql.clear;
query3.sql.add('update table2 set .......');
query3.parmabyname..........
query3.execsql;
end
else ///TABLE2和TABLE1没有重复记录
begin
query3.close;
query3.sql.clear;
query3.sql.add('insert into table2 values........');
query3.parabyname............
query3.execsql;
end;
query1.next;
end;
忘了,你自己看吧,
不好意思,有问题,
可以讨论
感谢你的参与,不过这种方法可以说是最没有效率的一种办法,用一条SQL语句实现是最好的,我半年前还在原来那家公司干的时候,用SQL Server实现过,使用Exists..else的语法,只不过现在真是记不得怎么写的了,要真没办法,也只好用这种笨方法了。呵呵up