for k:=0 to ADOQ_gsmc.RecordCount-1 do
begin
if ADOQ_gsmc.Eof=true then
begin
inq:=inq+'CKGL_RKB.khid='+''''+ADOQ_gsmc.FieldByName('khid').AsString+''''+')';
end
else
begin
inq:=inq+'CKGL_RKB.khid='+''''+ADOQ_gsmc.FieldByName('khid').AsString+''''+'or ';
ADOQ_gsmc.Next;
end;
end;
就是上面这行代码,每次都不执行if中的语句,我跟踪了一下,就算是到了ADOQUERY的最后一条记录,也是直接跳过执行else后面的代码,不知道怎么回事
解决方案 »
- InnoSetup安装时如何跳过一个文件?
- 有谁可以替我写一个文本打印的程序
- delphi5 能调用c#写的com 吗
- 求助:这样的指针需要释放吗?如果要的话,是怎么释放的?
- 如何查找IE浏览器上所有的flash和图片文件的 路径?如 迅雷
- 这是什么意思呀,为什么在d6中错误呀
- 请各位告诉我,哪里有专门<Delphi函数>的电子书籍下载的?在线等待!!!!!
- 关于 image
- 如何用程序检测我是否已经连上Internet网络
- 一个insert语句在程序中执行成功了,事务也提交了,SQL拿到plsql中也可以执行,但用程序执行时就是没有结果,跪求真相...
- 怎样取得当前代码的caption
- 如何判断CHECKBOX已选,并插入数据库中?
ADOQ_gsmc.Eof是判断当前数据集是否指向最后,你代码中也没有移动数据集的语句(如ADOQ_gsmc.Next等)。
最好这么遍历数据集
ADOQ_gsmc.Open; //默认First
while not ADOQ_gsmc.Eof do
begin
ADOQ_gsmc.Next;
end;
ADOQ_gsmc.Close;
改成
if k = ADOQ_gsmc.RecordCount-1 then当数据集第一次指向最后一条记录时Eof并不为true,需要next后,才为true
begin
if ADOQ_gsmc.Eof=true then
begin
inq:=inq+'CKGL_RKB.khid='+''''+ADOQ_gsmc.FieldByName('khid').AsString+''''+')';
end
else
begin
inq:=inq+'CKGL_RKB.khid='+''''+ADOQ_gsmc.FieldByName('khid').AsString+''''+'or ';
ADOQ_gsmc.Next;
end;
end;
改成
if ADOQ_gsmc.Eof then
for k:=0 to ADOQ_gsmc.RecordCount-1 do
begin
if k=AdoQ_gsmc.RecordCount-1 then
begin
inq:=inq+'CKGL_RKB.khid='+''''+ADOQ_gsmc.FieldByName('khid').AsString+''''+')';
end
else
begin
inq:=inq+'CKGL_RKB.khid='+''''+ADOQ_gsmc.FieldByName('khid').AsString+''''+'or ';
ADOQ_gsmc.Next;
end;
end;
eof应该是循环到最后一条记录后再next一次才会变成true.