AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Feld Validation manuell durchführen
Thema durchsuchen
Ansicht
Themen-Optionen

Feld Validation manuell durchführen

Ein Thema von hirnstroem · begonnen am 22. Nov 2006 · letzter Beitrag vom 22. Nov 2006
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Feld Validation manuell durchführen

  Alt 22. Nov 2006, 12:21
Datenbank: Access • Zugriff über: ADO
'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
inde deus abest
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Feld Validation manuell durchführen

  Alt 22. Nov 2006, 13:51
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
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Feld Validation manuell durchführen

  Alt 22. Nov 2006, 14:37
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).
inde deus abest
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Feld Validation manuell durchführen

  Alt 22. Nov 2006, 14:41
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
Klaus
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Feld Validation manuell durchführen

  Alt 22. Nov 2006, 14:52
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.
inde deus abest
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 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