Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
如何在VBA中使用SQL查询从下拉列表中选择所有值或仅选择单个值?_Sql_Excel_Vba - Fatal编程技术网

如何在VBA中使用SQL查询从下拉列表中选择所有值或仅选择单个值?

如何在VBA中使用SQL查询从下拉列表中选择所有值或仅选择单个值?,sql,excel,vba,Sql,Excel,Vba,我试图根据用户输入的日期和位置将sql表拉入excel工作表 Cell E6有一个数据验证下拉列表,其中列出了一些位置,如空白区域,然后是波士顿、芝加哥、休斯顿、纽约和洛杉矶。该列表是根据H8:H19中的值定义的 以下代码实际上适用于Else部分,其中结果根据用户选择的位置(而不是空格)进行过滤 但当单元格E6为空时,即未选择任何位置时,它应输出所有位置的数据。如对此有任何建议或意见,将不胜感激 If IsEmpty(Range("E6")) Then Reg = Range("H8:H19")

我试图根据用户输入的日期和位置将sql表拉入excel工作表

Cell E6有一个数据验证下拉列表,其中列出了一些位置,如空白区域,然后是波士顿、芝加哥、休斯顿、纽约和洛杉矶。该列表是根据H8:H19中的值定义的

以下代码实际上适用于Else部分,其中结果根据用户选择的位置(而不是空格)进行过滤

但当单元格E6为空时,即未选择任何位置时,它应输出所有位置的数据。如对此有任何建议或意见,将不胜感激

If IsEmpty(Range("E6")) Then Reg = Range("H8:H19").Value Else Reg = Range("E6").Value
我将数据拉入Excel的SQL查询代码如下:

     objMyCmd.CommandText = " SELECT a.[RDT_FileID],a.[Master Policy Number], a.[Work item /Submission no#],a.[Insured Name], a.[Credited Office]," & _
                                " a.[Credited Underwriter], a.[Product Line], a.[Product Line Subtype], a.[Current Status], a.[Effective Date], a.[Expiry Date],  a.[Premium in USD $] " & _
                                " FROM  DB1.dbo.View_Property_Rater_Of_Record a " & _
                                " WHERE a.[Master Policy Number] Is Not Null " & _
                                " AND a.[RDT_FileID] is null " & _
                                " AND a.[Product Line Subtype] <>  '0102-Marine' " & _
                                " AND a.[Effective Date] >= " & PED(0) & " and a.[Effective Date] <= " & PED(1) & " " & _
                                " AND a.[Current Status] ='Bound' " & _
                                " AND a.[Credited Office] = '" & Reg & "'"

如果要将所有项目发送到SQL中,请使用,而不是,例如:

AND a.[Credited Office] = '001 - Boston'
你需要:

AND a.[Credited Office] IN ('001 - Boston', '002 - New York') 'etc
因此,如果输入E6为空,示例代码如下所示。请注意,使用转置函数将范围转换为数组,以便可以使用连接函数

If IsEmpty(Range("e6")) Then
    Reg = " IN ('" & Join(WorksheetFunction.Transpose(Range("H8:H19").Value), "','") & "')"
End If

您必须稍微调整代码,设置CommandText以处理新的AND子句。请注意,如果您在H8:H19中的列表实际上是在您的Credited Office字段中出现的每个选项,那么您可以完全删除AND语句,因为您不需要过滤器。

如果您想将所有项目发送到SQL中,那么,而不是例如:

AND a.[Credited Office] = '001 - Boston'
你需要:

AND a.[Credited Office] IN ('001 - Boston', '002 - New York') 'etc
因此,如果输入E6为空,示例代码如下所示。请注意,使用转置函数将范围转换为数组,以便可以使用连接函数

If IsEmpty(Range("e6")) Then
    Reg = " IN ('" & Join(WorksheetFunction.Transpose(Range("H8:H19").Value), "','") & "')"
End If

您必须稍微调整代码,设置CommandText以处理新的AND子句。请注意,如果H8:H19中的列表实际上是Credited Office字段中出现的每个选项,那么您可以完全删除AND语句,因为您不需要过滤器。

您的sql语句不应该是like和a.[Credited Office]=*您的sql语句不应该是like和a.[Credited Office]=*