高手看过来!query控件怎么了?(100分)

  • 主题发起人 主题发起人 平常人
  • 开始时间 开始时间
Tquery好象没有count这个属性哦!你是想做按ID号查询库里面有没有记录吧?用下面的代码应该可搞定:
query.clear;
query.sql.add('select * from tablename where id=3');
query.open;
if query.eof=true
then showmessage('没有找到!');

(和别人一样!不好意思了!实在是太穷了!不能白跑一趟啊!^O^)
 
不知道我的回答晚了没有?
平常人犯了两个错误!
1 。应该为query.close;
query.sql.clear;
.......
2. 可能是我太差,不知道query.count 你怎么能编译过去!应该为query.recordcount,试试看!
能不能送我点分了?
 
query没有count属性,把if ...改为
if query.isempty then showmessage('没有找到!');
 
应该是recordcount吧
query没遇到过这个毛病
ADoquery确实有这个毛病
换成Adodataset就好了
 
你可以在程序开始时先在query中将游标从第一个记录起一直移动到最后一条记录,然
后再取query.count的值,这样就能得到它的总记录数。以后也不需要再移游标了。
如果加入和删除记录,query.count值也会自动更新。VC里就有这个毛病,query也不
例外。
 

用RECORDCOUT 肯定行!我刚试过!
query.close;
query.clear;
query.sql.add('select * from tablename where id=3');
query.open;
if query.recordcount<=0 then showmessage('没有找到!');


 
ID 通常是自增字段,如果你的表中如此,结果不会大于1.
有些Query确有此问题,RecordCount不管用。
 
给你一个程序,自己好好研究吧
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, Grids, DBGrids;

type
TForm1 = class(TForm)
Query1: TQuery;
Button1: TButton;
Label1: TLabel;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
with query1 do
begin
close;
sql.clear;
sql.add('select company from customer.db where company=''Unisco''');
open;
first;
if eof then
showmessage('没有找到!')
else
label1.Caption:=inttostr( query1.RecordCount);
end;
end;

end.
 
用RecordCount,isempty,eof 应该都可以
 
用RecordCount时可将属性改为只读就没有任何问题。
 
接受答案了.
 
后退
顶部