【发布时间】:2016-12-06 23:03:37
【问题描述】:
我一直在寻找是否可以通过在表单中使用查找字段来限制报告中的结果。首先,一点背景。我正在建立一个数据库来存储联盟大学建筑物的可访问性信息。我需要能够生成一份报告,显示建筑物具有哪些用户选择的品质,例如坡道通道或配备人员的接待处。
我已将所有这些要素存储在他们自己的表格中,以便用户对其进行编辑,然后使用查找字段为建筑物选择这些要素。现在的问题是运行查询以生成报告。
如果我将值硬编码到像...WHERE [Buildings].[Accessibility Features].Value = 2 AND [Buildings].[Accessibility Features].Value = 8; 这样的查询中,我会得到合理的结果。如果我使用IN() 函数(我必须使用DoCmd.OpenReport() 函数来处理该领域),我将返回所有具有任一 特性2 或的建筑物功能 8 不是那么方便。将 AND 语句串在一起时,上述DoCmd.OpenReport() 函数似乎不起作用。
我尝试使用 VBA 来组装 SQL 代码,如下所示(将参数输入到 Criteria 框中,前面是相应的语句):
If Me.BuildingFeatSelect.ItemsSelected.Count = 0 Then
MsgBox "Must select at least one feature"
Exit Sub
End If
Set ctl = Me.BuildingFeatSelect
For Each varItem In ctl.ItemsSelected
strWhere = strWhere & ctl.ItemData(varItem) & " AND Buildings.[Accessibility Features].Value = "
Next varItem
strWhere = Left(strWhere, Len(strWhere) - 48)
MsgBox strWhere, , Output
Dim qdf As QueryDef
Dim rst As Recordset
Set qdf = CurrentDb.QueryDefs("Copy of Building Features 2")
qdf.Parameters(0) = strWhere
Set rst = qdf.OpenRecordset
rst.Close
qdf.Close
Set rst = Nothing
Set qdf = Nothing
这让我无处可去。它只是抛出一个关于参数类型的错误。我尝试使用参数窗口设置类型,但这不起作用。
是否有一种有效的方法可以根据查找框中的多个条目生成报告?
感谢您的帮助,抱歉问题太长了。
【问题讨论】:
-
您好,请不要使用左侧修剪功能。另外,您的 [辅助功能] 是数字还是字符串?
标签: sql-server ms-access vba