AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Eingabe in Datenbankfeld wird vor BeforePost validiert
Thema durchsuchen
Ansicht
Themen-Optionen

Eingabe in Datenbankfeld wird vor BeforePost validiert

Ein Thema von hirnstroem · begonnen am 23. Nov 2007 · letzter Beitrag vom 23. Nov 2007
Antwort Antwort
hirnstroem

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

Eingabe in Datenbankfeld wird vor BeforePost validiert

  Alt 23. Nov 2007, 10:53
Datenbank: Microsoft Access • Version: kA • Zugriff über: ADO
'loha Folks,

mir macht die Eingabe von Daten in ein mit einer Access Datenbank "verknüpften" Edit-Felder Probleme.

Das Feld ist in der Datenbank als Integer definiert. Wenn nun aber jemand auf die Idee kommen sollte, trotzdem einen String hineinzuschreiben, so möchte ich dies abfangen und den Benutzer darauf hinweisen, dass das so nicht passt. Dies versuche ich durch das definieren entsprechender Behandlungsroutinen im BeforePost Ereignis abzuhandeln, nur kommt das ganze beim speichern gar nicht so weit. Bevor das BeforePost Ereignis feuert, löst das Formular eine Exception aus und da es sich um ein IntraWeb Formular handelt, kann ich nicht nachschauen (jedenfalls ist mir nichts anderes bekannt), was da im Hintergrund genau abläuft. Besagte Situation tritt nur dann ein, wenn anstatt einer Zahl ein String in das entsprechende Edit-Feld geschrieben wird. Deffiniere ich beispielsweise, dass die Zahl nicht grösser als 1 sein darf und gebe anschliessend 2 ein, so funktiniert das ganze wider.

Die folgende Exception wird jeweils ausgelöst:

Erste Gelegenheit für Exception bei $77E7E592. Exception-Klasse EDatabaseError mit Meldung "asdf" ist kein gültiger Integerwert für das Feld 'Address'. Prozess FACTS_Standalone.exe (2280)

Eine Lösung dafür konnte ich bisher nicht finden und weshalb die Exception auftritt ist für micht auch nicht nachvollziehbar, etwas Hilfe, täte deshalb gut.

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Eingabe in Datenbankfeld wird vor BeforePost validiert

  Alt 23. Nov 2007, 11:04
Ich würde in diesem Fall statt dem TDBEdit ein TMaskEdit nehmen.
Markus Kinzler
  Mit Zitat antworten Zitat
hirnstroem

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

Re: Eingabe in Datenbankfeld wird vor BeforePost validiert

  Alt 23. Nov 2007, 11:18
Ich habe wohl verschwiegen, ein TIWDBEdit von IntraWeb verwendet zu haben (für Webapplikationen).

Und verwirren tut mich zusätzlich folgendes. Wenn ein Datensatz geöffnet wird, bei welchem das angesprochene Feld mit einem korrekten Wert versehen ist, in dieses Feld ein Paar Buchstaben geschrieben werden und anschliessend anstatt gespeichert abgebrochen wird, verhält es sich genau so wie beim speichern des Datensatzes. Beim Abbrechen soll doch aber gefälligst gar nichts mehr überpfüft werden...
inde deus abest
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Eingabe in Datenbankfeld wird vor BeforePost validiert

  Alt 23. Nov 2007, 11:28
Du solltest vielleicht die Validation im OnSetText-Ereignis des Eingabefeldes vornehmen.

Ich vermute mal (meine Glaskugel ist geölt und runderneuert), das das Datenfeld vom Type TIntegerField ist und daher schon bei der Zuweisung (die das TIWDBEdit selbst vornimmt) dieser Fehler auftritt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
hirnstroem

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

Re: Eingabe in Datenbankfeld wird vor BeforePost validiert

  Alt 23. Nov 2007, 11:54
Deine Vermutung trifft zu -.-

Delphi-Quellcode:
procedure TIWUserSession.ADODataSet_DeviceAddressSetText(Sender: TField;
  const Text: string);
var
  Value: Integer;
begin
  if not TryStrToInt(Text, Value) then CurrentDataSet.FieldByName('Address').Value := CurrentDataSet.FieldByName('Address').Value;
end;
^^ so tut das seinen Dienst.

Vielen Dank für die Hilfe!
inde deus abest
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Eingabe in Datenbankfeld wird vor BeforePost validiert

  Alt 23. Nov 2007, 12:30
Na, vielleicht noch eine Fehlermeldung... Und vermutlich tut es ein einfach exit (also einfach nix zuweisen) auch.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
hirnstroem

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

Re: Eingabe in Datenbankfeld wird vor BeforePost validiert

  Alt 23. Nov 2007, 12:56
Die Fehlermeldung wird nach wie vor im BeforePost Ereignis generiert, ist also nicht vergessen gegangen und Exit ist wirklich sinnvoller...wenn man das so gesagt bekommt. Aber heute, Freitag, und nach einer relativ kurzen Nacht, kommen die Gehirnwindungen irgendwie nur schwerlich in Gange...
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 06:35 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