ОБНОВЛЕНИЕ: 20.03.2009
После подпункта (ниже) я переименовал ListBox. ItemsSelected свойство РАБОТАЕТ. Значение все еще возвращает NULL в коде
Я впервые работаю со списками с множественным выбором в Access. У меня есть форма отчета с некоторыми выпадающими списками, флажками и списком. Список содержит почти 70 элементов - назовем их «Города».
ListBox допускает несколько вариантов выбора. В VBA я беру каждый из параметров - из других элементов управления формы, чтобы создать гигантское условие WHERE, которое подает мой отчет.
Проблема в том, что Access не читает значения, выбранные в ListBox. Когда я пересекаю эту строку кода, значение равно NULL.
Пока:
Dim s As Variant
s = Me.City.Value & ""
Это то, где я знаю, что ошибся, но, не имея дело с множественным выбором ListBox прежде, я не знаю синтаксис для чтения значений.
Далее: проверить, выбраны ли значения в списке "s":
If s <> "" Then
Проверьте другие параметры в текущем состоянии WHERE. ЕСЛИ не существует, ТО
If c.WhereCondition = "" Then
c.WhereCondition =
Установите условие WHERE, сравнивая значения списка (которые являются строками) со значениями «да / нет» эквивалентных полей в исходной таблице.
Мне нужно сравнить значения Списка с 70 полями в таблице - чтобы извлечь те записи, которые совпадают.
Нет, здесь нет 1 поля, скажем, Cities, с 70 возможными значениями. Вместо этого у каждого из 70 возможных городов есть свое собственное поле Да / Нет. Я унаследовал эту БД. Вот как это было построено.
В настоящее время моя попытка выглядит следующим образом:
c.WhereCondition = "( City1 = -1 OR City2 = -1 OR City3 = -1 OR .....)
`ЕСЛИ в текущем предложении WHERE есть параметры, ТО сравнивать значения в таблице List to Source и ИЛИ ПРИЛОЖИТЬ результат в условие WHERE с помощью« И »
ELSE
c.WhereCondition = c.WhereCondition & " AND (City1 = -1 OR City2 = -1, OR ...)
End If
End If
Я надеюсь, что смог объяснить это достаточно хорошо. Первой проблемой является чтение значений. Я не буду знать, правильна ли моя попытка сравнения без этого.