MS ACCESS - Как отфильтровать таблицу данных splitform по нескольким значениям combobox - PullRequest
0 голосов
/ 10 июля 2020

У меня есть сплит-форма с некоторыми текстовыми полями и одним комбинированным списком. Поле со списком связано с запросом той же формы (qryPurchase) и показывает 3 столбца полей запроса:

ID_purchase, Purchase_Type, Date_Purchase

В запросе есть другие поля, такие как Purchase_Item, Quantity и так далее, но есть только 2 вида значений Purchase_Type: «продать» и «заимствовать». Разные Purchase_Item могут иметь одинаковые ID_purchase и Date_Purchase как счет-фактура.

пример списка со списком:

ID_purchase, Purchase_Type, Date_Purchase
1, sell, 08/01/2020
1, sell, 09/01/2020
1, borrow, 09/01/2020
2, sell, 10/01/2020
2, borrow, 11/01/2020

Когда я выбираю строку из раскрывающегося меню поле со списком, я хочу, чтобы он отфильтровал таблицу данных разделенной формы ниже по значениям строки поля со списком, чтобы получить отфильтрованный список данных всех ID_purchase, Purchase_Type и Date_Purchase, которые соответствуют значениям строки со списком.

как в в приведенном выше списке, если я выберу первую строку, таблица ниже покажет 2 записи.

Я пытался добиться этого следующим образом:

Private Sub fltDocCombo_AfterUpdate()

Me.Form.Filter = "[ID_purchase] =" & Me.fltDocCombo.Column(0) _
& " AND [Purchase_Type] = " & "'" & Me.fltDocCombo.Column(1) & "'" _
& " AND [Date_Purchase] = " & "#" & Me.fltDocCombo.Column(2) & "#"

Me.Form.FilterOn = True
End Sub

Private Sub Form_Close()
Me.Form.Filter = ""
Me.Form.FilterOn = False
End Sub

Private Sub Form_Open(Cancel As Integer)
Me.Form.Filter = ""
Me.Form.FilterOn = False
End Sub

Иногда это работает, иногда нет, кажется, что значение Me.Form.Filter заблокировано для первой ID_purchase в списке ..

как в приведенном выше примере:

ID_purchase, Purchase_Type, Date_Purchase
1, sell, 08/01/2020
1, sell, 09/01/2020
1, borrow, 09/01/2020
2, sell, 10/01/2020
2, borrow, 11/01/2020

Если я пытаюсь выбрать вторую строку, применяется фильтр значения первой строки .. Но не каждый раз ..

Иногда кажется, что фильтр Date_Purchase ничего не фильтрует ..

Я подумал применить фильтры последовательно, как ID _purchase first, Purchase_Type второй и Date последний, но когда он применяет второй фильтр, он отменяет первый и так далее ..

В этом случае я не знаю, как добавить еще один фильтр к существующему один ..

справка ..

1 Ответ

0 голосов
/ 10 июля 2020

Решено ..

проблема заключалась в формате Date_Purchase даты ..

MS-ACCESS был установлен для моего местного языка и формата даты (дд / мм / гггг), но в VBA формат даты по умолчанию всегда мм / дд / гггг

, поэтому я изменил значение Me.Form.Filter следующим образом:

Me.Form.Filter = "[ID_turnin_temploan] =" & Me.fltDocCombo.Column(0) _
& " AND [Posizione] = " & "'" & Me.fltDocCombo.Column(1) & "'" _
& " AND [Data_turnin_temploan] = " & "#" & Format(Me.fltDocCombo.Column(2), "mm/dd/yyyy") & "#"

, и теперь оно работает!

...