Thema: Delphi Unendlichschleife?

Einzelnen Beitrag anzeigen

Benutzerbild von Taladan
Taladan

Registriert seit: 5. Aug 2003
Ort: Osnabrück
505 Beiträge
 
Delphi 2005 Professional
 
#1

Unendlichschleife?

  Alt 12. Aug 2003, 18:30
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;
Marco
  Mit Zitat antworten Zitat