为什么我用query查询结果后,用inttostr(query1.recordcount)转换后总显示-1?急!急!急!急!急!急!(50分)

  • 主题发起人 l_lei_ly
  • 开始时间
L

l_lei_ly

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我用query查询结果后,用inttostr(query1.recordcount)转换后总显示-1?急!急!急!急!急!急!
 
可能查错了呢
 
返回记录的方式或游标类型的不同可能导致 RecordCount 不可用。(记不太清楚了)
 
不会查错啊,在dbgrid里面,结果都显示出来了,但是就是显示为-1,也不一定,有一部分,当查出来结果是一个时,就显示1,其它的都是-1,奇怪啊!
 
如果肯定查询结果有数据,可能需要要执行一下Query.Last
 
Query.Last
我也试过了,最后还用inttostr(query1.recno)显示还是-1
 
procedure TForm3.Button1Click(Sender: TObject);
var bir,cardno,area,jiang,te:string;
begin
label3.Caption:='';
if rb1.Checked=true then
with query1 do
begin
close;
sql.clear;
sql.Add('select * from khzl where ÐÕÃû=:xm');
ParamByName('xm').asstring:=trim(combobox1.text);
open;
end;
if rb2.Checked=true then
begin
bir:='select * from khzl where ÉúÈÕ like '+'''%-'+trim(combobox5.text)+'-'+ trim(combobox6.text)+'''';
with query1 do
begin
close;
sql.clear;
sql.Add(bir);
open;
end;
end;
if rb3.Checked=true then
begin
cardno:='select * from khzl where »áÔ±¿¨ºÅ like '+'''%'+trim(combobox2.Text)+'''';
with query1 do
begin
close;
sql.clear;
sql.Add(cardno);
open;
end
end ;
if rb4.Checked=true then
begin
with query1 do
begin
close;
sql.clear;
sql.Add('select * from khzl where ¼¶±ð=:jb');
ParamByName('jb').asstring:=trim(combobox3.Text);
open;
end
end;
if rb5.Checked=true then
begin
area:='select * from khzl where ÇøÓò like '+'''%'+trim(combobox4.Text)+'%''';
with query1 do
begin
close;
sql.clear;
sql.Add(area);
open;
end;
end;
if rb6.Checked=true then
begin
jiang:='select * from khzl where »ñ½±Çé¿ö like '+'''%'+trim(edit1.Text)+'%''';
with query1 do
begin
close;
sql.clear;
sql.Add(jiang);
open;
end;
end;
if rb7.Checked=true then
begin
te:='select * from khzl where Ìس¤°®ºÃ like '+'''%'+trim(edit2.Text)+'%''';
with query1 do
begin
close;
sql.clear;
sql.Add(te);
open;
end;
end;
label3.Caption:='¹²ÓÐ'+inttostr(query1.RecordCount)+'Ìõ¼Ç¼';
dbgrid1.Visible:=true;
end;
 
数据库中,有没有二进制字段(存储声音、图象)?可能出现这种情况。
当返回0时才没有记录,-1代表有记录。可以自己写一个函数。
 
如果你的Query的Sql属性是动态的,那么就对了,这是Query的Bug,
 
顶部