Неполное раскрывающееся меню «Фильтр поиска» в программно измененной базе данных SQL Server Access - PullRequest
0 голосов
/ 20 октября 2010

В этом потоке у пользователя возникли проблемы с отсутствием фильтра поиска в базе данных доступа, имеющей серверную часть SQL. Эту проблему легко решить, просто отметив опцию в текущих настройках базы данных, которая позволяет полям ODBC также предоставлять раскрывающиеся списки фильтров поиска.

Для тех, кто запутался, фильтр поиска - это функция, подобная Excel, в представлении таблицы данных, которая позволяет щелкнуть по раскрывающемуся имени поля и выбрать отдельные значения из этого поля для фильтров с помощью флажка.

У меня, однако, немного другая проблема. Флажок, разрешающий поиск фильтра полей ODBC, активен в настройках, так что это не проблема. Если у меня есть форма, которая извлекает данные из запроса, фильтры поиска работают нормально и предварительно заполняются значениями в этом поле для выбора фильтра. Если этот источник записи изменяется в VBA, например, скажем, оператор SQL, который точно соответствует этому запросу, фильтр поиска больше не работает. Я попытался создать набор записей и прикрепить его к той же форме, создать оператор SQL и присоединить его к источнику записи, а также открыть форму с аргументами, которые затем используются в событии загрузки формы для изменения источника записи, все с тот же результат отсутствия фильтра поиска.

Я что-то пропускаю?

1 Ответ

1 голос
/ 20 октября 2010

После того, как HansUp ответил, я попытался выяснить, что он имел в виду, и столкнулся с ним довольно случайно.

Поскольку форма открывается другой формой, в которой предварительно создан оператор SQL, я просто назначил формубазовый запрос к объекту QueryDef и применил предварительно сгенерированный оператор SQL к свойству SQL объекта.Когда форма впоследствии была открыта, использовался новый оператор SQL, и все фильтры поиска работали правильно.Мне было очень приятно: D

Вот краткий код:

Dim db as Database
Dim qDef as QueryDef
Dim strSQL as String

'generate SQL statement and assign it to strSQL here'

Set qDef = db.QueryDefs("qryMyQuery")
qDef.SQL = strSQL
DoCmd.OpenForm "frmMyForm"  'frmMyForm is based of qryMyQuery'

Спасибо, HansUp!

...