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