Форма поиска с отображением таблицы данных

У меня есть форма, которая является формой поиска. В форме есть раскрывающиеся списки имен полей и текстовое поле, в котором можно вводить ключевые слова для поиска. Для каждого поля / значения поиска есть раскрывающийся список логических значений (и, или, не). Когда пользователь нажимает кнопку поиска, выбранные элементы генерируют строку запроса, которая затем запускается:

Set qdf = CurrentDb.QueryDefs("temp_query")
qdf.SQL = SQL_query_string

DoCmd.Close acQuery, "temp_query"
DoCmd.OpenQuery "temp_query", acViewNormal, acReadOnly

SQL_query string создается на основе комбинаций поля / значения.

Приведенный выше код создает новый запрос temp_query, который запускает SQL_query string. Вместо того, чтобы открывать новую панель запроса, я хотел бы отображать результаты запроса в форме в виде таблицы (таблицы). Я думал, что ответом может быть подчиненная форма, но, похоже, нет формата таблицы. Как мне это сделать?

Кажется, это лучшая альтернатива, но я бы хотел что-то, что больше похоже / действует как настоящая таблица данных.

введите описание изображения здесь


person abalter    schedule 16.09.2014    source источник
comment
А как насчет вашей нынешней формы? Разве вы не можете использовать это как разделенную форму?   -  person Mark C.    schedule 16.09.2014
comment
Это хорошая идея. Тогда как мне заполнить форму таблицы данных из строки запроса, сгенерированной формой ввода для поиска?   -  person abalter    schedule 16.09.2014
comment
Я попробовал это решение, но, похоже, Me!DatasheetView.Form не имеет свойства RecordSource.   -  person abalter    schedule 16.09.2014
comment
Думаю, вам стоит попробовать этот метод. На самом деле я думаю, что разделенные формы должны использовать один и тот же источник данных. Я подумал, что вы можете предоставить отдельный источник записей.   -  person Mark C.    schedule 16.09.2014


Ответы (1)


Ага! Правильный синтаксис:

Me.DatasheetView.Form.RecordSource = "temp_query"

Я получил! откуда-то в Интернете, но ясно, что точка - правильный путь.

Вот что я сделал:

У меня уже была основная форма поиска (см. Изображение выше). Я создал новую форму под названием DatasheetView. Затем я добавил подчиненную форму в основную форму поиска, которую я связал (с помощью появившегося мастера) с новой формой DatasheetView. Затем, когда пользователь нажимает кнопку «Поиск», выполняется обратный вызов VBA, который объединяет строку запроса на основе данных, введенных в форму поиска. После объединения строки запроса (SQL_query_string) у меня есть:

CurrentDb.QueryDefs("temp_query").SQL = SQL_query_string
Me.DatasheetView.Form.RecordSource = "temp_query"

Я бы подумал, что мне нужно будет явно обновить запрос DatasheetView сгенерированным SQL, но, похоже, это происходит просто путем установки SQL.

По сути, форма DatasheetView действует как фиктивная форма, которая никогда не просматривается, кроме как через подчиненную форму.

person abalter    schedule 16.09.2014