Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feld Validation manuell durchführen (https://www.delphipraxis.net/81198-feld-validation-manuell-durchfuehren.html)

hirnstroem 22. Nov 2006 12:21

Datenbank: Access • Zugriff über: ADO

Feld Validation manuell durchführen
 
'loha Folks,

in einer Datenbank habe ich ein indiziertes Feld welches keine Duplikate akzeptiert. Wenn ich nun einen Datensatz speichere, welcher trotzdem den selben Wert enthält, tritt eine Exception auf und eine Fehlermeldung erscheint.

Genau dieses Szenario möchte ich nun manuell nachstellen. Das heisst ich habe ein Edit Feld und einen Button. Beim Klick auf den Button soll diese Validation durchlaufen und dann möchte ich gegebenenfalls selber eine Fehlermeldung ausgeben.

Wie wäre so etwas zu realisieren?

Mehr als die TField.Validate Methode konnte ich bisher nicht ausfindig machen. Und wie diese handzuhaben ist, ist mir ein Rätsel.

Delphi-Quellcode:
  try
    UserSession.ADODataSet_DeviceAddress.Validate({k.A.});
  except
    ErrorMessage := ErrorMessage +
      '- Adresse wird bereits verwendet'
      + #13#10;
      edtAddress.SetFocus;
      Error := True;
  end;
Grüsse
hirnstroem

marabu 22. Nov 2006 13:51

Re: Feld Validation manuell durchführen
 
Hallo,

auch wenn du eine Prüfung im Ereignis OnValidate() vorschaltest, so schützt dich das nicht zuverlässig vor der Exception im Falle einer Constraint Verletzung.

Grüße vom marabu

hirnstroem 22. Nov 2006 14:37

Re: Feld Validation manuell durchführen
 
Ich habe mich vielleicht etwas unverständlich ausgedrückt.

An und für sich möchte ich folgendes:

Neben dem Feld zur Eingabe einer Adresse, welche nur einmal in der Datenbank vorkommen darf, soll ein Button platziert werden, mit welchem sich die "Verfügbarkeit" der momentan in diesem Feld eingetragenen Adresse überprüfen lässt. Wenn andere Einschränkungen verletzt werden ist mir das an und für sich egal in diesem Moment.

Leider konnte ich bisher nicht herausfinden wie mach das am besten macht. Vorstellbar wäre für mich, beim Klick auf diesen Validiationsknopf eine Abfrage zu starten, um in der Datenbank nachzuschauen ob etwas gleiches vorkommt. Mit dem Ergebnis der Abfrage könnte dann weitergearbeitet werden. Doch eigentlich wäre dies ja überflüssig, da man die Felder ja indiziert und mögliche Duplikate abgefangen hat (auf Datenbankebene).

Klaus01 22. Nov 2006 14:41

Re: Feld Validation manuell durchführen
 
Kannst Du vor dem Speichern nicht eine Abfrage machen ob schon ein
Eintrag mit diesem Wert vorhanden ist?
Oder ist das zu inperformant?

Grüße
Klaus

hirnstroem 22. Nov 2006 14:52

Re: Feld Validation manuell durchführen
 
Ja dies ginge eigentlich ohne Probleme. Ich dachte lediglich, dass es vielleicht eine andere Lösung gibt, welche keine Abfrage erfordert, denn die Datenbank weiss ja bereits, dass dieses Feld unique ist. Folglich wäre es mir lieber, auf die Validation zurückgreifen zu können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz