Access Anfänger: Wie setzt man per VBA die Datenherkunft eines Unterformulars

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte einem Unterformular die Datensatzquelle (Datenherkunft) während der Laufzeit per VBA zuweisen, während ich mich im Hauptformular befinde.

Lösung 1

In folgendem Beispiel wird beim Öffnen des Hauptformulars dem Unterformular die Datensatzquelle zugewiesen.
Die Beispieldaten stammen aus der Nordwind-Datenbank (siehe Access-Beispieldatenbanken bzw. Access-Vorlagen).

Private Sub Form_Open(Cancel As Integer)
 
 Dim sql As String
 
 'Datensatzquelle zusammenstellen
 sql = "SELECT Bestelldetails.[Bestell-Nr], Bestelldetails.[Artikel-Nr],"
 sql = sql & " Artikel.Artikelname, Bestelldetails.Einzelpreis,"
 sql = sql & " Bestelldetails.Anzahl, Bestelldetails.Rabatt,"
 sql = sql & " CCur(Bestelldetails.Einzelpreis*[Anzahl]*(1-[Rabatt])/100)*100 AS Endpreis"
 sql = sql & " FROM Artikel INNER JOIN Bestelldetails"
 sql = sql & " ON Artikel.[Artikel-Nr] = Bestelldetails.[Artikel-Nr]"
 sql = sql & " ORDER BY Bestelldetails.[Bestell-Nr];"
 
 'Datensatzquelle zuweisen
 Me.Kundenbestellungen_Unterformular2.Form.RecordSource = sql
 
End Sub


Lösung 2

Dim rst As DAO.Recordset
'Datenherkunft erstellen
Set rst = CurrentDB.OpenRecordset("SELECT * FROM Tabelle WHERE " & _
                                      "Einschränkung Order By Sortierfeld")
'Die Datenherkunft (neu) zuweisen
Set Me!Unterformular.Form.Recordset = rst
' Objekt-Verweis auf das Recordset-Objekt aufheben,
' Recordset-Objekt ist jetzt an das Formular gebunden
Set rst = Nothing

Zu beachten ist hierbei, dass die Datenherkunft mit SET zugewiesen werden muss! In manchen Tipps ist dieses so nicht beschrieben, weshalb die Zuweisung dann auch in einen Fehler mündet.