在一个企业里有很多项目经理,我想通过SQL把该企业的所有一级的项目经理的总和数取出来,只在前台DELPHI里实现,请问怎么去?
with datamodule1.ADOQuery1 do
begin
sql.Clear;
sql.Add('select count(*) from sgqyxmjlmd where zzdj=''一级''')
也就是说中间的COUNT(*)的数据我怎么取出来?
with datamodule1.ADOQuery1 do
begin
sql.Clear;
sql.Add('select count(*) from sgqyxmjlmd where zzdj=''一级''')
也就是说中间的COUNT(*)的数据我怎么取出来?
你可以定义一个变量如AA你就叫AA=ADOQuery1.Fields[0].asinteger
然后你就可以把你的AA作为一个字段值存下数据库中
begin
close;
sql.text := 'select count(*) from sgqyxmjlmd where zzdj=''一级'''
open;
取出来数据 := ADOQuery1.Fields[0].asinteger;
end;
用SELECT COUNT(*),ZZDJ FROM XGQYXMJLMD GROUP BY ZZDJ
'select count(*) as FCount from sgqyxmjlmd where zzdj=''一级''')然后,ADOQuery1.fieldbyname('Fcount').asinteger不就取出来了吗?
2.select count(*) c from sgqyxmjlmd where zzdj=''一级''
ADOQuery1['c'] //直接取了
select count(*) as AA。。
EDIT1.TEXT :=FLOATTOSTR(ADOQRY1.FIELDBYNAME('AA').ASVALUE);
SELECT COUNT(*) AS CT,ZZDJ FROM XGQYXMJLMD GROUP BY ZZDJ
就可以了
它查询出来的结果会是三条记录!!!
你可以分别用AAA,BBB,CCC,三个变量来到这
三个记录的CT的值就可以了!!!
adoquery1.first;
AAA:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
ADOQUERY1.NEXT;
BBB:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
ADOQUERY1.NEXT;
CCC:=:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
begin
close;
sql.clear;
sql.text:='select count(*) as ct,zzdj from XGQYXMJLMD'
+' where zzdj='+#39+'一级'+#39
+'union select count(*) as ct ,zzdj from XGQYXMJLMD'
+' where zzdj='+#39+'二级'+#39
+'union select count(*) as ct ,zzdj from XGQYXMJLMD'
+' where zzdj='+#39+'三级'+#39;
open;
end;
它查询出来的结果会是三条记录!!!
你可以分别用AAA,BBB,CCC,三个变量来到这
三个记录的CT的值就可以了!!!
adoquery1.first;
AAA:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
ADOQUERY1.NEXT;
BBB:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
ADOQUERY1.NEXT;
CCC:=:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
I:Integer ;
with datamodule1.ADOQuery1 do
begin
sql.Clear;
sql.Add('select count(*) from sgqyxmjlmd where zzdj='''+Str+'''');
Open ;
I:=Fields[0].AsInteger ;
End ;
End ;
在你不知道要取哪个级别或哪几级的数量时你只有一次次的调用这段代码了