Mal ne Frage
Ich arbeite allein in einer Datenbank.
Ab und zu bekomme ich scheinbar spontan bei einem bestimmten Feld die Meldung, dass der DS von jemandem anderen zwischenzeitlich geändert wurde und ob ich das überschreiben möchte. Wenn ich ja wähle:
Erhalte ich in einem Formular scheinbar die Nachricht, dass der DS jetzt nicht geändert werden kann, weil andere Datensätze sich noch darauf beziehen. Danach kommen mehrfach Fehlermeldungen und schließlich bekomme ich die Option, das Formular zu schließen.
Wenn ich das schließe, dann das Formular erneu öffne, funktioniert alles ganz wieder normal, auch in diesem Datensatz.
Auf welchen Fehler könnte so ein Phänomen hindeuten?
Carl
Hallo,
das kann vorkommen, wenn ein gebundenes Formular verwendet und trotzdem versucht außerhalb des Formulars Daten zu ändern.
Oder bei einem gebundenen Formular wenn man versucht über ein Recordset zu speichern, es gibt viele Fehlerquellen.
Meine erste Idee wäre, alle diese Fehlermeldungen zu unterdrücken und einfach so zu tun, als hätte es niemand bemerkt.
Gibt es da einen Code dazu, der sowas sehr zuverlässig unterdrückt? Eventuell schließt und gleich wieder öffnet?
Carl
Ich habe jetzt heraus bekommen, dass ich die Fehler nicht bekomme, wenn ich die Option wähle: "Eigene Änderungen verwerfen" und dann nochmal eingebe. Das würde ich gern automatisieren und ne Meldung ausgeben: "Änderungen mussten verworfen werden, bitte erneut eingeben."
Kann man sowas machen in VBA?
Bei Fehler: Änderung verwerfen und msgbox ausgeben?
Als dem gesamten Formular zugrundeliegender Befehl?
ZitatGibt es da einen Code dazu, der sowas sehr zuverlässig unterdrückt?
On Error Application.Quit
Hallo,
Du machst in der Programmierung bzw. im Steuerungsablauf einen Fehler. Es ist ganz sicher der falsche Weg die Änderungen zu verwerfen und die Daten noch mal einzugeben.
Du musst die Ursache bekämpfen, nicht die Symptome.
Da stimme ich Dir zu.
Ich kann es nur nicht. Und ich weiß auch nicht, wo der Fehler liegt. Ich kriegs nicht raus.
Hallo,
wie speicherst Du Datensätze ?
Verwendest Du gebundene Formulare ?
Nein, die Formulare sind nicht untereinander gebunden. Nur an ihre Quelle eben, Abfragen.
Ich hatte ein UFO auf der selben Abfrage basierend gehabt wir das HF, das habe ich jetzt mal geändert. Mal sehen obs besser wird.
Ich wäre Dir aber wirklich Dankbar über einen Schnipsel, der Fehlermeldungen aller Art unterdrückt und statt dessen das Formular kurz kommentarlos schließt und wieder öffnet.
Hallo,
ZitatIch wäre Dir aber wirklich Dankbar über einen Schnipsel, der Fehlermeldungen aller Art unterdrückt
habe ich leider keinen.
ZitatIch wäre Dir aber wirklich Dankbar über einen Schnipsel, ....
Mit diesem kleinen Sub sollte das gehen.
Private Sub Form_AfterUpdate()
On Error GoTo suberr
Exit Sub
suberr:
If Err.Number = ??? Then
Me.Undo
Else
MsgBox Err.Number & " " & Err.Description
End If
Err.Clear
End Sub
@Frithjiof
Bitte keine vollständigen Beiträge zitieren.
Und verwende für Codedarstellungen die Codetags nicht die Tags für Hoch/Tief gestellt.
Die Codetags verhindern Textverfälschungen (wie z.B. Smileys).
Ich habe es oben geändert.
@Frithjiof,
Dein Code-Fragment ist leider völlig sinnfrei.
@Lachtaube
Richtig, aber so sollte es gehen
Ein Button <btnOK> ins Formular einfügen und:
Private Sub btnOK_Click()
On Error GoTo suberr
DoCmd.RunCommand acCmdSaveRecord
Exit Sub
suberr:
If Err.Number = ??? Then
Me.Undo
Else
MsgBox Err.Number & " " & Err.Description
End If
Err.Clear
End Sub
oder so versuchen
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = ???
Response = acDataErrContinue
Me.Undo
endif
End Sub
Alternativ könnte auch noch sowas versucht werden
Private Sub Form_Dirty(Cancel As Integer)
on error goto suberr
DoCmd.RunCommand acCmdSaveRecord
exit sub
suberr:
Cancel = True
End Sub
Frithjiof, Du stocherst im Nebel. Ich würde ja einmal abwarten, und Carl die genaue Ausgangslage nebst Code (der vermutlich für die Ungereimtheiten sorgt) berichten lassen.
PS: Bei mehr als einem Pflichtfeld wäre auch der zuletzt gezeigte Code nicht von Erfolg gekrönt.
@Lachtaube
Ich wollte zeigen, dass es doch einige Möglichkeiten gibt solche Fehlermeldungen abzufangen. Die Fehlerursache zu finden ist selbstverständlich immer die beste Lösung.
Weiter mit im Nebelstochern:
Möglicherweise ist die die Datenbank die Carl nutzt auch ODBC-Verknüpft.
Zitat von: MzKlMu am November 01, 2017, 23:01:10habe ich leider keinen.
Aber Du bist doch genial. Du könntest einen erfinden, oder? Carl
Zitateinen Schnipsel, der Fehlermeldungen aller Art unterdrückt
Das ist ein Totschlagargument. Auch wenn man gegen eine Wand gefahren ist, soll ein Neustart erfolgen, als wäre nichts gewesen.
Wenn man das Gleiche tut und wiederholt, werden sich auch die Probleme und Fehler wiederholen. Wenn man das automatisiert, kommt man dann ganz schnell in eine Endlosschleife. Es ist also nicht genial, beliebige Gedanken umzusetzen.
Daher (bisher unkommentiert):
On Error Application.Quit
In Worten: Es wird besser sein, nichts zu tun.
Ich habe jetzt erstmal nur noch ein Feld mit "Eingabe erforderlich" eingerichtet, mal sehen ob der Fehler noch auftritt. Kann sein, dass es das schon war.