如何解决如何过滤3个文本框,然后在MS Access VBA中根据它们运行报告
我有 3 个组合框:
- 公司 - cboCOMP - tblCOMPANY
- 类别 - cboCAT - tblCATEGORY
- 车队编号 - cboFLT - tblFLEET_NO
这些 (1&2) 然后通过 cboCOMP 与 tblFLEET_SETUP 的行源进行排序(标准) 我已经设置了每个组合框,以便它们相互过滤,但只要选择了一个值,就只能根据 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",filter
解决方法
Field FLEET NO 有一个空格。带有空格或标点符号/特殊字符的对象名称必须包含在 [ ]: [FLEET NO] 中。建议不要在命名约定中使用这些功能。 – 昨天 6 月 7 日
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。