我现在有一个dbgrid1显示的数据表,字段名分别为product,part,class(级别),price,amount等。想通过BberechnenClick的方法实现对amount里面内容
循环相加(控制条件为query1.FieldByName('class').AsString=combobox1.Text)
我现在这个程序肯定是循环出现问题了,每次执行之后,就判断第一条记录中
class内容是否和combobox相同,相同就执行,不相同就为0了。我也不知道自己有没有把问题说清楚,不清楚的话我把具体数字列出吧。procedure TForm1.BberechnenClick(Sender: TObject);
var sum:real;
i:integer;
begin
Query1.DisableControls;
Query1.first;
sum:=0;
for i:=0 to query1.RecordCount-1 do
begin
if query1.FieldByName('class').AsString=combobox1.Text
then
begin
while not Query1.eof do
begin
sum:=sum+Query1.FieldByName('Amount').AsFloat;
Query1.next;
end;
Query1.EnableControls;
Edit3.Text:=FloatToStr(sum*strtofloat(edit1.Text));
end
else
edit3.Text:='0'
end;
end;
循环相加(控制条件为query1.FieldByName('class').AsString=combobox1.Text)
我现在这个程序肯定是循环出现问题了,每次执行之后,就判断第一条记录中
class内容是否和combobox相同,相同就执行,不相同就为0了。我也不知道自己有没有把问题说清楚,不清楚的话我把具体数字列出吧。procedure TForm1.BberechnenClick(Sender: TObject);
var sum:real;
i:integer;
begin
Query1.DisableControls;
Query1.first;
sum:=0;
for i:=0 to query1.RecordCount-1 do
begin
if query1.FieldByName('class').AsString=combobox1.Text
then
begin
while not Query1.eof do
begin
sum:=sum+Query1.FieldByName('Amount').AsFloat;
Query1.next;
end;
Query1.EnableControls;
Edit3.Text:=FloatToStr(sum*strtofloat(edit1.Text));
end
else
edit3.Text:='0'
end;
end;
var sum:real;
i:integer;
begin
Query1.DisableControls;
Query1.first;
sum:=0;
begin
if query1.FieldByName('class').AsString=combobox1.Text
then
begin
while not Query1.eof do
begin
sum:=sum+Query1.FieldByName('Amount').AsFloat;
Query1.next;
end;
Query1.EnableControls;
Edit3.Text:=FloatToStr(sum*strtofloat(edit1.Text));
end
else
edit3.Text:='0'
end;
最外层的循环我觉得完全没有必要吖
var sum:real;
i:integer;
begin
Query1.DisableControls;
Query1.first;
sum:=0;
for i:=0 to query1.RecordCount-1 do
begin
if query1.FieldByName('class').AsString=combobox1.Text
then
begin
while not Query1.eof do
begin
sum:=sum+Query1.FieldByName('Amount').AsFloat;
end;
Query1.EnableControls;
Edit3.Text:=FloatToStr(sum*strtofloat(edit1.Text));
Query1.next;
end
else
edit3.Text:='0'
end;
end;
dbgrid里class比如纵向依次是first amount里有30 要对三个级别的数分别求和,
first 50
third 89
second 78
first 21
third 10
该怎么做?可能我上面的思路根本就不好,有更好的方法,请帮帮我。谢谢菜菜和凌然。
Query2.Sql.Text:='select Sum(amount) Form 表名 Where Class=Combobox1.text';
procedure TForm1.BberechnenClick(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Text:='select Sum(preis) Form product Where class=combobox1.text';
query1.Open;
edit3.Text:=query1.SQL.Text;
end;
但是还是不能得到我想要的结果,我是个delphi的新手,这是我们的作业,一定要完成
这个作业才能参加考试。急死我了,请大家帮帮忙,谢了!