Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gültigkeitsprüfungsregelverletzung abfangen

134 views
Skip to first unread message

Michael Alexander

unread,
May 30, 2012, 3:39:50 PM5/30/12
to
Hallo!

Nachdem man sich beim Schreiben des Wortes fast die Finger bricht, hoffe
ich, Ihr k�nnt mir helfen, bei einem Problem, welches mir zwar klar ist, was
es ist, aber nicht warum es ausgel�st wird.

Ich bef�lle �ber ein frm Felder einer tbl, die auf "Eingabe erforderlich" Ja
stehe.
Bei einem Feld, welches in der Aktivierreihenfolge mitten drinnen steht
(d.h. davor und danach sind Felder mit Eingebe erforderlich) mache ich eine
Before_Update Pr�fung, weil der Betrag negativ sein mu�. Ich habe aber weder
im frm noch in der tbl eine G�ltigkeitspr�fung f�r dieses Betrag-Feld.

Dennoch bekomme ich nach meiner Msgbox, die bei der Before_Update Pr�fung
kommt, eine System-Fehlermeldung
"Der Wert verst��t gegen die G�ltigkeitspr�fungsregel des Feldes oder
Datensatzes".

Wenn ich auf OK dr�cke, kann ich ganz normal den Feldes des Betrag-Feldes
korrigieren und die Eingabe f�r die restlichen Felder fortsetzen. Es gibt
auch KEIN After-Update des Betrag-Feldes.

Woher bzw. warum kommt dieses Fehlermeldung zu diesem Zeitpunkt? Bei einem
fehlenden Wert bei DS-Wechsel w�re es mir klar, aber so?
Wie kann ich das abfangen?

Danke
Michael

Acc2010 SP1

Winfried Sonntag

unread,
May 31, 2012, 12:02:17 PM5/31/12
to
Am 30.05.2012 schrieb Michael Alexander:

> Ich befülle über ein frm Felder einer tbl, die auf "Eingabe erforderlich" Ja
> stehe.
> Bei einem Feld, welches in der Aktivierreihenfolge mitten drinnen steht
> (d.h. davor und danach sind Felder mit Eingebe erforderlich) mache ich eine
> Before_Update Prüfung, weil der Betrag negativ sein muß. Ich habe aber weder
> im frm noch in der tbl eine Gültigkeitsprüfung für dieses Betrag-Feld.
>
> Dennoch bekomme ich nach meiner Msgbox, die bei der Before_Update Prüfung
> kommt, eine System-Fehlermeldung
> "Der Wert verstößt gegen die Gültigkeitsprüfungsregel des Feldes oder
> Datensatzes".

Bekommst Du die Meldung bei *jedem* eingegebenen Betrag oder nur bei
Minus Beträgen?



Servus
Winfried
--
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de

Michael Alexander

unread,
Jun 1, 2012, 4:42:07 AM6/1/12
to
Hallo Winfried!
Nur, wenn der User einen positiven Betrag anstelle eines negativen Betrages
eingibt.

Wenn er sofort richtig eingibt, dann gibt es keine Fehlermeldung!

Der Code sieht so aus:

Private Sub Betrag_BeforeUpdate(Cancel As Integer)
If Me.Betrag > 0 Then
MsgBox "Eine Rückzahlung muß immer mit Minus (-) eingegeben werden, Sie
retournieren ja Geld!", vbOKOnly + vbCritical, "Vorzeichenfehler "
Cancel = True
End If
End Sub

Danke
Michael


"Winfried Sonntag" <Winfried...@gmx.de> schrieb im Newsbeitrag
news:1fw4dhz9...@ID-163725.user.individual.de...

Winfried Sonntag

unread,
Jun 1, 2012, 2:20:38 PM6/1/12
to
Am 01.06.2012 schrieb Michael Alexander:

> Nur, wenn der User einen positiven Betrag anstelle eines negativen Betrages
> eingibt.
>
> Wenn er sofort richtig eingibt, dann gibt es keine Fehlermeldung!
>
> Der Code sieht so aus:
>
> Private Sub Betrag_BeforeUpdate(Cancel As Integer)
> If Me.Betrag > 0 Then
> MsgBox "Eine Rückzahlung muß immer mit Minus (-) eingegeben werden, Sie
> retournieren ja Geld!", vbOKOnly + vbCritical, "Vorzeichenfehler "
> Cancel = True
> End If
> End Sub

Weshalb setzt Du nicht gleich per VBA das richtig Vorzeichen?

[code]
if not isnull(me.betrag) and left(me.betrag) <> "-" then
me.betrag = & "-" & me.betrag
end if
[/code]

Michael Alexander

unread,
Jun 2, 2012, 3:11:20 PM6/2/12
to
Ja, ich könnte das auch im After_update machen, aber da ich die Erklärung
bzw. die Lösung für ein Abfangen auch anderswo brauche, wollte ich erstmal
nach dieser Lösung suchen und die Hilfe des Forums beanspruchen.
Dazu benötige ich auch die Erklärung, was eigentlich dieses Verhalten
auslöst, das ist mir nicht klar. Woher kommt diese Systemfehlermeldung?

Michael

"Winfried Sonntag" <Winfried...@gmx.de> schrieb im Newsbeitrag
news:1xfq3atmja0kj$.dlg@ID-163725.user.individual.de...

Winfried Sonntag

unread,
Jun 3, 2012, 4:30:54 PM6/3/12
to
Am 02.06.2012 schrieb Michael Alexander:


> Ja, ich könnte das auch im After_update machen, aber da ich die Erklärung
> bzw. die Lösung für ein Abfangen auch anderswo brauche, wollte ich erstmal
> nach dieser Lösung suchen und die Hilfe des Forums beanspruchen.

Das ist ja ganz in Ordnung, aber trotzdem würde ich den sicheren Weg
gehen. Die Benutzer werden es dir auch danken, man muß ihnen ja nicht
immer irgendwelche Messageboxen um die Ohren hauen. ;)

> Dazu benötige ich auch die Erklärung, was eigentlich dieses Verhalten
> auslöst, das ist mir nicht klar. Woher kommt diese Systemfehlermeldung?

Was passiert wenn Du die Eingabe auf Nein setzt? Welcher Wert steht in
der Gültigkeitsregel?

Michael Alexander

unread,
Jun 5, 2012, 4:28:17 AM6/5/12
to
Hallo Winfried!

Spᅵt, aber doch meine Antwort:

Bei Eingabe auf NEIN, gibt es keine Systemmeldung, es wirkt nur das
Before_Update-Ereignis, wenn der Wert positiv und nicht negativ ist.
Ich hatte nie eine Gᅵltigkeitsregel, weil in der Tabelle ᅵber ein anderes
frm auch positive Zahlen stehen kᅵnnen.

Gruᅵ
Michael

"Winfried Sonntag" <Winfried...@gmx.de> schrieb im Newsbeitrag
news:1cwn6y9y...@ID-163725.user.individual.de...
> Am 02.06.2012 schrieb Michael Alexander:
>
>
>> Ja, ich kᅵnnte das auch im After_update machen, aber da ich die Erklᅵrung
>> bzw. die Lᅵsung fᅵr ein Abfangen auch anderswo brauche, wollte ich
>> erstmal
>> nach dieser Lᅵsung suchen und die Hilfe des Forums beanspruchen.
>
> Das ist ja ganz in Ordnung, aber trotzdem wᅵrde ich den sicheren Weg
> gehen. Die Benutzer werden es dir auch danken, man muᅵ ihnen ja nicht
> immer irgendwelche Messageboxen um die Ohren hauen. ;)
>
>> Dazu benᅵtige ich auch die Erklᅵrung, was eigentlich dieses Verhalten
>> auslᅵst, das ist mir nicht klar. Woher kommt diese Systemfehlermeldung?
>
> Was passiert wenn Du die Eingabe auf Nein setzt? Welcher Wert steht in
> der Gᅵltigkeitsregel?

Georg Beran

unread,
Jun 5, 2012, 3:44:07 PM6/5/12
to
Am Fri, 1 Jun 2012 10:42:07 +0200 schrieb Michael Alexander:
>
> Der Code sieht so aus:
>
> Private Sub Betrag_BeforeUpdate(Cancel As Integer)
> If Me.Betrag > 0 Then
> MsgBox "Eine Rückzahlung muß immer mit Minus (-) eingegeben werden, Sie
> retournieren ja Geld!", vbOKOnly + vbCritical, "Vorzeichenfehler "
> Cancel = True
> End If
> End Sub

Ich habe das unter Acc 2003 nachgebaut. Hier kommt nur die Msgbox; die
Systemmeldung nicht, auch dann nicht, wenn ich im Tabellenfeld eine
Gültigkeitsregel einbaue. Es kommt aber eine Systemmeldung, sobald ich
im Formularfeld eine Gültigkeitsregel habe. Bist du sicher, dass bei
dir keine Gültigkeitsregel eingebaut ist?

Dem Text deiner Systemmeldung "Der Wert verstößt gegen die
Gültigkeitsprüfungsregel des Feldes oder Datensatzes" entnehme ich,
dass man im Acc 2010 auch Gültigkeitsregeln für den ganzen Datensatz
definieren kann, nicht bloß für einzelne Felder. Das geht, vermute
ich, auf Tabellen- und auf Formularebene. Ist es vielleicht das?

Georg

Georg Beran

unread,
Jun 5, 2012, 3:46:59 PM6/5/12
to
Am Fri, 1 Jun 2012 20:20:38 +0200 schrieb Winfried Sonntag:

> Weshalb setzt Du nicht gleich per VBA das richtig Vorzeichen?
>
> [code]
> if not isnull(me.betrag) and left(me.betrag) <> "-" then
> me.betrag = & "-" & me.betrag
> end if
> [/code]
>

Ganz meine Meinung. Aber ein Test einer Zahl auf < 0 mittels
*Stringfunktionen* ist wohl suboptimal.

Georg

Michael Alexander

unread,
Jun 6, 2012, 6:32:45 AM6/6/12
to
Hallo Georg!

Ganz sicher! Ich habe weder im frm noch in der tbl Gültigkeitsregeln
drinnen.
Ich kenne auch nur Gültigkeitsregeln für Felder, nicht für DS.

Vielleicht aber hängt es irgendwie zusammen, dass die DB aus A2k stammt,
dann in A07 konvertiert wurde und nunmehr A2010.

Jedenfalls kann ich die Systemmeldung nur vermeiden, wenn ich das
Before_Update-Ereignis lösche und das ganze nunmehr im After_Update-Ereignis
entsprechend korrigiere.

Gruß
Michael

"Georg Beran" <georg...@netway.at> schrieb im Newsbeitrag
news:1pcoiuvjus8e2.1...@40tude.net...

Winfried Sonntag

unread,
Jun 6, 2012, 2:21:45 PM6/6/12
to
Am 06.06.2012 schrieb Michael Alexander:

> Vielleicht aber hängt es irgendwie zusammen, dass die DB aus A2k stammt,
> dann in A07 konvertiert wurde und nunmehr A2010.

Kannst Du den betroffenen Bereich in eine neue leere DB kopieren und
dort das ganz nachvollziehen? Das Formular mit ein oder zwei
Textfeldern erstellen, nicht kopieren oder importieren.
0 new messages