Regular
Beiträge: 77
| Okay, ich versuche mal Schritt für Schritt zu beschreiben, was dort passiert:
Es handelt sich um einen Auftragsdatensatz, der in einem schreibgeschützen (alle Steuerelemente Aktivert = Nein und Gesperrt = Nein, Formular selber Anfügen zulassen = Nein, Löschen zulassen = Nein, Bearbeitungen zulassen = ja). Hinter dem Formular liegt eine Abfrage, die Fremdschlüsselfelder mit den Werten aus den jeweils verknüpften Tabellen füllt. Das betroffenen Rich-Text-Feld ist die Bemerkung zum Auftrag. Diese kann sowohl in einem Popup, in dem der ganze Auftrag bearbeitet wird, als auch in einem separaten Popup bearbeitet werden. Um die Popups zu öffnen gibt es einen Button, der das gewünschte Popup mit öffnet:
Private Sub cmd_edit_remarks_Click()
On Error GoTo fehler
Dim lngOrdID As Long
lngOrdID = Me!txt_ordID
DoCmd.OpenForm "popOrdRemarks", , , "ordID = " & lngOrdID, , acDialog
Exit Sub
fehler: MsgBox "Fehler " & Err.Number & ": " & Err.Description, , "Bitte Fehlernummer und Beschreibung an den Administrator melden"
End Sub
Das Popup öffnet sich.
Ich habe eine eigenen Sperrmechanismus eingerichtet, der folgendermaßen funktioniert: Es gibt eine Tabelle tblSperren mit den Feldern
speID (Primärschlüssel, Autowert)
speTabelle (Name der Tabelle, in der der Datensatz bearbeitet wird)
speSperrID (ID des Datensatzes in der Tabelle)
speUser (WindowsUser, der den Datensatz bearbeitet)
speDatum (Datum, an welchem der Datensatz gesperrt wurde)
Beim Öffnen des Popups erfolgt eine Prüfung ob zu dieser Tabelle und dieser ID eine Sperre eingetragen ist; dies ist die Funktion dafür:
Public Function SperreChecken(strTabelle As String, lngSperrID As Long) As Variant
On Error GoTo fehler
SperreChecken = DLookup("speUser", "tblSperren", "speTabelle = '" & strTabelle & "' AND speSperrID = " & lngSperrID)
Exit Function
fehler: MsgBox "Fehler " & Err.Number & ": " & Err.Description, , "Bitte Fehlernummer und Beschreibung an den Administrator melden"
End Function
Falls ja, wird eine Meldung ausgegeben, dass der Datensatz durch den und den User gesperrt ist, das Popup öffnet sich trotzdem, aber alle Steuerelemente und der OK-Button werden deaktiviert.
Falls nein, öffnet sich das Popup und ist ganz normal bearbeitbar, und gleichzeitig wird der entsprechende Eintrag in die Sperrtabelle gemacht (im Load-Event des Popups). Außerdem wird dann eine Bool-Variable "bolLockedByMe" auf True gesetzt, damit das Popup weiß, dass es beim Schließen den Eintrag in die Sperrtabelle wieder löschen soll.
In diesem Fall befindet sich in dem Popup nur das Textfeld für die Bemerkung. Dieses kann an dieser Stelle bearbeitet werden, und die Änderungen werden auch angezeigt.
Dann klickt man den OK-Button, der einfach nur
DoCmd.Close acForm, Me.Name
ausführt.
Teilweise habe ich schon beobachtet, dass die Änderung in dem Textfeld schon verschwunden war, bevor sich das Popup geschlossen hat.
Kann irgendetwas davon dazu führen, dass die Änderungen nicht gespeichert werden?
Viele Grüße
Andrea |