Hallo an Forum
Neue Frage neues Glück ;-)
Ich habe ein gebundenes Hauptformular mit einem Unterformular (Endlos) mit den Daten aus der gleichen Tabelle zur
Übersicht /Auswahl der Daten die ich im Hauptformular eingeben/bearbiten kann.
Vorm Speichern der Daten (über Button) mache ich diverse Abfragen ob alle wichtigen Felder ausgefüllt wurden und ob die Daten schon in der Tabelle vorhanden sind (hier Telfonnummern).
Unterscheidung ob neuer Datensatz oder Bearbeitung erfolgt über Me.NewRecord und Me.Dirty.
Mein Problem tritt auf wenn ich einen neuen DS anlege/eingebe oder einen DS bearbeite und währen dessen per Maus in das Unterformular klicke. Dann wechselt (wie ja auch gewollt) der DS im Hauptformular und ich zerlege meine Eingabe.
Wie kann ich nun während der Bearbeitung/Neueingabe eines DS im Hauptformular das Unterformular so sperren, dass der Benutzer keinen Schaden anrichten kann. Heir mal mein Code: Private Sub cmd_Übernehmen_Click() Dim msgString As String, msgTitel As String Dim intnewrec As Integer Dim strSQL As String Dim iAntw As Integer
If errorhandling Then On Error GoTo Err_cmd_Übernehmen_Click
'Wenn Felder außer der Ausnahme nicht befüllt wurdden wird die Bearbeitung abgebrochen If fctControlAusgefüllt(Me, "txt_Nebenstelle" ) = False Then Exit Sub End If 'Auslesen ob der aktuelle Datensat ein neuer Datensatz ist intnewrec = Me.NewRecord strSQL = "[K_Vorwahl]= '" & Me!txt_Vorwahl & "'" & _ " AND [K_Nummer] = '" & Me!txt_Nummer & "'" & _ " AND [K_Nebenstelle] = '" & Me!txt_Nebenstelle & "'" If DSVorhanden("tbl_Kontakt", strSQL) = False Then iAntw = MsgBox("Der Kontakt der angelegt werden soll existiert bereits!" & vbCr & _ "Bitte ändern Sie die Kontaktnummer oder brechen Sie die Bearbeitung ab!", vbCritical + vbOKCancel, "Titel eingeben" ) If iAntw = vbCancel Then Me.Undo Else Exit Sub End If End If 'Meldung Neuen Datensatz übernehmen If intnewrec = True Then msgString = "Wollen Sie die die neue Kontaktnummer übernehmen?" msgTitel = "Neuen Datensatz anlegen" 'Meldung bearbeitetn Datensatz übernehmen Else msgString = "Wollen Sie die Änderungen an der Kontaktnummer übernehmen?" msgTitel = "Datensatzbearbeitung übernehmen" End If 'Übername bestätigen If MsgBox(msgString, vbQuestion + vbYesNo, msgTitel) = vbNo Then 'Änderung abbrechen Me.Undo Else 'Datensatz speichern Me.Dirty = False End If 'Aktuallisierung des Endlosformulas UfrmKontaktAnlegen" nach Datenänderung Forms!frm_KontakteAnlegen!ufrm_KontaktAnlegen.Form.Requery Err_Exit:
Me!cmd_Übernehmen.Enabled = False Me!cmd_Neu.Enabled = True Me!lbl_Titel.Caption = "Kontakt bearbeiten" 'Sperre nur neuen Datensatz im Hauptformular und so Sperre Unterformular aufheben 'Me.DataEntry = False 'Aktuallisierung des Endlosformulas UfrmKontaktAnlegen" nach Datenänderung Me!ufrm_KontaktAnlegen.Form.Requery
Exit Sub
Err_cmd_Übernehmen_Click:
Fehlerbearbeitung Me.Name & " - Sub_cmd_Übernehmen_Click", Err.Description, Err.Number, Erl Resume Err_Exit
End Sub
Private Sub Form_Click() 'Hauptformular mit Unterformular syncronisieren If errorhandling Then On Error GoTo Err_Form_Click
If Me.Parent.Form.Dirty = False And Me.Parent.Form.NewRecord = False Then Forms!frm_KontakteAnlegen.Recordset.FindFirst "ID_Kontakt = " & Me.ID_Kontakt End If Err_Exit:
Exit Sub
Err_Form_Click:
Gruß Olaf
|