Datenbindung 3

Datenbindung (Teil 3)

 

Der Code für die Datenbindung lässt sich noch weiter optimieren. Dazu wird der Code für die eigentliche Datenbindung in eine weitere Klasse ausgelagert. Diese hat einzig zur Aufgabe die Datenbindung zwischen der Datenklasse und dem Formular herzustellen.

Der Code für eine solche Klasse sieht wie folgt aus:

Option Compare Database
Option Explicit

Private m_Kunde As cls_Kunden
Private m_DataBinder As cls_DataBinder
Private m_Form As Access.Form

Private Sub Class_Initialize()

    'Objekte instanzieren
    Set m_Kunde = New cls_Kunden
    Set m_DataBinder = New cls_DataBinder

End Sub

Private Sub Class_Terminate()

    'Aufräumen
    Set m_DataBinder = Nothing
    Set m_Kunde = Nothing
    Set m_Form = Nothing

End Sub

Public Sub BindData(ByVal ThisForm As Access.Form)

    Set m_Form = ThisForm

    'DataBinder füllen
    Set m_DataBinder.Form = m_Form.Form
    Set m_DataBinder.DataObject = m_Kunde
    Set m_DataBinder.CancelButton = m_Form!cmdAbbrechen
    Set m_DataBinder.OkButton = m_Form!cmdSpeichern

    'Steuerelemente an Daten binden
    m_DataBinder.AddControl m_Form!txtId, "ID"
    m_DataBinder.AddControl m_Form!txtFamname, "FamName"
    m_DataBinder.AddControl m_Form!txtVorname, "Vorname"
    m_DataBinder.AddControl m_Form!txtGeburtstag, "Geburtstag"
    ' Weitere Steuerelemente
    ' ... 

    'Daten laden
    If Nz(m_Form.OpenArgs, 0) <> 0 Then
        m_Kunde.Load m_Form.OpenArgs
        m_DataBinder.LoadFormData
    End If

End Sub

Der Code im Formular schrumpft dann auf wenige Zeilen:

Private m_KundenFormDataBinder As cls_KundenFormDataBinder

Private Sub Form_Load()

    Set m_KundenFormDataBinder = New cls_KundenFormDataBinder
    m_KundenFormDataBinder.BindData Me.Form

End Sub

Private Sub Form_Unload(Cancel As Integer)

    Set m_KundenFormDataBinder = Nothing

End Sub

Eine Beispieldatenbank steht hier zum Download bereit:

Für Access 2000 / 2002 / 2003 / 2007 / 2010