数据库查询---SQL(50分)

  • 主题发起人 主题发起人 sanji
  • 开始时间 开始时间
S

sanji

Unregistered / Unconfirmed
GUEST, unregistred user!
使用SQL语句从一个表中查询得到符合要求的记录的总数,
然后将这个总数在一个EDIT中显示出来.
请诸位赐教!(最好能写一个简单的例子,谢谢!)
 
select count(field1) as f1 where .... group by field1

tquery1.open;
edit1.text:=inttostr(tquery1f1.value);
 
看所提的问题,好象应该不要group by吧:

select count(field1) as f1 where ....

tquery1.open;
edit1.text:=inttostr(tquery1f1.value);
 
同意wuyi
用不着group by
不过用了也不会错,多此一举罢了.
 
query1.sql.text:='SELECT count(*) as sumrec from "table.db" where ...';
query1.open;
edit1.text:=inttostr(query1.fieldbyname('sumrec').asinteger);
 
group by用不用主要决定于条件,from也可以放进去,放着让自己挑,
>select count(field1) as f1 where .... group by field1
>tquery1.open;
>edit1.text:=inttostr(tquery1f1.value);
只要能达到目的就行了。
 
query1.close;
query1.clear;
query1.sql.add(select a = count(*)from tablename where...);
query1.open;
edit1.text := query1.fieldbyname("a").asstring;
不就行了吗?
 
同意SEARCHING的意见,我想的一样!
 
要灌水?我也会
query1.close;query1.clear;
query1.sql.add(select a = count(*)from tablename where...);query1.open;
edit1.text := inttostr(query1.fiels[0].asinteger);
 
俺也来倒筒水:
with TQuery.Create(nil) do
begin
SQL.Add('Select Count(*) As Num From table Where ...');
Open;
Edit1.Text := IntToStr(FieldByName('Num').AsInteger);
Close;
Free;
end;
 
补充两点
1、Select Count(xx)....
不返回活动数据集,因此Open前应将Query.RequestLive设置为False
2、大家都用 Select Count(xx) as xxx....
然后再用FieldByName('xxx')存取,
不必,可以这样:

with Query1 do
begin
Close;
RequestLive:=False;
SQL.Text:='Select Count(*) from ....';
Open;
SearchCount:=Fields[0].AsInteger;
end;
 
sanji要淹着了
 
正确的答案最多需要三个,其余的都是水,没味
 
多谢大家的解答!
 
多人接受答案了。
 
唉,晚了,
其实TQuery控件有一个RecordCount的只读属性,可以得到结果集的记录总数!!!
 
后退
顶部