请问高手一个问题(30分)

  • 主题发起人 主题发起人 bearwong
  • 开始时间 开始时间
B

bearwong

Unregistered / Unconfirmed
GUEST, unregistred user!
var
manager:string;
begin
Query1.Close;
Query1.SQl.Clear;
Query1.SQl.Add('select 商户代号 as man from "mydata.db" where 文件名=:文件名');
Query1.ParamByName('文件名').asstring:=TheRecord;
Query1.Prepare;
Query1.Open;
query1.First;
while not query1.Eof do
begin
manager:=Query1.FieldByname('man').AsString;
Query2.Close;
Query2.SQl.Clear;
Query2.SQl.Add('select * from "manager.db" where 商户代号=:商户代号');
Query2.ParamByName('商户代号').asstring:=manager;
Query2.Prepare;
Query2.Open;
if Query2.RecordCount = 0 then
begin
showmessage('error');
end
else
query1.Next
end;
end;

意图是鉴定mydata.db表中的商户代号字段的每一条记录都是否在manager.db表中存在,不存在就提示错误,但以上的语句不能起到预期的效果进入死循环,请问哪里出了问题,应该如何处理
 
用一个连接不能解决吗?
 
无论是否有错,query1都应该Next呀
 
同意楼上的,showmessage过程后增加query1.next;
 
这一段需要这样写
if Query2.RecordCount = 0 then
begin
showmessage('error');
Break; //如果检查出错误,则要中断循环
end
else
query1.Next
end;
 
用一句sql啊!
 
同意楼上的,showmessage过程后增加query1.next;

表达是还可以这样表达,不要直接每条都去匹配,直接把所以的记录都取出来一次匹配
也能符合你的要求!
select * from "manager.db" where not in (select 商户代号 as man from "mydata.db" where 文件名=:文件名)
 
已经过去一年半了......
 
后退
顶部