Eigendlich kein Problem, aber irgendwie klappt es nicht. Ich habe drei Tabellen (eigendlich sind es mehr)
Tabelle 6 wird jedes mal neu geschrieben, wo die gesamtgehälter
zusammen gerechnet werden sollen
Tabelle 4 beinhaltet die daten, wo die jeweiligen einzelnen gehälter
drin stehen
Tabelle 1 beinhaltet die Daten der mitarbeiter
(Jede Tabelle hat Berechnete-, Daten- und Lookupfelder)
Mein Code lautet wie unten. Ich nutzte die Tabelle 1 als Abgrenzung. Das heißt je datensatz in tabelle 1 soll folgende anweisung ausgeführt werden. je nach personennummer aus tabelle 1 sollen aus den daten der tabelle 4 die datensätze herausgesucht werden, welche die selbe personennummer abgespeichert haben. von den datensatz soll der betrag, also das gehalt zu einer variable solange hinzuaddiert werden, bis die tabelle 4 keine daten mehr beinhaltet, also bis zum ende. als letzter schritt soll dann ein datensatz bestehend aus der personennummer und dem zusammengerechneten gesamtbetrag in tabelle 6 gespeichert werden. dann soll die schleife mit dem nächsten mitarbeiter von vorn beginnen.
PS: Die Filter der Tabellen werden bereits genutzt, an sonnsten würd ich das nicht mit einer if-Schleife machen.
Mein Problem ist nur, das er jetzt unentweg die daten in die tabelle schreibt und gar nicht mehr aufhört. zudem er immer nur die daten von EINEN mitarbeiter hineinschreibt (bei meinen tests hab ich drei mitarbeiter eingeflegt, und er schreibt nur bei den mitleren die daten).
Seht ihr einen fehler? oder habt ihr einen besseren vorschlag, wie ich obriges problem lösen kann?
Delphi-Quellcode:
procedure TFormGehaltsliste.berechnen;
var sum : currency;
nummer : integer;
begin
with hauptform do begin
table6.disablecontrols; //gehaltsliste
table4.disablecontrols; //verteilungsdaten
table1.disablecontrols; //personendaten
table6.first;
table1.first;
while not table6.eof do table6.delete;
while not table1.eof do begin
table4.first;
nummer := table1.fieldbyname('zähler').value;
sum := 0;
table6.append;
table6verteiler.value := nummer;
while not table4.Eof do begin
if (table4verteiler.value = nummer) then begin
sum := sum + table4betrag.ascurrency;
end;
table4.next;
end;
table6gehalt.ascurrency := sum;
table6.post;
table1.next;
end;
table6.enablecontrols;
table4.enablecontrols;
table1.enablecontrols;
end;
end;