2013-07-20 22 views
0

我正尝试将VBA连接到MDB。当我输入下面的代码时,包括ALL或特定年份在内的所有drpdwnYear.Value总是会得到类似的结果。我不明白为什么Else无法过滤drpdwnYear.Value?有人可以帮我弄这个吗?如何使用vba从mdb中提取过滤的表?

顺便说一句,查询提取包含SELECT [Last Name], [First Name], [Middle Name] FROM [Clients]

strDBpath = GetFileValue(SetDatabasePath) 

If strExtractType = "Stretch" Then 
    strQuery = GetFileValue("C:\Clients\resources\QueryExtract.txt") 
    If Sheets("Clients").drpdwnYear.Value = "ALL" Then 
     If Sheets("Clients").drpdwnYear.Value = "ALL" Then 
      strQuery = strQuery & " ORDER BY [Year]" 
     Else 
      strQuery = strQuery & " WHERE [Year] IN ('" & Sheets("Clients").drpdwnYear.Value & "')" 
     End If 
    End If 
End If 

回答

1

卸下外

If Sheets("Clients").drpdwnYear.Value = "ALL" Then 
    ... 
End If 

子句。它打破了你的逻辑。如果该值不是“全部”,它将使代码跳过内部的If ... End If块。

+0

嘿卢克!你是对的。但是,下面的查询可能吗? strQuery = strQuery&“WHERE [Year] IN('”&Sheets(“Clients”)。drpdwnYear.Value&“')” excel数据似乎不适用于查询。有什么建议么? – user2601835

+0

不知道表结构和完整的查询,我会说WHERE子句看起来不错。如果你仍然有问题,也许发布整个SQL语句。 –

相关问题