2017-06-16 6 views
-1

Ich habe ein DBGrid in Delphi 7, die durch eine Tabelle verbunden ist, die mit Paradox erstellt wurde, die RefBac, NumberPCSRebuts enthält.
Der RefBac kann mehrmals wiederholt werden. Ich möchte die Summe der NumberPCSRebuts für jedes RefBac berechnen und es in der Spalte PCSNonOk genau in der Zeile einfügen, die das letzte RefBac enthält, bevor es sich ändert.So berechnen Sie die Anzahl der beschädigten Teile

fand ich diesen Algorithmus, der die richtige Berechnung tut, aber es fügt das Ergebnis in der Zeile unmittelbar nach: [das Ergebnis i

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; 
+0

Sorry, ich übersetzte meinen Beitrag in Englisch danke –

Antwort

0

Sie wollen wünschen könnte versuchen:

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; 
+0

Thaaaaannnnks, es hilft mir sehr Vielen Dank :) –

Verwandte Themen