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]," & _
         "       Artikel.Artikelname, Bestelldetails.Einzelpreis," & _
         "       Bestelldetails.Anzahl, Bestelldetails.Rabatt," & _
         "       CCur(Bestelldetails.Einzelpreis*[Anzahl]*(1-[Rabatt])/100)*100 AS Endpreis " & _
         "FROM   Artikel" & _
         "       INNER JOIN Bestelldetails" & _
         "               ON Artikel.[Artikel-Nr] = Bestelldetails.[Artikel-Nr] " & _
         "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 " & _
                                     "Einschraenkung Order By Sortierfeld")
   'Die Datenherkunft (neu) zuweisen
   Set Me.Unterformular.Form.Recordset = rst
   'Das Recordset-Objekt ist jetzt an das Formular gebunden

Zu beachten ist hierbei, dass die Datenherkunft mit Set zugewiesen werden muss!