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

Wie fange ich eine Primärschlüsselverletztung mit Fehlermeldung ab?

2 views
Skip to first unread message

Michael Alexander

unread,
May 21, 2012, 3:02:42 PM5/21/12
to
Hallo!

Ich habe einen zusammengesetzten PK in einer tbl, die die Recordsource eines
Endlosfrm bildet.
Dort liegt nur ein Kombifeld drauf, der zweite "Teil" des zusammengesetzten
PK wird automatisch hinzugefügt.

Nunmehr kann es passieren, dass der User aus dem Kombi einen Wert auswählt,
der einige Zeilen weiter oben bereits ausgewählt wurde.
Beim Versuch, das Kombi zu verlassen, bekommt er die Fehlermeldung, dass es
den PK bereits gibt. Bzw. nicht beim Verlassen bekommt er die Meldung,
sondern wenn er weitere Zeilen eingeben möchte oder Aktualisieren drückt.

Wie fange ich das am Besten mit einer eigenen Msgbox-Meldung ab und vor
allem bei welchem Ereignis?

Danke
Michael

Acc2010

Karl Donaubauer

unread,
May 21, 2012, 3:44:04 PM5/21/12
to
s. Variante 1 von

Doppelte Eingabe vermeiden
http://www.donkarl.com?FAQ4.25

--
Servus
Karl
*********
Access-FAQ: http://www.donkarl.com


Wolfgang Badura

unread,
May 21, 2012, 3:42:53 PM5/21/12
to
Hallo Michael!
"Michael Alexander" <MirKe...@DontSpamMe.invalid> schrieb im Newsbeitrag
news:jpe3gk$fjc$1...@news.albasani.net...

> Wie fange ich das am Besten mit einer eigenen Msgbox-Meldung ab und vor
> allem bei welchem Ereignis?

ich würde das Ereignis BeforeUpdate des Steuierelements vorschlagen.
Du gibst eine Fehlermeldung aus und kannst anschließend
die Aktion mit Cancel = True abbrechen.

Wolfgang


Michael Alexander

unread,
May 21, 2012, 4:08:54 PM5/21/12
to
Danke für die schnellen Antworten, die Variante 1 von FAQ 4.25 hatte ich
schon gefunden, nur reagiert diese nur, wenn ich den Fokus auf einen weitere
Zeile setze oder ein anderes Steuerelement. In meinem Fall sollte die
Fehlermeldung kommen, wenn der User auf "Datensatz speichern" klickt. Aber
das konnte ich so nicht vereinen:
*********
Private Sub Speichern_Click()
On Error GoTo Err_Handler_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_Handler_Click:
Exit Sub

Err_Handler_Click:
Debug.Print DataErr
If DataErr = 3022 Then
Response = acDataErrContinue
MsgBox "Sie versuchen ein Formular hinzuzufügen, welches bereits definiert
ist! Entfernen Sie Ihre Auswahl mit 'Esc' oder wählen Sie ein anderes
Formular!", vbOKOnly + vbCritical, "Mehrfache Auswahl!"
End If
Resume Exit_Handler_Click

End Sub
*******

Das tut sich gar nichts, weil vermutlich der Error 3022 noch nicht bekannt
ist.

Ich habe es nunmehr anders gelöst:
Den Speichern-Button brauche ich nicht, denn wenn die Auswahl keine
PK-Verletzung darstellt, ist ohnehin gespeichert. Wenn nicht, dann nehme ich
die Variante 1 aus FAQ 4.25 in Form_error.

Oder kennt jemand eine Lösung für den Ansatz mit dem Speicher-Button?

Danke
Michael



"Karl Donaubauer" <NoS...@donkarl.com> schrieb im Newsbeitrag
news:a1vk7v...@mid.individual.net...
0 new messages