Форма фильтра по месяцам - PullRequest
       10

Форма фильтра по месяцам

0 голосов
/ 01 ноября 2018

У меня проблема с моим фильтром для формы. Форма содержит активность лиц в определенные даты в течение месяца.

У меня есть комбинированный список:
combobox.

Этот комбинированный список RowSource группирует и форматирует даты в название месяца и год (мммм jj):
query

Выпадающий список не связан и имеет событие OnClick:

    Private Sub Kombinationsfeld479_Click()
    Me.Filter = "[tbl_Taetigkeitserfassung.TaetigkeitsDatum] = " 
    & Format(Nz(Me!Kombinationsfeld479, Date), "\#yyyy-mm\#")
    Me.FilterOn = True

Фильтр формы при выборе 18 октября:

[tbl_Taetigkeitserfassung.TaetigkeitsDatum] = #2018-10#

Но, в конце концов, он просто показывает 01.01.2018.
Я знаю, что где-то есть ошибка формата.

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

P.S .: Есть ли возможность добавить выбор «Показать все» в поле со списком?

1 Ответ

0 голосов
/ 01 ноября 2018

Следует использовать событие Combobox 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
...