Сортировка и фильтрация данных в формах и отчетах


В нашем достаточно беглом обзоре проектов Access нельзя не остановиться еще на двух вопросах:

  • Как отфильтровать данные на сервере, для того чтобы передавать минимум данных клиенту?
  • Как отсортировать записи в формах и отчетах?

Фильтровать данные лучше с помощью предложений SQL и хранимых процедур, на которых базируются формы и ‘Отчеты. Если нужно, используйте в них параметры. Еще один способ — определить так называемый серверный фильтр. Для этого необходимо задать значение свойства Серверный фильтр (Server Filter) формы или отчета. Свойство Серверный фильтр представляет собой строковое выражение, определяющее условие выборки. Фильтр сохраняется в форме или отчете и при загрузке формы в ней будут отображаться только отфильтрованные записи.
Если вы хотите изменять фильтр каждый раз при загрузке формы, необходимо присвоить значение Да свойству Серверный фильтр по форме (ServerFilterByForm). В этом случае при загрузке появится диалоговое окно, в котором можно задать условия отбора записей. После этого необходимо нажать кнопку Применить серверный фильтр (Apply Server Filter) на панели инструментов. При этом введенные условия сохраняются в свойстве Серверный фильтр (Server Filter) формы и показывается форма с отфильтрованными записями.
Замечание
Нельзя применять серверный фильтр в формах или отчетах, которые созданы на основе хранимой процедуры.
Уже после того как записи отфильтрованы на сервере, можно их еще раз отфильтровать локально, используя методы Фильтр по выделенному (Filter by Selection), Изменить фильтр (Filter by Form) или Исключить выделенное (Filter For Input).
Для того чтобы сортировка записей выполнялась на сервере, нужно использовать в качестве источника записей формы (отчета) представление, хранимую процедуру, определенную пользователем функцию или предложение SQL. В противном случае сортировка будет выполняться локально.
 
Повышение производительности приложения "клиент-сервер"
Существует набор общих правил, относящихся к приложениям "клиент-сервер", которые нужно соблюдать, чтобы уменьшить нагрузку на сеть и увеличить производительность приложения. Эти правила таковы: необходимо перенести по возможности обработку данных на сервер, минимизировать количество обращений к серверу (roundtrip) для доступа к данным и ограничить объем данных, загружаемых с сервера.
 
Минимизация количества обращений к серверу для доступа к данным
Связь проекта Access 2010 с базой данных на SQL Server осуществляется посредством OLE DB. При доступе к данным из формы, таблицы или страницы доступа к данным OLE DB предоставляет так называемый обновляемый статический набор записей (updateable snapshot recordset), полученный с помощью одного обращения к базе данных на SQL Server. Этот набор записей кэшируется на клиентском приложении. В Access данные загружаются в асинхронном режиме, что позволяет пользователю выполнять другие действия с базой данных в процессе загрузки данных с сервера. Просмотр, фильтрация, сортировка, поиск и обновление данных в форме, таблице или странице доступа к данным производятся с кэшированными на клиентской стороне данными. Таким образом, использование обновляемого статического набора записей минимизирует количество обращений к серверу для доступа к данным.
Осуществление обработки данных на сервере

Чтобы осуществить обработку данных на сервере, используйте хранимые процедуры, определяемые пользователем функции и инструкции SQL, а также выполняйте сортировку данных на сервере перед загрузкой их с сервера. Сортировка данных на сервере выполняется с помощью хранимой процедуры, определяемой пользователем функции или предложения SQL, заданного в свойстве Источник записей (RecordSource) формы или отчета (это предложение выполняется на сервере).