Hallo zusammen,
habe folgendes Problem:
In einem Ufo werden Daten angezeigt und über die Eigenschaft "Beim Klicken" ein weiters Formular auf Basis des aktuell ausgewählent Datensatzes ( über Datensatzmarkierer ) angezeigt
Private Sub Form_Click()
usw......
Nun kommt es vor, dass keine Daten angezeigt werden. Wenn der User nun in das "leere" Ufo klickt folgt:
Laufzeitfehler 2113 "Sie haben einen Wert eingegeben, der......"
Wie kann ich diese Fehlermeldung verhindern, da der User über "Debuggen" in den Code kommt?
Danke für die Hilfe
´Hallo SGO5
Schau mal in die Access Hilfe NZ() Funktion
hallo sg05,
ZitatWie kann ich diese Fehlermeldung verhindern, da der User über "Debuggen" in den Code kommt?
Wie wär's denn mit einer Fehlerbehandlung?
Prinzip:
Private Sub Form_Click()
On Error Goto Fehler
.
ganz viel von Deinem tollen Code
.
Ende:
Exit Sub
Fehler:
If Err.Number = 2113 Then
Mach was
Resume (je nach dem, was vorher passiert)
End if
End Subhth
gruss ekkehard
Moin,
statt einer Fehlerbehandlung kannst Du auch den "falschen" Formularaufruf vermeiden, indem Du den Formularaufruf nur zulässt, wenn es kein neuer Datensatz ist:
If Not Me.NewRecord Then DoCmd.OpenForm "Formular2"
Siehe Beispiel im Anhang.
Harald
[Anhang gelöscht durch Administrator]
Hallo Harald,
Zitatstatt einer Fehlerbehandlung
Also "statt" ist IMO kein guter Ansatz; ich plädiere für "zusätzlich".
Natürlich ist es gut Fehler schon im Vorfeld zu vermeiden, aber
auf eine Fehlerbehandlung sollte man auf keinen Fall verzichten.
1. kann ja auch noch ein anderer Fehler auftreten
2. ist die in einer Runtime essentiell, da Access die Anwendung
bei fehlender Fehlerbehandlung gnadenlos abschiesst.
gruss ekkehard
Hi ekkehard
Zitat von: Beaker s.a. am März 11, 2012, 14:19:04
"zusätzlich"
... akzeptiert, ;)
besonders den Zusatz, dass Fehler vermieden werden :D
Harald
Die (auf jeden Fall notwendige) Fehlerbehandlung sollte sich auf unerwartete Fehler beschränken.
Dass in einem Formular je nach Filterung evtl. keine Datensätze vorhanden sein können, dürfte spätestens nach dem ersten Auftreten nicht mehr unerwartet vorkommen. Zudem ist das ein mit wenig Aufwand prüfbarer Zustand:
Private Sub Form_Click()
If Not Me.Recordset.EOF Then DoCmd.OpenForm ...
End Sub
MfGA
ebs