【发布时间】:2019-06-05 05:19:15
【问题描述】:
我尝试为 Access 中的子表单制作过滤器系统。
如何在一个子表单上连接多个过滤器。过滤器是用 SQL 但在 VBA 中制作的。
If Me.cboLieferant = "*" Then
SQL = "SELECT Lieferant.LieferantenName, Einkaeufer.Name, Vertrag.VertragsNr, Vertrag.VertragsTitel, Projekt.ProjektName, Vertrag.[1Kuendigungsmoeglichkeit], KraftStatus.Name, Vertrag.Gesamtbetrag " _
& " FROM KraftStatus INNER JOIN (Projekt INNER JOIN ((EinkauferVertrag INNER JOIN ((LieferantVertrag INNER JOIN Vertrag ON LieferantVertrag.VertragId = Vertrag.ID) INNER JOIN Lieferant ON LieferantVertrag.LiferantId = Lieferant.ID) ON EinkauferVertrag.VertragId = Vertrag.ID) INNER JOIN Einkaeufer ON EinkauferVertrag.EinkauferId = Einkaeufer.ID) ON Projekt.ID = Vertrag.ProjektId) ON KraftStatus.ID = Vertrag.KraftStatusID"
Else
SQL = "SELECT Lieferant.LieferantenName, Einkaeufer.Name, Vertrag.VertragsNr, Vertrag.VertragsTitel, Projekt.ProjektName, Vertrag.[1Kuendigungsmoeglichkeit], KraftStatus.Name, Vertrag.Gesamtbetrag " _
& " FROM KraftStatus INNER JOIN (Projekt INNER JOIN ((EinkauferVertrag INNER JOIN ((LieferantVertrag INNER JOIN Vertrag ON LieferantVertrag.VertragId = Vertrag.ID) INNER JOIN Lieferant ON LieferantVertrag.LiferantId = Lieferant.ID) ON EinkauferVertrag.VertragId = Vertrag.ID) INNER JOIN Einkaeufer ON EinkauferVertrag.EinkauferId = Einkaeufer.ID) ON Projekt.ID = Vertrag.ProjektId) ON KraftStatus.ID = Vertrag.KraftStatusID" _
& " WHERE [Lieferant].[ID] = " & Nz(Me.cboLieferant, 0) & ";"
End If
Me.uFiltering.Form.RecordSource = SQL
Me.uFiltering.Form.Requery
【问题讨论】:
-
如果子表单是数据表,那么一个简单的方法是转到表单属性 => 数据选项卡 => 允许过滤器并将其设置为是,就是这样。否则你可以参考下面SunKnight0展示的方法
标签: sql vba ms-access filter subform