每月表格过滤

时间:2018-11-01 10:57:51

标签: vba ms-access access-vba

我的表格过滤器出现问题。该表格包含一个月中特定日期的人员活动。

我有一个组合框:
combobox

此组合框RowSource将日期分组并格式化为月份名称和年份(mmmm jj):
query

组合框未绑定,并具有以下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 .:是否可以在组合框中添加“全部显示”选择?

1 个答案:

答案 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