![]() |
|
![]() |
#1 |
![]() MOF User |
![]() Hallo Ihr Lieben,
habe folgendes Problem: Ich möchte beim schliessen eines Berichts abfragen, wie weiter verfahren werden soll. Wenn der User auf "abbrechen" klickt soll der Bericht nicht geschlossen werden. Dies funkt leider nicht, da auch bei Exit Sub der Bericht schon geschlossen ist. Hier der Code: Code: Private Sub Report_Close() On Error GoTo Err_Report_Close Dim Ergebnis Ergebnis = MsgBox("Wollen Sie den Auftrag speichern?", vbYesNoCancel, "Auftrag speichern") If Ergebnis = vbYes Then MsgBox "Speichern gewählt" ElseIf Ergebnis = vbNo Then MsgBox " nicht speichern gewählt" ElseIf Ergebnis = vbCancel Then MsgBox "abbrechen" GoTo Exit_Report_Close End If DoCmd.OpenForm "Haupt", acNormal DoCmd.OpenForm "frm_Auftragerteilen", acNormal Exit_Report_Close: Exit Sub Err_Report_Close: MsgBox Err.Description Resume Exit_Report_Close End Sub Vielen Dank schon mal für die Hilfe __________________ Vielen Dank für eure Bemühungen im vorausKlaus |
![]() |
![]() ![]() |
![]() |
#2 |
![]() Du mußt ein
DoCmd.CancelEvent einfügen, wenn das angewählte Ereignis nicht durchgeführt werden soll. HTH Arno |
|
![]() ![]() |
![]() |
#3 |
Threadstarter
![]() ![]() MOF User |
![]() Hallo Arno,
Ich hab ein DoCmd.CancelEvent statt des goto..... nach der MsgBox abbrechen eingefügt, der Bericht wird aber trotzdem geschlossen. Funkt leider nicht, hast Du vielleicht noch einen Lösungsvorschlag? __________________ Vielen Dank für eure Bemühungen im vorausKlaus |
![]() |
![]() ![]() |
![]() |
#4 |
![]() Hallo Klaus,
hast Du das Exit Sub welches Ursprünglich ausgelöst wurde, hinter das DoCmd.CancelEvent übernommen? Ansonsten läuft er ja mit dem Rest des Codings weiter, öffnet Deine Formulare und es sieht zumindest so aus, als würde der Report beendet. Gruß Arno |
|
![]() ![]() |
![]() |
#5 |
Threadstarter
![]() ![]() MOF User |
![]() Hallo Arno,
ich hab jetzt das Exit Sub hinter dem Cancel Event. Hier nochmal der aktuelle Code: Code: Private Sub Report_Close() On Error GoTo Err_Report_Close Dim Ergebnis Ergebnis = MsgBox("Wollen Sie den Auftrag speichern?", vbYesNoCancel, "Auftrag speichern") If Ergebnis = vbYes Then MsgBox "Speichern gewählt" DoCmd.SetWarnings False DoCmd.OpenQuery "aktualisieren_Kennzeichen" DoCmd.OpenQuery "anfüg_Auftrag_tmp_an_Auftrag" DoCmd.OpenQuery "anfüg_Auftrag_Details_tmp_an_Auftrag_Details" DoCmd.OpenQuery "löschen_Auftrag_Details_tmp" DoCmd.OpenQuery "löschen_Auftrag_tmp" DoCmd.SetWarnings True ElseIf Ergebnis = vbNo Then MsgBox " nicht speichern gewählt" DoCmd.SetWarnings False DoCmd.OpenQuery "löschen_Auftrag_Details_tmp" DoCmd.OpenQuery "löschen_Auftrag_tmp" DoCmd.SetWarnings True ElseIf Ergebnis = vbCancel Then MsgBox "abbrechen" GoTo Exit_Report_Close End If DoCmd.Close acForm, "frm_Auftragerteilen" DoCmd.OpenForm "Haupt", acNormal DoCmd.OpenForm "frm_Auftragerteilen", acNormal Exit_Report_Close: DoCmd.CancelEvent Exit Sub Err_Report_Close: MsgBox Err.Description Resume Exit_Report_Close End Sub DoCmd.CancelEvent Exit Sub direkt hinter die MsgBox abbrechen zu stellen versucht. Beides funkt leider nicht. Sorry Hast Du noch eine Idee??? __________________ Vielen Dank für eure Bemühungen im vorausKlaus |
![]() |
![]() ![]() |
![]() |
#6 |
![]() MOF Meister |
![]() Das Ereignis 'Report_Close' hat halt keine Cancel-'Option'.
Beim Formular ginge es über das Unload-Ereignis - und das gibt's leider beim Report nicht. Mehr fällt mir dazu leider auch nicht ein. __________________ Gruss aus dem (wilden) Süden ;-) Karl-HeinzPS: Wenn das Thema abgeschlossen ist, bitte den Thread mit einem Feedback als erledigt kennzeichnen, bzw. mit dieser neuen Funktion (anklicken) als erledigt setzen! |
![]() |
![]() ![]() |
![]() |
#7 |
![]() Sorry,
da ich mich derzeit wieder auf einer Schulung befinde, kann ich mich mit diesem Problem nicht weiter beschäftigen - wie mit allen anderen Themen, in welche ich mich eingeklinkt hatte, auch. Es währe gut, wenn sich hier jemand anderer einklinken könnte. Gruß, Arno |
|
![]() ![]() |
![]() |
#8 |
![]() |
![]() Na gut. Altes wieder aufgefrischt.
Das Schließen eines Berichts kann nicht mit Access-Bordmitteln abgefangen werden, ohne dass er auch wirklich schließt. Es gibt nicht sowas wie CloseRequest. Die einzige Möglichkeit, die ich sehe, ist ein Subclassing des Berichts. Dieses wiederum funktioniert absolut nicht zuverlässig in VBA. (Schon bei Forms gibt es Schwierigkeiten). Aus diesem Grund ist eine externe ActiveX-DLL zu verwenden. Ich hab eine MouseWheel-DLL von Lebans erweitert. Hier zu holen: http://www.moss-soft.de/public/mousewheel.dll . Sie enthält zusätzliche Events und Methoden. In einem Bericht lässt sie sich z.B. so einsetzen: Code:
Ciao, Sascha |
![]() |
![]() ![]() |