访问时的VBA-过滤多个条件,其中一个条件可以为Null

时间:2018-09-14 06:34:47

标签: vba ms-access

我的vba代码出现了一些问题。 我可以使用过滤器访问表单。

目前,一个过滤器用于开始/结束日期和一个人。 而且由于我是菜鸟,因此还有一个用于成本中心和开始/结束日期的过滤器。

我想将两者结合起来,但是在这种情况下,成本中心可以为Null,也可以为Null。 我的“主要”过滤器如下所示:

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] =“ Kombinationsfeld145”

感谢帮助!

1 个答案:

答案 0 :(得分:0)

您快到了,那里有一些较小的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或长度为零的字符串,则它不包含在比较中。