我的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”
感谢帮助!
答案 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
或长度为零的字符串,则它不包含在比较中。