我的表格过滤器出现问题。该表格包含一个月中特定日期的人员活动。
我有一个组合框:
。
此组合框RowSource将日期分组并格式化为月份名称和年份(mmmm jj):
组合框未绑定,并具有以下OnClick事件:
Private Sub Kombinationsfeld479_Click()
Me.Filter = "[tbl_Taetigkeitserfassung.TaetigkeitsDatum] = "
& Format(Nz(Me!Kombinationsfeld479, Date), "\#yyyy-mm\#")
Me.FilterOn = True
选择10月18日时,过滤表单:
[tbl_Taetigkeitserfassung.TaetigkeitsDatum] = #2018-10#
但最后它只显示了01.01.2018。
我知道某处存在格式错误。
感谢您的帮助!
P.S .:是否可以在组合框中添加“全部显示”选择?
答案 0 :(得分:0)
应使用组合框AfterUpdate事件。
Format()函数产生文本字符串,而不是日期。因此,#分隔符不适用,请使用撇号。假定TaetigkeitsDatum字段中的数据是真实的完整日期值,则必须将其设置格式以匹配组合框值。如果组合框中没有选择任何值,则不要执行代码,因此不需要Nz()。
是的,组合框RowSource可以选择“全部显示”。这将需要一个UNION查询。
SELECT "_Show All" AS Data FROM tbl_Taetigkeitserfassung
UNION SELECT Format(TaetigkeitsDatum, "mmmm yyyy") FROM tbl_Taetigkeitserfassung;
然后代码可以处理选择。
If Me.Kombinationsfeld479 = "Show All" Then
Me.FilterOn = False
ElseIf Not IsNull(Me.Kombinationsfeld479) Then
Me.Filter = "Format([TaetigkeitsDatum], 'mmmm yyyy') = '" & Me.Kombinationsfeld479 & "'"
Me.FilterOn = True
End If