Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#27

Re: PosNummern in Rechnungsdaten

  Alt 11. Sep 2006, 20:47
Hallo Lombi,

du brauchst beide Generatoren - NextKey() ermittelt die nächste laufende Nummer und NextSubkey() macht das für einen sogenannten compound key (zusammengesetzter Schlüssel) - in deinem Fall Rechnungsdaten(RechNr, PosNr). Hier nochmal ausführlich, was dir Markus bereits am Anfang geschrieben hatte:

Delphi-Quellcode:
function NextKey (fldName, tblName: String): Integer;
begin
  with TQuery.Create do
  begin
    DatabaseName := QueryRechnungen.DatabaseName;
    SQL.Text := Format('SELECT MAX(%s) FROM %s', [fldName, tblName]);
    Open;
    Result := Succ(Fields[0].AsInteger);
    Close;
  end;
end;

function NextSubKey (
  keyValue: Integer; // RechNr Wert
  fldName, // RechNr Feldname
  subName, // PosNr FeldName
  tblName: String // Tabellenname
): Integer;
begin
  with TQuery.Create do
  begin
    DatabaseName := QueryRechnungen.DatabaseName;
    SQL.Text := Format('SELECT MAX(%s) FROM %s WHERE %s = %d', [subName, tblName, fldName, keyValue]);
    Open;
    Result := Succ(Fields[0].AsInteger);
    Close;
  end;
end;
Der Ansatz von Uwe führt zwar auch zum richtigen Ergebnis, aber die Vermischung von Datenmodell und GUI ist dabei nicht so schön.

Gute Nacht

marabu
  Mit Zitat antworten Zitat