Я делаю форму с двумя комбинированными полями с несколькими вариантами выбора: Категория и Подкатегория. Я хотел бы обновить поле Подкатегория со всеми соответствующими значениями для каждого выбранного параметра в поле Категория. Моя таблица подкатегорий настроена так, что каждая подкатегория имеет категорию, к которой она принадлежит.
Если я выбираю только одну категорию, параметры подкатегории отображаются правильно. Однако, если я выберу несколько категорий, я увижу только параметры подкатегории, относящиеся к первой категории в списке. Если снять флажок с первой категории, показанные параметры подкатегории будут такими же, как у второй категории, и т. Д.
Private Sub CategoryCombo_AfterUpdate()
Dim AppsArray() As String
Dim length As Integer, counter As Integer
With SubCombo
If IsNull(Me!Category) Then
.RowSource = ""
Else
AppsArray() = Split(Me!Category, ",")
.RowSource = "SELECT [SubCategory].[SubCategory] " & _
"FROM [SubCategory] " & _
"WHERE ([SubCategory].[Category]='" & AppsArray(0) & "')"
length = UBound(AppsArray) - LBound(AppsArray) + 1
For counter = 1 To length - 1
.RowSource = .RowSource & " OR ([SubCategory].[Category]='" & AppsArray(counter) & "')"
Next
.RowSource = .RowSource & " ORDER BY [SubCategory].[Category];"
End If
MsgBox SubCombo.RowSource
Call .Requery
End With
End Sub
В выводе MsgBox отображается
"SELECT [SubCategory]. [Подкатегория] ОТ [Подкатегория] ГДЕ ([Подкатегория]. [Категория] = 'Категория1') ИЛИ ([Подкатегория]. [Категория] = 'Категория2') ИЛИ ([Подкатегория]. [Категория] = 'Категория3')ORDER BY [SubCategory]. [Category]
Это то, что я и имел в виду, но отображаются только опции подкатегории Category1.