![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery, TDataSource
UNIQUE KEY auf RechnungsNr setzen
Hi,
ich möchte auf die fortlaufende Rechnungsnummer einen unique Key setzen, damit jede Nummer zuverlässig nur einmal gespeichert wird. Ist meine Vorgehensweise so i.O.? 1.) In der Datenbankoberfläche setze ich auf die RechnungsNr einen Sekundärindex. 2.)
Delphi-Quellcode:
Besten Dank für die Hilfe!
procedure TFormRechnungen.QueryRechnungenBeforePost(DataSet:
TDataSet); //Rechnungsnummer prüfen begin if QueryRNr.Fields[0].AsInteger > 0 then DataSet.FieldByName('RNr').AsInteger := NextKey('RNr', 'Rechnungen'); end; Gruß Lombi |
Re: UNIQUE KEY auf RechnungsNr setzen
Also entweder lässt du den Parameter "DataSet" weg und greift direkt darauf zu, so wie du es ja auch mit QueryRNr machst oder aber du musst noch ein "var" davor setzen:
Delphi-Quellcode:
procedure TFormRechnungen.QueryRechnungenBeforePost(var DataSet:
TDataSet); |
Re: UNIQUE KEY auf RechnungsNr setzen
Hallo Sascha,
die Signatur des event handlers ist vorgegeben und kann nicht verändert werden - ist auch nicht nötig.
Delphi-Quellcode:
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.
procedure TFormRechnungen.QueryRechnungenBeforePost(DataSet: TDataSet);
begin with DataSet do FieldByName('RNR').IsNull then FieldByName('RNR').AsInteger := NextKey('RNr', 'Rechnungen'); end; Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz