PDA

Vollständige Version anzeigen : Probleme mit Datensatzwechsel nach Speichern


sellspeed
21.02.2008, 10:58
Hallo mal wieder,

also ich versuche Fehler beim automatischen Speichern zu vermeiden wenn mann das Formular verlaesst.

Hiermit:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Save Changes?", vbYesNo)
Case vbYes
'save
Case vbNo
'don't save
Me.Undo
Cancel = True
End Select
End Sub

Wenn man den Datensatz ueber den Navigationsbuton verlaesst und nicht speichern moechte sagt Access: You can not go to the specific record. Weiss einer Warum? Wenn man speichert ist alle schoen.

HIer die Prozedur vom Assistenten beim Wechsel:

On Error GoTo Err_COM_CUS_NEXT_Click


DoCmd.GoToRecord , , acNext

Exit_COM_CUS_NEXT_Click:
Exit Sub

Err_COM_CUS_NEXT_Click:
MsgBox Err.Description
Resume Exit_COM_CUS_NEXT_Click

End Sub

Smaug
21.02.2008, 11:22
versuch mal stattdessen so:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If not Me.Dirty then Exit Sub 'evtl. prüfen ob ungesicherte Daten vorliegen
If MsgBox("Saves Changes", vbYesNo) = vbNo Then
Cancel = True
End If
End Sub

sellspeed
21.02.2008, 12:09
Nein gleiches Problem. Sobald ich nicht speichern moechte sagt er you cant go to the specific record. Was ansich nicht schlimm ist nur nervt....

Noch einer ne Idee?

Smaug
21.02.2008, 12:16
und Du bist nicht zufällig am Ende der Datensatzgruppe angelangt ??

sellspeed
21.02.2008, 13:56
Dachte ich auch erst..... aber leider nein.

Anne Berg
21.02.2008, 14:57
<s>Lass doch das UnDo mal weg, dafür ist doch die Cancel-Option zuständig.</s>

Sorry... Verwende das AfterUpdate-Ereignis mit UnDo, dann klappt's.

sellspeed
22.02.2008, 13:16
Vielen Dank! Wenn du Zeit und Lust hast mir zu erklaeren wieso waere ich dankbar, dann lerne ich wieder was. Ist aber nicht so wichtig .

Anne Berg
22.02.2008, 13:37
Nein, leider habe ich dazu keine fundierte Erklärung.

Vermutlich erwartet Access nach dem Abbruch des Speicherns, dass noch irgendeine Aktion mit dem aktuellen Datensatz folgen müsste... :rolleyes:

Anne Berg
22.02.2008, 13:45
Nachtrag: Was auch noch ginge wär folgendes:Private Sub btnNextRec_Click()
On Error GoTo Err_Befehl16_Click
If Me.Dirty Then
If MsgBox("Speichern?", vbYesNo) = vbYes Then
DoCmd.RunCommand acCmdSaveRecord
Else
Me.Undo
End If
End If
DoCmd.GoToRecord , , acNext
Exit_btnNextRec_Click:
Exit Sub
Err_btnNextRec_Click:
MsgBox Err.Description
Resume Exit_btnNextRec_Click
End Sub

sellspeed
22.02.2008, 17:43
Lieben Dank fuer den Nachtrag, da ich ein Registersteuerelement benutze wuerde die Abfrage nicht kommen wenn ich den Reiter wechsel oder? und das waere fatal.

Anne Berg
22.02.2008, 20:36
Wenn du Unterformulare auf die Registerkarten legst, wird auch das Form_AfterUpdate-Ereignis ausgelöst beim Wechsel, also beim Verlassen des Unterformulars. Wenn jedoch die Steuerelemente auf den Registerkarten alle zur Datenherkunft des (Haupt-) Formulars gehören, wird das (natürlich) nicht eintreten.