Доступ к динамическому списку фильтрации с двойным предложением where - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть функция динамической фильтрации текстовых полей в VBA

Dim sSQL As String
sSQL = "SELECT qry_allUtilities.ID, qry_allUtilities.Supplier AS Lieferant, qry_allUtilities.Cabinet AS Ablageort, qry_allUtilities.Size AS Grösse, qry_allUtilities.WorkingLength AS Nutzlänge, qry_allUtilities.Description AS Bezeichnung "
sSQL = sSQL & "  FROM qry_allUtilities "
If Not sFilter = "" Then
    Dim arrFilter
    arrFilter = Split(sFilter, "+")
    Dim varWort
    For Each varWort In arrFilter
        If Not varWort = "" Then
            Dim sWort As String
            sWort = varWort
            sSQL = sSQL & " AND [ID] & ' ' & [Supplier] & ' ' & [Floor] & ' ' & [Cabinet] & ' ' & [Size] & ' ' & [WorkingLength] LIKE '*" & sWort & "*'"
        End If
    Next
    sSQL = Replace(sSQL, " AND ", " WHERE ", 1, 1, vbTextCompare)
End If
ctlListe.RowSource = sSQL

, и я хотел бы расширить это с помощью другого предложения WHERE, потому что я должен исключить записи с помощью qry_allUtilities.InActive=False

Как мне это сделать? Я всегда получаю ноль, или это не исключает записи с InActive=True: /

1 Ответ

1 голос
/ 11 ноября 2019

Я обычно делаю это, чтобы добавить переменное (но неизвестное) количество параметров фильтра:

strFilter = ""    ' build the filter string in here

if <first condition reason is true> then 
    strFilter = strFilter + first condition + " AND "
end if

if <second condition reason is true> then 
    strFilter = strFilter + <second condition> + " AND "
end if 

' finish up
if len(strFilter) > 0 then    ' some critera are valid
    strFilter = Left(strFilter, Len(strFilter) - 5) ' chop off the spare " AND "
    strFilter = " WHERE " + strFilter    ' put the " WHERE " on the front
' else   ' no where clause
end if

Обратите внимание, что пробелы по обе стороны от «И» и «ГДЕ» важны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...