Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

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

Сортировка и фильтрация данных в Recordset из VBScript, свойства Sort и Filter, ограничения сортировки и фильтрации данных

Данные в Recordset помещаются в том порядке, как они пришли из источника. Если специальный порядок сортировки в запросе не указан, то данные возвращаются в соответствии с параметрами источника данных (например, на SQL Server они будут по умолчанию упорядочены по кластерному индексу, который по умолчанию создается для первичного ключа). Можно произвести сортировку на сервере (указав в запросе выражение ORDER BY), а можно - сортировку на клиенте (при помощи свойства Sort объекта Recordset).

Общее правило выглядит так: если есть возможность, всегда нужно выполнять сортировку на сервере. Сервер намного лучше оптимизирован для выполнения подобных операций, на нем обычно больше оперативной памяти и процессорных ресурсов. На клиенте сортировку выполнять следует только тогда, когда это невозможно сделать на сервере (например, вы получаете данные от хранимой процедуры, в тексте которой сортировка не предусмотрена). Однако, в принципе, сортировка в Recordset менее ресурсоемка, чем могла бы быть (данные физически не перемещаются, только создается новый индекс для поля, по которому производится сортировка), поэтому ее вполне можно использовать.

Применение свойства Sort связано с серьезным ограничением: его можно использовать только тогда, когда курсор открыт на клиенте. Кроме того, при открытии соединения с базами данных SQL Server или Microsoft Access по OLE DB применение этого свойства специально запрещено (чтобы фильтрация производилась на сервере).

Работа с этим свойством выглядит очень просто:

rs.Sort = "CompanyName"

При этом, то что передается этому свойству, должно быть названием столбца (то есть именем объекта Field) в Recordset.

Можно передавать несколько названий столбцов и порядок сортировки:

rs.Sort = "Country ASC, CompanyName DESC"

Recordset вначале будет отсортирован по стране, а потом - по имени компании в убывающем порядке ( по умолчанию используется ASC - по возрастанию).

Чтобы отменить сортировку (и вернуться к записям в том порядке, в котором они были возвращены с источника), достаточно присвоить этому свойству пустое значение:

rs.Sort = ""

В Recordset записи можно фильтровать. Отфильтрованные записи остаются в Recordset, но являются невидимыми при выполнении операции перемещения и поиска и курсор на отфильтрованных записях не установить. В принципе, всего можно обойтись фильтрацией записей в запросе к источника или вставить дополнительные проверки при операциях перемещения, но иногда с синтаксической точки зрения удобнее использовать именно фильтрацию. Для фильтрации используется свойство Filter.

Это свойство может принимать три типа значений:

·        строковое значение, по синтаксису аналогичное передаваемому методу Find:

rs.Filter = "LastName = 'Smith' AND FirstName = 'John'"

Можно использовать оператор Like с подстановочными символами  (только * и %). Отличие от Find заключается в том, что в Find просто устанавливается курсор на первую найденную подходящую запись, а в Filter все неподходящие становятся невидимыми.

·        массив закладок;

·        несколько (5) специальных значений - все конфликтующие записи, записи, ожидающие сохранения на источнике и т.п.

Снять фильтрацию можно точно так же, как и сортировку:

rs.Filter = ""

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru