PDA

Vollständige Version anzeigen : Kann mir denn wirklich keiner helfen?? Speichern bei Form_BeforeUpdate


Sanne
07.02.2001, 12:41
folgendes Problem: Wenn der User von einem DS zu einem anderen DS geht und Änderungen vornimmt, dann soll eine Abfrage kommen, ob die Änderungen übernommen werden sollen oder nicht. Wenn nein, dann soll alles rückgängig gemahct werden und wenn ja, dann sollen die Änderungen übernommen werden und anschliessend mehrere Abfaregn ausgeführt werden. Die Abfragen dürfen nur ausgeführt werden, wenn Änderungen vorhanden waren und diese gespeichert wurden!!

Also ich habe das in die Form_BeforeUpdate Prozedur geschrieben. Rückgängig geht und die Abfragen gehen auch. Aber sobald ich das Speichern reinnehme funktioniert es wieder nicht. Nehme ich die Abfragen und Speichern raus, dann speichert er automatisch die Änderungen. Aber dann habe ich immernoch das Problem der nicht ausgeführten Abfragen.

Und wenn ich es automatisch speichern lasse und die Abfragen in die Form_AfterUpdate Prozedur schreibe, dann führt er die Abfragen ja jedesmal aus, und das ist falsch.

Ras
07.02.2001, 14:15
Hi Sanne,
versuch es mal hiermit...

Dim Meldung As String
If Forms!Formularname.Dirty Then
Meldung = "Der Datensatz wurde verändert ! Datensatz sichern ?"
If MsgBox(Meldung, 4 + 16, "Datensatz abbrechen ?") <> 6 Then
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Else
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
'hier kommt der Code, der Deine Abfragen ausführt
End If
End if

wenn an dem datensatz nichts geändert wurde, passiert nichts, wurde der datensatz geändert, kommt die frage, ob gespeichert werden soll, falls nicht, werden die änderungen zurückgesetzt, falls ja werden die abfragen ausgeführt...
ich hoffe, du kannst damit etwas anfangen...
gruss,
ras

Sanne
07.02.2001, 14:20
Hey super danke. Und das schreibe ich jetzt in die Form_BeforeUpdate rein?? Ich probiere es gleich mal aus...

Sanne
07.02.2001, 14:32
Hab es mal probiert, aber er bricht schonwieder alles ab beim Speichern.

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Hier mal die Werte dazu:

acFormBar = 0
acRecordsMenu = 5
acSaveRecord = 4
acMenuVer70 = 70

War es richtig im Form_BeforeUpdate???

Ras
07.02.2001, 14:59
hmmm...
weiss auch nicht,
lass vielleicht mal die save-zeile weg...
denn gespeichert wird ja eh automatisch...
versuch es dann mit After_Update...
gruss,
ras

Sanne
07.02.2001, 15:07
Nee dat klappt net. Das mit dem automatischen Speichern haut mit den Abfragen nicht hin. Das ist das gleiche Problemn wie ich vorher schon hatte. Und Form_AfterUpdate ist auch net die Lösung, das hatte ich auch schon probiert. Trotzdem Danke!!!

Nockenwelle
07.02.2001, 20:44
Hallo,
Nur ein Vorschlag:

deine Abfragen sollten after update losgejagt werden, und das was Ras dir geschrieben hatte in before update.

Cu

Sanne
08.02.2001, 14:03
Danke für Euren Tip Ras und Nockenwelle. Die Lösung des Problems war folgende. Einfach beim Form_BeforeUpdate die Abfragen unter den Else-Zweig stellen und in der Form_AfterUpdate den Speichern-Befehl. In der Form_BeforeUpdate ist das Speichern leider nicht möglich.

Jetzt habe ich aber folgendes Problem: Wenn ich die Änderungen des DS auf den "normalen" Weg übernehmen will (also eine Befehlsschaltfläche drücke), dann kommt die Meldung doppelt. Ich habe in dem Ereignis Speichern_Click einen Aufruf zu Form_BeforeUpdate und anschliessend zu Form_AfterUpdate stehen. Trotzdem nimmt er es doppelt.

Wie kann ich das umgehen???

Nockenwelle
08.02.2001, 20:52
Hallo Sanne,
Ich möchte es vorsichtig Formulieren.
Das hört sich ein bisschen durchgeknallt an:
After_update einen Speicherungsbefehl auslösen.
Dein Prob. lässt sich wahrscheinlich ganz einfach lösen. Vielleicht beschreibst du es auch nur falsch, oder es ist mir zu undurchsichtig, was du da bewerkstelligst.
Manchmal(und ich habe da große Erfahrung drin http://www.microsyskramer.de/ubb/redface.gif) sieht man den Wald vor lauter Bäumen nicht.

Schick mir mal ein Beispiel.


Cu