Hallo,
irgendwie stehe ich gerade auf dem Schlauch.
Ich habe ein gebundenes Formular, bei dem ich jetzt noch Einträge aus einer Tabelle einfügen möchte
Private Sub TxFANr_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT Auftrag, Pos, LWNr " _
& "FROM Tabelle1 " _
& "WHERE FA = '" & Me.TxFANr & "'")
If Not (rs.BOF And rs.EOF) Then
Me.Tx1 = rs!Auftrag
Me.Tx2 = Nz(rs!Pos, "")
Me.Tx3 = Nz(rs!LWNr, "")
Me.Tx4 = "FA " & Me.TxFANr
End If
Ende:
On Error Resume Next
rs.Close
Set rs = Nothing
Exit Sub
Fehler:
Fehlerprot Err.Number, Err.Description
Resume Ende
End SubSetze ich eine Haltemarke auf Exit Sub, kann ich sehen, dass alle Einträge vorgenommen wurden. Drücke ich dann F8, verschwinden alle Einträge und die Eingaben wurden gespeichert.
Ich habe ein gebundenes Feld mit der ID, rufe ich das Formular auf, steht darin die neue ID. Nach der obigen Eingabe springt das ID-Feld auf "New", also wurden die Eingaben offenbar gespeichert und es wurde zu einem neuen Datensatz gesprungen. Aber wieso? Es gibt kein Form_AfterUpdate, kein Me.Requery oder Me.Refresh. Gespeichert werden soll das Formular erst nach Drücken eines Buttons.
Ist bestimmt nur ein Verständnisfehler aber ich komm nicht drauf, hat jemand von Euch nen Tipp?
Gruß
Doming
Hallo,
Access speichert im Regelfall gebundene Formulare immer automatisch. Wenn man das nicht will, muss das im Ereignis "Vor Aktualisierung (Form_BeforeUpdate)" durch setzen des Parameters "Cancel" auf True verhindert werden. Dort bringt man dann zweckmässigerweise eine Rückfrage (Soll gespeichert werden ?) unter. Und das wäre dann der Button der gedrückt werden muss.
Danke für die Antwort Klaus, es ist mir schon klar, dass gebundene Formulare automatisch gespeichert werden, aber wieso wird während des Ausfüllens zu einem neuen Satz gesprungen?
Hm, ich habe jetzt damit beholfen, im Form_BeforeUpdate Cancel grundsätzlich auf true zu setzen, es sei denn, ich drücke auf den Speichern-Button. Trotzdem wurden, während ich Daten eingegeben habe, einige Felder wieder geleert, diesmal aber ohne zu speichern. Ich bleibe verwirrt...
Ist TxFANr das letztes Steuerelement in der Aktivierreihenfolge und das AfterUpdate wird ausgelöst, wenn du im Feld Tab drückst und damit zu eine neuen Datensatz wechselst?
Das wäre eine logische Erklärung.
Hm, tatsächlich...
Da ich TxFANr nachträglich in ein bestehendes Formular eingefügt habe, war es natürlich in der Reihenfolge ganz unten.
Ich habe das jetzt mal weiter nach oben geschoben und jetzt wird das Formular-Ereignis BeforeUpdate nicht mehr angesprochen.
Den Tabulator habe ich nicht betätigt, aber Enter natürlich (und somit das AfterUpdate ausgelöst), klar, dass er danach dann zum "nächsten" Element springen will.
Danke für den Hinweis, nun ist meine Erde wieder rund.
Gruß
Doming
Hallo,
Du kannst aber auch das Formular so einstellen, daß mit TAB nicht zum nächsten Datensatz gesprungen (und damit automatisch gespeichert) wird. Dann springt der Cursor beim letzten Feld wieder auf das erste.
Denk dran, daß ein Verlassen eines Unterformulares auch Save im Unterformular auslöst. Wenn Deine Buttons in einem Hauptformular liegen, dann ist beim Klick bereits gespeichert worden.
Gruß
Christian
Hallo Doming,
Die benötigte Eigenschaft des Formulars heisst: "Zyklus" (Reiter "Andere").
Wobei "Alle Datensätze" zum Sprung auf einen neuen führt, und
"Aktueller Datensatz" eben dieses verhindert.
gruss ekkehard