Tausendsassa Datenblatt – Teil 2

Speichern des Originalzustands

Um die Funktionalität zum Wiederherstellen des Originalzustandes zu gewährleisten, müssen Sie diesen Zustand zunächst einmal festhalten. Das Speichern der Konfiguration wird durch das Ereignis Beim Entladen des Unterformulars ausgelöst (Listing 1)

Private Sub mForm_Unload(Cancel As Integer)
SpeichereKonfiguration
End Sub

Die hier aufgerufene Routine SpeichereKonfiguration (Listing 2) erfasst zunächst, wie viele Spalten der Datenblattansicht fixiert sind. Der von der Eigenschaft FrozenColumns zurückgegebene Wert lautet beispielsweise 2, wenn nur das erste Feld fixiert ist. Der Wert 1 ist der Standardwert und steht stellvertretend für die Spalte, die den Datensatzmarkierer enthält. Diese Spalte ist selbstverständlich immer fixiert. Um die tatsächliche Anzahl der fixierten Spalten zu erhalten, wird der Wert noch um 1 vermindert.

Private Sub SpeichereKonfiguration()
Dim db As DAO.Database
Dim ctl As Control
Dim strFormular As String
Dim strFeldname As String
Dim intOriginalbreite As Integer
Dim intLetzteBreite As Integer
Dim intOriginalreihenfolge As Integer
Dim intLetzteReihenfolge As Integer
Dim bolVersteckt As Boolean
Dim bolFixiert As Boolean
Dim intFixiert As Integer
Set db = CurrentDb
intFixiert = mForm.FrozenColumns - 1
For Each ctl In mForm
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType
= acCheckBox Then
strFormular = mForm.Name
strFeldname = ctl.Name
intOriginalbreite = ctl.ColumnWidth
intLetzteBreite = ctl.ColumnWidth
intOriginalreihenfolge = ctl.ColumnOrder
intLetzteReihenfolge = ctl.ColumnOrder
bolVersteckt = ctl.ColumnHidden
If ctl.ColumnOrder <= intFixiert Then
bolFixiert = True
Else
bolFixiert = False
End If
On Error Resume Next
db.Execute "INSERT INTO tblFelder(Formular, Feldname, Originalbreite,
LetzteBreite, OriginalReihenfolge, LetzteReihenfolge, Versteckt, Fixiert) VALUES('"
& strFormular & "','" & strFeldname & "'," & intOriginalbreite & "," & intLetzteBreite
& ", " & intOriginalreihenfolge & " ," & intLetzteReihenfolge & "," &
BoolToString(bolVersteckt) & ", " & BoolToString(bolFixiert) & ")", dbFailOnError
If Err.Number = 3022 Then
db.Execute "UPDATE tblFelder SET LetzteBreite = " & intLetzteBreite
& ", LetzteReihenfolge = " & intLetzteReihenfolge & ", Versteckt = " &
BoolToString(bolVersteckt) & ", Fixiert = " & BoolToString(bolFixiert) & " WHERE
Formular = '" & strFormular & "' AND Feldname = '" & strFeldname & "'"
End If
On Error GoTo 0
End If
Next ctl
Set db = Nothing
End Sub

Anschließend durchläuft die Routine alle Steuerelemente des Unterformulars, das hier durch die Variable mForm gekennzeichnet ist. Wie diese Variable belegt wird, erfahren Sie weiter unten.