Hallo Sascha,
die Signatur des event handlers ist vorgegeben und kann nicht verändert werden - ist auch nicht nötig.
Delphi-Quellcode:
procedure TFormRechnungen.QueryRechnungenBeforePost(DataSet: TDataSet);
begin
with DataSet do
FieldByName('RNR').IsNull then
FieldByName('RNR').AsInteger := NextKey('RNr', 'Rechnungen');
end;
Die Speicherung doppelter Schlüssel verhindert der Sekundärindex, wenn bei "Eindeutig" ein Haken gesetzt wurde. Im Programm muss allerdings bei jedem missglückten Speicherversuch aufgrund doppelten Schlüssels ein neuer Schlüssel besorgt werden. Dazu würde ich in einer Ausnahmebehandlung den Ausnahmegrund entsprechend einschränken, damit nicht in jedem Fehlerfall ein doppelter Schlüssel unterstellt wird und das Programm in einer Endlosschleife läuft.
Grüße vom marabu