MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 13.01.2018, 11:12   #1
JPA
MOF Koryphäe
MOF Koryphäe
Standard Acc2010 - Bei Before_Update feststellen wie speicherung ausgelöst wurde

Hi Zusammen,

Speicherung eines Datensatz kann ja über Shift+Return oder über Fenster Schliessen usw... ausgelöst werden.
Im Ereigniss Form_Before_Update suche ich nach einer Möglichkeit dies festzustellen.
Hat jemand eine Idee?
Gff. über API?

G
JPA
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 12:30   #2
ios707
MOF Profi
MOF Profi
Standard

Vielleicht stehst du nur aufm Schlauch (oder ich), aber wäre nicht
Code:

If (Not) Me.Dirty Then ...
genau das was du suchst?

Edit: Die untere Antwort von Josef zeigt mir, dass ich auf dem Schlauch stand, sorry! Ich lass meine falsche Antwort trotzdem stehen.

__________________

--Dave
(Office365|Win10)

Geändert von ios707 (13.01.2018 um 12:47 Uhr).
ios707 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 12:37   #3
Joss
MOF Profi
MOF Profi
Standard

Hallo JPA,

du könntest jeden Tastendruck für jedes Feld zwischenspeichern, und dann auswerten.

Code:

Option Compare Database
Option Explicit

Dim intKeyCode As Integer
Dim intShiftDown As Integer

Private Sub Artikelname_KeyDown(KeyCode As Integer, Shift As Integer)

 intShiftDown = (Shift And acShiftMask) > 0
 intKeyCode = KeyCode
 
End Sub


Private Sub Form_BeforeUpdate(Cancel As Integer)

 If intKeyCode = vbKeyReturn And intShiftDown Then
   MsgBox "Mit Shift+Return gespeichert"
 Else
   MsgBox "Nicht mit Shift+Return gespeichert."
 End If

End Sub
Gruß
Josef
Joss ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 17:43   #4
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

"usw..." hätte ich wohl Fettdrucken soll.
Es geht nicht nur um speichern per Taste. Es gibt viele Wege um die Datensatzspeicherung anzustossen.
Ich stelle die Frage mal umgekehrt.
Mir reicht es zu wissen ob der Speichervorgang vom Fensterschliessen ausgelöst wurde.
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 17:51   #5
markusxy
MOF Meister
MOF Meister
Standard

Zitat: von JPA Beitrag anzeigen

"usw..." hätte ich wohl Fettdrucken soll.
Es geht nicht nur um speichern per Taste. Es gibt viele Wege um die Datensatzspeicherung anzustossen.
Ich stelle die Frage mal umgekehrt.
Mir reicht es zu wissen ob der Speichervorgang vom Fensterschliessen ausgelöst wurde.

Ich würde nicht mal über die Frage nachdenken, so lange ich die Hintergründe nicht verstehe.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 18:33   #6
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Hinweis

Wird das Formular nicht von VBA geschlossen, dann hat VBA keine Kontrolle darüber ob der Datensatz gespeichert werden soll oder nicht.
Selbst im Event Form_Unload(Cancel As Integer) ist der Datensatz bereits gespeichert.
Diesen Umstand finde ich nicht sonderlich befriedigend.
Darum geht es.

Vielleicht hat jemand bereits schon eine tolle Idee dazu?

PS: Mit ungebundene Forms geht es natürlich, mit geht es um gebundene Formulare.
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 18:36   #7
Nouba
MOF Guru
MOF Guru
Standard

Das wirst Du vermutlich nur durch das Entladen-Ereignis des Formulars herausfinden können und durch ein Flag das Schließen verhindern können.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 18:48   #8
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Wink

Zitat:

durch ein Flag das Schließen verhindern können

ja klar mit cancel=true, aber der Datensatz ist dann schon gespeichert :-(

Ich hoffte es gibt irgendwie einen "trick"... so was wie die undokumentierte fkt für das feststellen ob bei inputbox die Abbrechen-taste gedrückt wurde Versus leer-Eintrag und ok:
StrPtr(inputbox("Meldung"))=0 -> Abbrechen-Button wurde gedrückt

Naja, man kann ja mal träumen/hoffen....
VG
JPA
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 19:14   #9
markusxy
MOF Meister
MOF Meister
Standard

Es kann keinen Trick geben, wenn das Speichern wirklich vor dem Unload Event ausgeführt wird.
Wenn es keinen anderen Weg gibt, kannst du ja ein eigenes Steuerelement für das Schließen einsetzen.
Zu guter letzt könnte man noch prüfen, ob man per Subclassing das Problem lösen könnte.

Geändert von markusxy (13.01.2018 um 19:20 Uhr).
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 19:15   #10
Nouba
MOF Guru
MOF Guru
Standard

Versuch's mal so:
Code:

Private CanClose As Boolean

Private Sub Form_AfterUpdate()
   CanClose = True
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
  CanClose = MsgBox("Save", vbYesNo) = vbYes
  Cancel = Not CanClose
End Sub

Private Sub Form_Current()
   CanClose = True
End Sub

Private Sub Form_Dirty(Cancel As Integer)
   CanClose = False
End Sub

Private Sub Form_Error(DataErr As Integer, Response As Integer)
   If DataErr = 2169 Then
      Me.Undo
      Response = acDataErrContinue
   End If
End Sub

Private Sub Form_Undo(Cancel As Integer)
   CanClose = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Cancel = CanClose = False
End Sub
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 19:40   #11
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

vielen dank nouba, ging ja schnell, hast scheinbar selber bereits nach einer Lösung gesucht gehabt?!

Dies habe ich auch schon gemacht, das ungünstige an der Lösung ist, das der Datensatz tatsächlich gespeichert wurde, was änderungsdatum u.a. nachsichzieht.

Habe das ganze auch unter einer Klasse mit ausgelagerten Ereignisse probiert (machnmal verhalten sich die Ereignisse etwas anders). Aber hier kein leider Unterschied.
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 19:42   #12
Nouba
MOF Guru
MOF Guru
Standard

Bei mir wird da nichts gespeichert, wenn ich Nein beim Schließen wähle.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 19:57   #13
markusxy
MOF Meister
MOF Meister
Standard

Also ich habe das jetzt auch getestet.
Das BeforeUpate Event verhindert bei mir das Speichern auf jeden Fall.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 20:00   #14
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

ja, stimmt, sorry, habe schon viel kreuz und quer getestet.

Damit gehen die Datensatz-Änderung verloren, ziel ist es das der Schliessvorgang nicht durchgeführt wird, und die Änderungen im Datensatz weiterbearbeitet werden können.
Und die Frage bei Form_BeforeUpdate kommt ja immer, auch dann wenn die Datensatzspeicherung anderweitig angestossen wird.
-> Deswegen meine ursprüngliche Frage bzgl. ob bei Before_update was festzustellen ist.

Geändert von JPA (13.01.2018 um 20:03 Uhr).
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 17:58   #15
markusxy
MOF Meister
MOF Meister
Standard

Was ist mit den Vorschlägen aus #9?
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.