我正在尝试根据用户输入的日期和位置将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 & "'"
答案 0 :(得分:0)
如果要将所有项目发送到SQL中,而不是例如:
AND a.[Credited Office] = '001 - Boston'
你需要:
AND a.[Credited Office] IN ('001 - Boston', '002 - New York') 'etc
因此,如果您的输入E6
为空,示例代码如下所示。请注意使用Transpose
函数将Range
转换为Array
,以便您可以使用Join
函数。
If IsEmpty(Range("e6")) Then
Reg = " IN ('" & Join(WorksheetFunction.Transpose(Range("H8:H19").Value), "','") & "')"
End If
您必须稍微调整代码设置CommandText
以处理新的AND
子句。请注意,如果H8:H19
中的列表实际上是Credited Office
字段中出现的每个选项,那么您可以完全删除AND
语句,因为您不需要过滤器。