Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Schließen ohne Speichern

Begonnen von kikimat, Mai 27, 2013, 10:32:15

⏪ vorheriges - nächstes ⏩

kikimat

Hallo,

ich habe ein Problem mit einem Eingabeformular. Ich habe ein Hauptformular angelegt mit einem Unterformular und in dem UF sollen Eingaben gemacht werden. Nun möchte ich verhindern, dass die EIngaben automatisch gespeichert werden. Im UF habe ich daher einen Abbrechen Button angelegt mit folgendem Code:
Private Sub Abbrechen_Click()
       If Me.Dirty Then
         DoCmd.DoMenuItem acEditMenu, acEdit, acUndo
     End If
     DoCmd.Close
End sub
Dann habe ich noch einen Speichern Button mit diesem Code:
Private Sub Speichern_Click()
DoCmd.Close acForm, "frmRenov"
End Sub
Nun möchte ich erreichen, dass beim Schließen des Formulars über das "Kreuz" nicht automatisch gespeichert wird.
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty Then
    If vbNo = MsgBox("Möchten Sie Speichern?", vbQuestion + vbYesNo, "Frage") Then
      Cancel = True
      Me.Undo
   End If
End If
End Sub
Es funktioniert auch so weit, nur kommt von Access immer die Meldung "Datensatz kann nicht gespeichert werden", was kann ich dagegen machen?


kikimat

Leider funktioniert das nicht. Wenn ich den Code in das UF eingebe, kommt die Meldung von Access, das Datensatz nicht gespeichert werden kann und wenn ich den COde in das Hauptformular eingebe, wird der Datensatz trotzdem gespeichert

database

Hallo,


DoCmd.SetWarnings False
If Me.Dirty Then
   If vbNo = MsgBox("Möchten Sie Speichern?", vbQuestion + vbYesNo, "Frage") Then
     Cancel = True
     Me.Undo
  End If
End If
DoCmd.SetWarnings True


Mit dem Befehl setWarnings kannst du die Access-Warnungen ein- und ausblenden.
Ich denke das ist das was du meinst.

kikimat

Bei mir kommt die Meldung trotzdem weiterhin, ich hab das Makro auch bei HF und UF und bei beiden gleichzeitig ausprobiert, nichts zu machen :'( :'(

database

OK,

dann halt auf die Brutaloart...  8)



If Me.Dirty Then
    If vbNo = MsgBox("Möchten Sie Speichern?", vbQuestion + vbYesNo, "Frage") Then
      Cancel = acDataErrContinue
      Me.Undo
   End If
End If



DoCmd.SetWarnings nimmst du wieder gänzlich raus.

Im Anhang ein kleines Beispiel zur Veranschaulichung

[Anhang gelöscht durch Administrator]

kikimat

Vielen, vielen Dank! Klappt super! ;D

database

Hallo,
schön, dass es funktioniert

Bitte schließe den Thread in dem du in DEINEM ERSTEN Beitrag auf 'gelöst' klickst!

DANKE