2013-07-20 14 views
0

Я пытаюсь подключить VBA к MDB. Когда я набираю код ниже, все drpdwnYear.Value, включая ВСЕ или конкретный год, всегда получают одинаковые результаты. Я не понимаю, почему Else не может фильтровать drpdwnYear.Value? Может кто-то помочь мне с этим?Как извлечь отфильтрованные таблицы из mdb с помощью vba?

К слову, Query Extract содержит 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 

. Это нарушает вашу логику. Если значение не является «ALL», это приведет к тому, что код пропускает внутренний блок If ... End If.

+0

Эй, Лука! Ты прав. Однако возможен ли запрос ниже? strQuery = strQuery & "WHERE [Year] IN ('" & Sheets ("Clients"). DrpdwnYear.Value & "')" Данные Excel не работают с запросом. Какие-либо предложения? – user2601835

+0

Не зная ни структуры таблицы, ни полного запроса, я бы сказал, что предложение WHERE выглядит нормально. Возможно, опубликуйте весь запрос SQL, если у вас все еще есть проблемы. –

Смежные вопросы