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