VBA при доступе - фильтр с несколькими критериями, где один критерий может быть нулевым - PullRequest
0 голосов
/ 14 сентября 2018

У меня проблемы с моим VBA-кодом. Я получил форму при доступе с фильтром.

В данный момент один фильтр предназначен для даты начала / окончания и персоны. И поскольку я новичок, есть другой Фильтр для МВЗ и даты начала / окончания.

Я хочу объединить оба, но с учетом случая центр затрат может быть нулевым или нет. Мой "главный" фильтр выглядит так:

Private Sub Befehl51_Click()
If Nz(Me.txtvon, "") = "" Then             //StartDate
   MsgBox "Bitte Datumsbereich wählen!"
   Exit Sub
End If

If Nz(Me.txtbis, "") = "" Then            //EndDate
   MsgBox "Bitte Datumsbereich wählen!"
   Exit Sub
End If
 Me.Filter = "[TaetigkeitsDatum] between " & Format(Nz(Me!txtvon, Date),"\#yyyy-mm-dd\#") & " 
and " & Format(Nz(Me!txtbis, Date), "\#yyyy-mm-dd\#") & " And " & "[PersonalID] = " & Me.Liste0 & ""
Me.FilterOn = True
End Sub

Синтаксис критериев стоимости выглядит следующим образом:

[TaetigkeitsKostenstellenIDRef] = "Kombitionsfeld145"

Спасибо за помощь!

1 Ответ

0 голосов
/ 14 сентября 2018

Вы почти у цели, есть только некоторые незначительные синтаксические ошибки SQL.

Я написал это в отдельных строках, чтобы повысить удобочитаемость и облегчить понимание

Me.Filter = "[TaetigkeitsDatum] BETWEEN " & Format(Nz(Me!txtvon, Date),"\#yyyy-mm-dd\#") & " AND " & Format(Nz(Me!txtbis, Date), "\#yyyy-mm-dd\#") & _
            " AND [PersonalID] = " & Me.Liste0
If IsNumeric(Me!Kombinationsfeld145) Then
    Me.Filter = Me.Filter & " AND [TaetigkeitsKostenstellenIDRef] =" & Me!Kombinationsfeld145
End If

Некоторые изизменения, которые я сделал:

Интервал отключен.Перед каждым And и именем переменной должен быть пробел.

" & " между And и именем переменной не нужен, удалите это.

Я только включилсравнение на Me!Kombinationsfeld145, если оно числовое.Таким образом, если это Null или строка нулевой длины, она не будет включена в сравнение.

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