Berarbeitung von Daten im Haupt/Unterformular
Olaf
Gesendet: 28.02.18 09:06
Betreff: Berarbeitung von Daten im Haupt/Unterformular


New user

Beitr├Ąge: 4

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

Top of the page Bottom of the page