在我的程序中三次用到recordcount,只有第一次得到的是正确的,后两次为什么都是-1呢?
后来我就就只好写循环,但是最后一次运行此循环时却有错误!
with dm.q_son_jishu do
begin
close;
sql.Add('select * from data_son_jishu where father_zhibiao_id=:id');
parambyname('id').AsString:=dm.q_jishu.fieldbyname('id').AsString;
open;
first;
end;
j:=0;
while not dm.q_son_jishu.Eof do
begin
j:=j+1;
dm.q_son_jishu.Next;
end;
后来我就就只好写循环,但是最后一次运行此循环时却有错误!
with dm.q_son_jishu do
begin
close;
sql.Add('select * from data_son_jishu where father_zhibiao_id=:id');
parambyname('id').AsString:=dm.q_jishu.fieldbyname('id').AsString;
open;
first;
end;
j:=0;
while not dm.q_son_jishu.Eof do
begin
j:=j+1;
dm.q_son_jishu.Next;
end;
怎么会出现这种问题
写出你用recordcount的代码,也让我们找找原因
用ADOquery
begin
close;
sql.Clear;
sql.Add('select * from data_son_jishu where shebei_id=:i');
parambyname('i').AsString:=dm.q_mode.fieldbyname('id').AsString;
open;
end;
j:=dm.q_son_jishu.recordcount;所查的数据可以可以看到一共是49条。但是j却为-1。
sql语句重复使用了
with dm.q_son_jishu do
begin
close;
sql.Add('select * from data_son_jishu where father_zhibiao_id=:id');
parambyname('id').AsString:=dm.q_jishu.fieldbyname('id').AsString;
open;//改成execsql看看~
first;
end;
想了一下午,还是坦诚面对自己的无知算了~
上面我的所谓“天经地义”都是荒唐的~
不过还是要先sql.clear~
open是对的了~
如果recordcount=-1,我也不知道为什么了~
从此踏实谦虚学习~
此query被多次使用了,
但是recordcount在DELPHI中是会出现为-1的没什么奇怪的.