Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在MS Access VBA中筛选3个文本框,然后根据它们运行报告_Sql_Ms Access_Report_Vba7 - Fatal编程技术网

Sql 如何在MS Access VBA中筛选3个文本框,然后根据它们运行报告

Sql 如何在MS Access VBA中筛选3个文本框,然后根据它们运行报告,sql,ms-access,report,vba7,Sql,Ms Access,Report,Vba7,我有3个组合框: 公司-cboCOMP-tblCOMPANY 类别-cboCAT-TBL类别 机队编号-cboFLT-tblFLEET\U编号 然后,这些(1和2)通过cboCOMP和tblFLEET_设置的行源进行排序(标准) 我已经设置了每个组合框,以便它们相互过滤,但只有在cboCOMP选择了一个值的情况下,才能够根据cboCOMP找出如何进行过滤 基本上,我希望组合框(1、2和3)在下拉列表中显示它们各自的完整选项列表,即使cboCOMP没有选择值,但我希望组合框根据每个单独的组合框进行

我有3个组合框:

  • 公司-cboCOMP-tblCOMPANY
  • 类别-cboCAT-TBL类别
  • 机队编号-cboFLT-tblFLEET\U编号
  • 然后,这些(1和2)通过cboCOMP和tblFLEET_设置的行源进行排序(标准) 我已经设置了每个组合框,以便它们相互过滤,但只有在cboCOMP选择了一个值的情况下,才能够根据cboCOMP找出如何进行过滤

    基本上,我希望组合框(1、2和3)在下拉列表中显示它们各自的完整选项列表,即使cboCOMP没有选择值,但我希望组合框根据每个单独的组合框进行相应的筛选。这是可能的,我该怎么做

    选择要筛选的值后,我将单击“运行报告”,但每次执行此操作时,唯一出现运行报告错误的组合框是我为cboFLT选择了一个值。如果我将cboFLT留空,但在其他两个组合框中输入一个值,则报告运行正常。 这是我使用的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
    
    Private Sub btnRUN\u Click()
    作为字符串的Dim vcomp
    将vcat设置为字符串
    将vflt设置为字符串
    将筛选器设置为字符串
    如果Me.cboCOMP.Value为“”,则
    vcomp=“”&Me.cboCOMP.Value&“”
    'MsgBox vcomp
    filter=“COMPANY=”&vcomp&“
    'MsgBox筛选器
    如果结束
    '新的IF语句
    如果Me.cbocate.Value为“”,则
    vcat=“”&Me.cbocate.Value&“”
    如果过滤器为“”,则
    过滤器=过滤器&“和”
    'MsgBox筛选器
    如果结束
    filter=filter&“CATEGORY=“&vcat&”
    'MsgBox筛选器
    如果结束
    '新的IF语句
    如果Me.cboFLT.Value为“”,则
    vflt=“”&Me.cboFLT.Value&“”
    如果过滤器为“”,则
    过滤器=过滤器&“和”
    'MsgBox筛选器
    如果结束
    filter=filter&“震源组编号=&vflt&”
    'MsgBox筛选器
    如果结束
    DoCmd.OpenReport“rptQuick_Fuel_Report”,acViewPreview,过滤器
    DoCmd.关闭acForm,“快速燃料查找”,acSaveNo
    端接头
    
    错误代码为“

    运行时错误“3705”:查询中出现语法错误(缺少运算符) 表达式'COMPANY='JB'和CATEGORY='SOAP'和FLEET NO='Q 16''

    单击“调试”时,代码中的错误行为:

    DoCmd.OpenReport“rptQuick\u Fuel\u Report”,acViewPreview,filter

    字段震源组编号有空格。带有空格或标点/特殊字符的对象名称必须包含在[]中:[震源组编号]。建议不要在命名约定中使用这些功能。–昨天6月7日

    字段震源组编号有空格。带有空格或标点符号/特殊字符的对象名称必须包含在[]:
    [震源组编号]
    。建议不要在命名约定中使用这些功能。而且,所有大写字母都更难阅读。最好是tblCompany。表名也习惯使用复数:tblCompanies、tblCategories等。OMG!!!我觉得自己像个傻瓜,我真的不敢相信仅仅添加[]对舰队来说,没有让报告起作用!!!非常感谢,你不知道我有多感激!!!关于你对复数和所有大写的其他评论,谢谢你,我现在正在这样做,在引用和区分时似乎更容易一些,再次谢谢你,请大家给出答案在答题表上标出这个问题的答案。我只是白白浪费时间阅读所有这些。