Hallo Lombi,
da du mich noch einmal auf diesen Thread angesprochen hast, möchte ich dir hier noch einmal helfen. Ich schließe mich den Ausführungen von Tharon an. Du solltest die Prüfung in der BeforePost Methode des TTable Objektes durchführen. Ich glaube es geht dir darum, wie man denn jetzt prüft, ob ein Datensatz mit der eingegebenen AdressenIDNr existiert. Du benötigst für die Überprüfung ein weiteres
DB Objekt. Es wäre zwar grundsätzlich möglich zu versuchen, den Datensatz abzuspeichern und auf einen Fehler zu reagieren. Wie gesagt, ich würde die Prüfung aber Vor dem Post also BeforePost durchzuführen. Dazu nimmst du entweder ein zweites TTable Objekt, das auf dieselbe Tabelle zeigt. Dort suchst du den Datensatz mit der AdressenIdNr, die im dem DBEdit Feld steht und zwar entweder über FindKey (sofern die AdressIdNr ein Schlüsselfeld ist) oder aber über Locate. Die beiden Funktionen werden recht gut in der
OH beschrieben. Alternativ nutzt du ein TQuery Objekt und speicherst dort die Abfrage (die Tabelle heiße Adressen):
SELECT * FROM Adressen WHERE AdressenIdNr = :adr
Durch den Doppelpunkt vor adr wird der Bezeichner adr zu einem Parameter, den du mit ParamByName ansprechen kannst (die
Query heiße qryExistsAdr):
Delphi-Quellcode:
// ich nehme einmal an das DBEdit Feld mit der AdressID heißt dbEditAdr
qryExistsAdr.Close;
qryExistsAdr.ParamByName('adr').AsString := dbEditAdr.Text;
qryExistsAdr.Open;
if qryExistsAdr.RecordCount > 0 then
begin
// Datensatz existiert schon
// Hier vielleicht eine Fehlermeldung ausgeben
ABORT; // Speicherversuch abbrechen
end;