如何计算受损件的数量

时间:2017-06-16 09:18:30

标签: delphi delphi-7

我在Delphi 7中有一个DBGrid,它由一个用Paradox创建的表链接,该表包含RefBac,NumberPCSRebuts。 RefBac可以重复几次。我想计算每个RefBac的NumberPCSRebuts的总和,并将它在列PCSNonOk中完全插入包含最后一个RefBac的行中,然后再更改。

我发现这个算法可以进行正确的计算,但它会将结果插入到以下行中:[结果希望我想要

enter image description here

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;

1 个答案:

答案 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;