Eingabepruefung die dritte

02/10/2008 - 16:29 von Volker Neurath | Report spam
Hallo zusammen,

nach einigen Tassen Grüntee geht es mir jetzt wieder besser als heute
morgen ;)

hab inszwischen einige Tests durchgeführt.

Die Ausgangssituation des Tests:

Eine Tabelle mit zwei Feldern, eines vom Typ Long, das andere autowert.

Ein Formular mit einem Textfeld, Formular gebunden an die Tabelle,
Textfeld gebunden an das LONG Feld.

Ziel: verlassen des Textfeldes ohne Eingabe oder nicht-numerische
Eingaben sollen eine *jeweils passende* Fehlermeldung auslösen.

Falsche, d.h. nicht zum Feldtyp passende eingaben lösen den
Laufzeitfehler 2113 aus, den ich im "Form_Error" Event abfangen kann.

Soweit ok, funktioniert.

Aaaaber:
versuche ich, in meinem code eine tiefergehende Prüfung des Fehlers
vorzunehmen, dann scheitert diese; folgendes Codebeispiel:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 2113 Then
If Not (IsNumeric(Me!Text0)) Then
MsgBox "Nur numerische Werte erlaubt"
Response = acDataErrContinue
Else
MsgBox "eingabe in Feld Text0 fehlerhaft"
Response = acDataErrContinue
End If
End If
End Sub


Egal, welche fehlerhaften Werte hier eingegeben werden, es wird *immer*
die Meldung aus dem ELSE Zweig des inneren IF angezeigt.

Mein Ergebnis ist: es ist nicht möglich, zwischen "IsNumeric()" oder
"IsNull()" zu differenzieren, es kann nur eine allgemein gehaltene
Meldung erfolgen.

Frage: liege ich mit dieser Einschàtzung richtig oder geht das doch?
Wenn es geht: wie?

Volker

BTW: und sorry, für meinen Gefühlsausbruch heute morgen manchmal
gehen die Pferde mit mir durch.




Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.versuche
 

Lesen sie die antworten

#1 Günter Gerold
02/10/2008 - 17:39 | Warnen spam
Hallo Volker,

ich bin zwar hier der Azubi, aber der Fehler wird doch schon vor dem
schreiben in die Tabelle ausgelöst. Daher kann doch in Me!Text0 ja
garnix drin stehen. Ausserdem schimpfen die Meister hier, weil es ja
wenn überhaupt so Me!Text0.value geschrieben wird. Was ja hier aber
falsch ist. Me!Text0.text wàre hier wohl richtig.

If Not (IsNumeric(Me!Text0)) Then
MsgBox "Nur numerische Werte erlaubt"
Response = acDataErrContinue
Else
MsgBox "eingabe in Feld Text0 fehlerhaft"
Response = acDataErrContinue
End If
End If
End Sub


Egal, welche fehlerhaften Werte hier eingegeben werden, es wird *immer*
die Meldung aus dem ELSE Zweig des inneren IF angezeigt.



Günter

Ähnliche fragen