Einzelsatzverarbeitung unter DAO ◦ ?

Das Formular FrmZuordnung aus Testverwaltung.mdb enthält rechts oben das Textfeld Zeitbudget. Ein Klick auf fügt einen voreingestellten Wert in Minuten ein. Die Voreinstellung ist gleich der Zahl der Musterlösungspaare unter der Überschrift Lösung.

Ein Klick auf die Schaltfläche startet die Ereignisprozedur BtnVoreinstellenZeitbudget_Click(). Diese berechnet den Defaultwert in einer einfachen Form der DAO-Satzverarbeitung aus dem Recordset rstZOLösungen:

>     Füge einen Defaultwert für das Zeitbudget ein
>       Zähle die Sätze mit dem laufenden Fragenschlüssel von ZUORDNUNGS_LÖSUNGEN
>       Falls Ergebnis > 0
>         trage die Voreinstellung ein

> Die folgende Prozedur mischt mengen- und satzorientierte Zugriffe: Zuerst erstellt eine mengenorientierte SQL-Abfrage den Recordset rstZOLösungen. Dieser enthält lediglich einen einzigen Satz mit dem gesuchten Defaultwert. Die With-Klammer weist diesen Wert der Variablen voreingestelltesZeitbudget zu und schliesst den Recordset.

>     '--- Zeitbudget voreinstellen
>     '    (Zeitbudget = Zahl der Lösungspaare der Zuordnungsaufgabe in Minuten)

>     Private Sub BtnVoreinstellenZeitbudget_Click()
>       Dim rstZOLösungen As Recordset
>       Dim lfFragenschlüssel As Long
>       Dim voreingestelltesZeitbudget As Single

>       '-- Fragenschlüssel = Datenquelle des (geöffneten) Formulars FrmAllgemeines
>       lfFragenschlüssel = [Forms]![FrmAllgemeines]![Fragenschlüssel]

>       '-- Öffne Recordset aus dem einzigen Satz. Dieser nennt im Attribut Zahl_ZOLösungen die
>       '   Zahl der Sätze mit dem Wert lfFragenschlüssel der Tabelle ZUORDNUNGS_LÖSUNGEN
>       Set rstZOLösungen = CurrentDb.OpenRecordset("SELECT " & _
>         "Count(Fragenschlüssel) " & _
>         "AS [Zahl_ZOLösungen] FROM ZUORDNUNGS_LÖSUNGEN " & _
>         "WHERE Fragenschlüssel=" & lfFragenschlüssel & ";")

>       '-- Position auf dem ersten (und einzigen) Satz der Ergebnistabelle des obigen SQL-Befehls
>       With rstZOLösungen
>         voreingestelltesZeitbudget = !Zahl_ZOLösungen
>         .Close
>       End With
>       Set rstZOLösungen = Nothing

>       '-- Zuordnungslösung bereits eingetragen?
>       If voreingestelltesZeitbudget > 0 Then	'Eintrag vorhanden
>         Me![TxfZeitbudget] = voreingestelltesZeitbudget
>       Else
>         MsgBox "Keine Voreinstellung berechenbar. Tragen Sie zuerst die Lösung ein", _
>           vbOKOnly + vbExclamation, "Voreinstellung"
>       End If
>     End Sub

Erläuterungen zur VBA-Syntax

- _ setzt eine Anweisung auf der nächsten Codezeile fort

- & verknüpft zwei Zeichenfolgen ("Apfel" & "saft" ergibt zum Beispiel "Apfelsaft")

- Auf einen Punkt . folgt ein systemdefinierter Name, auf ! ein benutzerdefinierter Name

Satzorientierte Verarbeitung unter DAO
Satzverarbeitung in einer Schleife
MS Access-Steuerelemente