一个简单的问题,可我一下子实现不了,请教大家(20分)

  • 主题发起人 主题发起人 delwang
  • 开始时间 开始时间
D

delwang

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.RadioGroup1Click(Sender: TObject);
var query:string;
begin
query:=radiogroup1.Items[radiogroup1.ItemIndex];
try
adoquery2.Active :=true;
adoquery2.First ;
while not (adoquery2.eof) do
begin
adoquery2.Close;
adoquery2.SQL.Clear ;
adoquery2.SQL.Add('select sum(jg) from yqb11 where sy='+''''+query+'''');
adoquery2.ExecSQL ;
adoquery2.Open ;
end;
finally
adoquery2.Active :=false;
end;
end;
上面是我的句子,我要实现将sum(jg)的到的结果显示在一个label.caption里,如何写?
 
Label1.Caption:=IntToStr(adoquery2.Fields[0].AsInteger);
 
procedure TForm1.Button1Click(Sender: TObject);
begin
try
ADOQuery1.Active :=true;
ADOQuery1.first ;
while not (ADOQuery1.eof) do
begin
radiogroup1.Items.Add(ADOQuery1.fieldbyname('sy').asstring);
ADOQuery1.Next ;
end;
finally
ADOQuery1.Active :=false;
end;
radiogroup1.ItemIndex :=0;

end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
var query:string;
begin
query:=radiogroup1.Items[radiogroup1.ItemIndex];
try
adoquery2.Active :=true;
adoquery2.First ;
while not (adoquery2.eof) do
begin
adoquery2.Close;
adoquery2.SQL.Clear ;
adoquery2.SQL.Add('select sum(jg) from yqb11 where sy='+''''+query+'''');
// adoquery2.ExecSQL ;
adoquery2.Open ;
end;
finally
// adoquery2.Active :=false;
end;
label1.Caption :=inttostr(adoquery2.Fields[0].AsInteger);
end;
还是有问题,得不到那个sum()后的值呀
 
label1.Caption :=inttostr(adoquery2.Fields[0].AsInteger);
要放置在
adoquery2.Open ;后面end前,
而且,你程序还存在其他的问题,Query2使用了两个功能。
 
注意AdoQuery1和AdoQuery2,这两个是冲突的。
while not (adoquery2.eof) do
begin
adoquery1.Close;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select sum(jg) from yqb11 where sy='+''''+query+'''');
adoquery1.Open ;
label1.Caption :=inttostr(adoquery1.Fields[0].AsInteger);
end;
 
//adoquery2.ExecSQL ;
adoquery2.Open ;
 
使用聚合函数需要使用GROUP BY
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
573
import
I
I
回复
0
查看
860
import
I
后退
顶部