Способ, которым я использую комбинированную фильтрацию в доступе, заключается в том, что сначала я проектирую запрос, который содержит все данные, подлежащие фильтрации.Запрос должен содержать поля, которые будут использоваться для фильтрации.QueryAllData => "SELECT Table.Site, Table.ItemNumber, FROM Table;"Затем сделайте копию запроса и назовите его QueryFilteredData и спроектируйте отчет для отображения данных с помощью QueryFilteredData.Затем создайте форму с помощью поля со списком сайтов, поля со списком ItemNumber и объекта подчиненного отчета и назначьте SourceObject имя отчета.Используйте Список значений в качестве поля со списком Тип источника строки и введите значения для источника строки, чтобы он работал.Чтобы получить отчет для обновления, я всегда отменяю назначение SubReport.SourceOject для обновления QueryFilteredData, а затем переназначаю SubReport.SourceObject
Combobox_Site_AfterUpdate()
Combobox_ItemNumber_AfterUpdate
End Sub
Combobox_ItemNumber_AfterUpdate()
Select Case Combobox_ItemNumber.value
Case Is = "1-10"
Store_Filters 1,10
Case Is = "11-20"
Store_Filters 11,20
Case Is = "21-30"
Store_Filters 21,30
Case Else
Store_Filters 1,10
End Sub
Private Sub Store_Filters(Lowest as integer, Highest as integer)
Dim SRpt_Recset As Object
Dim Temp_Query As Variant
Dim Temp_SourceObject as Variant
Temp_SourceObject = SubReport.SourceObject
SubReport.SourceObject =""
Set SRpt_Recset = CurrentDb.QueryDefs("QueryFilteredData")
Filter_Combo_Box1 = " ((QueryAllData.[Sites])= " & Chr(39) & Combo_Box1 & Chr(39) & ") "
Filter_Combo_Box2 = (Filter_Combo_Box1 AND (QueryAllData.ItemNumber <= Highest)) OR (Filter_Combo_Box1 AND (QueryAllData.ItemNumber >= Lowest));"
Temp_Query = " SELECT " & Query_Name & ".* " & _
"FROM " & Query_Name & " " & _
"WHERE (" & Filter_Combo_Box2 & ") ORDER BY [Field_Name_For_Sorting];"
SRpt_Recset.SQL = Temp_Query
'Debug.print Temp_Query
SubReport.SourceObject = Temp_SourceObject
End Sub
после того, как комбинированные блоки сработают, если данные будут меняться как сайт и номер элемента, тоВозможно, вы захотите изменить Источник строки в полях со списком на Использовать запрос, который использует Выбрать отдельный сайт из QueryAllData.Я не знаю, если Filter_Combo_Box2 шаг, поэтому он может нуждаться в некоторой коррекции.Надеюсь, это поможет.