Другой способ ускорить загрузку формы Microsoft Access с источником данных
Мне поручено исправить проблему с производительностью в форме Microsoft Access. Страница имеет источник данных, использующий запрос. Запрос объединяет несколько таблиц и выполняет суммирование. Проблема в том, что при загрузке страницы форма использует фиктивное значение, например QueryColumn = 'ImplossibleValue', для отображения пустого списка. Форма содержит фильтр условий поиска и кнопку поиска. Когда кнопка поиска нажата, правильный фильтр установлен.
Поскольку запрос обрабатывает много данных, сначала страница загружается очень медленно, но при открытии формы пользователю предоставляется пустой запрос в качестве дизайна. Есть ли способ открыть форму и сделать так, чтобы у нее не было источника данных?
3 ответа
Вы можете изменить источник записей на запрос, который возвращает нулевые значения и не должен ссылаться ни на одну из ваших таблиц.
SELECT Null AS field1, Null AS field2;
После того, как пользователь выберет свои критерии поиска, измените источник записей на запрос, который включает эти критерии. Изменение источника записей автоматически вызывает запрос.
Если пользователь сохраняет дизайн формы после того, как источник записей был изменен на поисковый запрос, форма будет использовать его снова при следующем открытии. Вы можете заставить форму всегда открываться с помощью фиктивного запроса строки в качестве источника записей, сбрасывая это свойство во время события открытия формы.
Me.RecordSource = "SELECT Null AS field1, Null AS field2;"
Когда вы открываете форму, используйте условие where в операторе docmd.openform. где primarykey = null не будет записей, и вам не нужно отвязывать всю форму.
У меня были подобные проблемы с производительностью в Jet 10 лет назад, и единственное решение, которое я нашел, - это перейти к Access Data Projects.
Увеличьте размер до клиент-серверного приложения с помощью SQL Server, запустите пару мастеров запросов, чтобы определить правильную индексацию, и вы получите отличную производительность в кратчайшие сроки.