如何过滤 3 个文本框,然后在 MS Access VBA 中根据它们运行报告
Posted
技术标签:
【中文标题】如何过滤 3 个文本框,然后在 MS Access VBA 中根据它们运行报告【英文标题】:How to filter 3 text boxes and then run a report according to them in MS Access VBA 【发布时间】:2021-04-13 08:30:41 【问题描述】:我有 3 个组合框:
-
公司 - cboCOMP - tblCOMPANY
类别 - cboCAT - tblCATEGORY
机队编号 - cboFLT - tblFLEET_NO
然后通过 cboCOMP 使用 tblFLEET_SETUP 的行源对这些 (1&2) 进行排序(标准) 我已经设置了每个组合框,以便它们相互过滤,但只设法根据 cboCOMP 弄清楚如何执行此操作,只要它选择了一个值。
基本上,我希望组合框(1,2 和 3)在下拉列表中显示它们各自的完整选项列表,即使 cboCOMP 没有选择值,但我希望组合框根据每个选项进行过滤相应的单个组合框。这有可能,我该怎么做?
一旦我选择了我想要过滤的值,我将单击运行报告,但每次我执行唯一的组合框时,都会在我为 cboFLT 选择一个值时出现运行报告的错误。如果我将 cboFLT 留空但在其他 2 个组合框中输入一个值,则报告运行良好。 这是我为此使用的 vba 代码……
Private Sub btnRUN_Click()
Dim vcomp As String
Dim vcat As String
Dim vflt As String
Dim filter As String
If Me.cboCOMP.Value <> "" Then
vcomp = "'" & Me.cboCOMP.Value & "'"
' MsgBox vcomp
filter = "COMPANY =" & vcomp & ""
' MsgBox filter
End If
'NEW IF STATEMENT
If Me.cboCAT.Value <> "" Then
vcat = "'" & Me.cboCAT.Value & "'"
If filter <> "" Then
filter = filter & " and "
' MsgBox filter
End If
filter = filter & "CATEGORY =" & vcat & ""
' MsgBox filter
End If
'NEW IF STATEMENT
If Me.cboFLT.Value <> "" Then
vflt = "'" & Me.cboFLT.Value & "'"
If filter <> "" Then
filter = filter & " and "
' MsgBox filter
End If
filter = filter & "FLEET NO =" & vflt & ""
' MsgBox filter
End If
DoCmd.OpenReport "rptQuick_Fuel_Report", acViewPreview, , filter
DoCmd.Close acForm, "Quick Fuel Lookup", acSaveNo
End Sub
错误代码是“
运行时错误“3705”:查询中的语法错误(缺少运算符) 表达式 'COMPANY = 'JB' 和 CATEGORY = 'SOAP' 和 FLEET NO = 'Q 16 英寸。
当我点击调试时,代码中的错误行是:DoCmd.OpenReport "rptQuick_Fuel_Report", acViewPreview, , filter
【问题讨论】:
字段 FLEET NO 有一个空格。带有空格或标点符号/特殊字符的对象名称必须用 [ ] 括起来:[FLEET NO]
。建议不要在命名约定中使用这些功能。
另外,全大写更难阅读。更好的是 tblCompany。表名也习惯使用复数:tblCompanies、tblCategories 等。
天啊!!!我觉得自己像个傻瓜,我真的不敢相信只是在 FLEET NO 中添加 [ ] 就可以使报告生效!!!非常感谢,你不知道我有多感激!!!
关于您对复数和所有大写字母的其他评论,谢谢您,我现在正在这样做,并且在引用和区分时似乎更容易一些,所以再次感谢您
请大家把答案放在答案表格中并标记这个问题已回答。我只是浪费时间阅读所有这些内容。
【参考方案1】:
字段 FLEET NO 有一个空格。带有空格或标点符号/特殊字符的对象名称必须用 [ ] 括起来:[FLEET NO]。建议不要在命名约定中使用这些功能。 – 昨天 6 月 7 日
【讨论】:
以上是关于如何过滤 3 个文本框,然后在 MS Access VBA 中根据它们运行报告的主要内容,如果未能解决你的问题,请参考以下文章