我在Delphi 7中有一个DBGrid,它由一个用Paradox创建的表链接,该表包含RefBac,NumberPCSRebuts。
RefBac可以重复几次。我想计算每个RefBac的NumberPCSRebuts的总和,并将它在列PCSNonOk
中完全插入包含最后一个RefBac的行中,然后再更改。
我发现这个算法可以进行正确的计算,但它会将结果插入到以下行中:[结果希望我想要
Somme:=0;
DataModule1.Ouvraison.First;
DataModule1.Ouvraison.Edit;
Vax := DataModule1.Ouvraison.fieldByName('RefBac').value;
while (not DataModule1.Ouvraison.EOF) do
begin
If(DataModule1.Ouvraison.FieldByName('RefBac').Value= Vax ) then
begin
DataModule1.Ouvraison.Edit;
Somme:=Somme+DataModule1.Ouvraison.fieldByName('NbRebut').value;
DataModule1.Ouvraison.Post;
DataModule1.Ouvraison.next;
end else begin
DataModule1.Ouvraison.Edit;
DataModule1.Ouvraison.fieldByName('PCS NOK').value := Somme;
Somme := 0;
Vax := DataModule1.Ouvraison.fieldByName('RefBac').value;
DataModule1.Ouvraison.Post;
end;
答案 0 :(得分:0)
你可以试试这个:
Somme:=0;
DataModule1.Ouvraison.First;
DataModule1.Ouvraison.Edit;
Vax := DataModule1.Ouvraison.fieldByName('RefBac') .value;
if not DataModule1.Ouvraison.EOF then
begin
while (not DataModule1.Ouvraison.EOF) do
begin
If(DataModule1.Ouvraison.FieldByName('RefBac').Value= Vax ) then
begin
DataModule1.Ouvraison.Edit;
Somme:=Somme+DataModule1.Ouvraison.fieldByName('NbRebut').value;
DataModule1.Ouvraison.Post;
DataModule1.Ouvraison.next;
end else begin
DataModule1.Ouvraison.prev;
DataModule1.Ouvraison.Edit;
DataModule1.Ouvraison.fieldByName('PCS NOK').value := Somme;
DataModule1.Ouvraison.Post;
DataModule1.Ouvraison.next;
DataModule1.Ouvraison.Edit;
Somme:=DataModule1.Ouvraison.fieldByName('NbRebut').value;
Vax := DataModule1.Ouvraison.fieldByName('RefBac').value;
DataModule1.Ouvraison.Post;
end;
// deal with last record!
DataModule1.Ouvraison.Last;
DataModule1.Ouvraison.Edit;
DataModule1.Ouvraison.fieldByName('PCS NOK').value := Somme;
DataModule1.Ouvraison.Post;
end;