Книга: Windows Script Host для Windows 2000/XP
Сортировка записей в таблице
Сортировка записей в таблице
Используя предложение ORDER BY
в операторе SELECT
, можно получить из источника данных записи, отсортированные по какому-либо полю. Например, следующий SQL-запрос
SELECT * FROM Phone ORDER BY LastName
вернет упорядоченный по полю LastName
набор, содержащий все записи из таблицы Phone (рис. 9.12).
Рис. 9.12. Сортировка записей таблицы Phone по полю LastName
Мы напишем сценарий SortRecords.wsf, с помощью которого можно будет выводить записи из таблицы Phone, отсортированные либо по фамилии (поле LastName
), либо по телефону (поле Phone
). Выбор осуществляется с помощью ввода соответствующего значения в диалоговом окне (рис. 9.13).
Рис. 9.13. Выбор поля для сортировки
Само диалоговое окно реализуется с помощью VBScript-функции WSHInputBox(Message, Title)
:
Function WSHInputBox(Message, Title)
'Выводим диалоговое окно со строкой ввода
WSHInputBox = InputBox(Message,Title)
End Function
Эта функция вызывается из написанной на JScript части сценария следующим образом:
//Формируем текст сообщения в диалоговом окне ввода
SMenu="1 - Сортировка по фамилииn";
SMenu+="2 - Сортировка по телефонуn";
SMenu+="nnКоманда:";
//Выводим диалоговое окно для ввода режима сортировки
Res=WSHInputBox(SMenu, "Работа с базой данных");
Введенное в диалоговом окне значение записывается в переменную Res
и анализируется в операторе switch
:
//Анализируем введенное значение
switch (Res) {
case "1": {
SSort="LastName";
break;
}
case "2": {
SSort="Phone";
break;
}
default: {
WScript.Echo("Вы ввели неправильное значение!");
WScript.Quit();
}
}
После того как в переменную SSort
занесено имя поля, по которому нужно производить сортировку, мы можем полностью сформировать нужный SQL-запрос к таблице Phone:
//Формируем SQL-запрос к таблице Phone SSource = "SELECT * FROM Phone ORDER BY "+SSort;
Оставшаяся часть сценария взята из сценария ListRecords1.js и комментариев не требует.
Полностью текст сценария SortRecords.wsf приведен в листинге 9.5.
Листинг 9.5. Сортировка записей в таблице по заданному полю
<job>
<runtime>
<description>
Имя: SortRecords.wsf
Описание: Сортировка записей таблицы БД по заданному полю
</description>
</runtime>
<script language="VBScript">
'Функция для реализации диалогового окна со строкой ввода
'в сценариях JScript
Function WSHInputBox(Message,Title)
'Выводим диалоговое окно со строкой ввода
WSHInputBox = InputBox(Message,Title)
End Function
</script>
<script language="JScript">
//Объявляем переменные
var
RS, //Экземпляр объекта Recordset
SSource, //Текст SQL-запроса к БД
SConnect, //Строка с параметрами соединения с БД
SOut, //Строка, в которой сохраняется выходная информация
Res, //Результат ввода в диалоговом окне
SSort, //Имя поля таблицы, по которому будет производиться сортировка
SMenu, //Текст сообщения в диалоговом окне ввода
s;
//Формируем текст сообщения в диалоговом окне ввода
SMenu="1 - Сортировка по фамилииn";
SMenu+="2 - Сортировка по телефонуn";
SMenu+="nnКоманда:";
//Выводим диалоговое окно для ввода режима сортировки
Res=WSHInputBox(SMenu,"Работа с базой данных");
//Анализируем введенное значение
switch (Res) {
case "1": {
SSort="LastName";
break;
}
case "2": {
SSort="Phone";
break;
}
default: {
WScript.Echo("Вы ввели неправильное значение!");
WScript.Quit();
}
}
//Формируем SQL-запрос к таблице Phone
SSource = "SELECT * FROM Phone ORDER BY "+SSort;
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = "DSN=PhoneDS";
//Создаем объект Recordset
RS=WScript.CreateObject("ADODB.Recordset");
//Открываем набор записей-результат запроса
RS.Open(SSource,SConnect);
SOut="ВСЕ ЗАПИСИ ИЗ ТАБЛИЦЫ phone.dbf:n";
//Перебираем все записи набора данных RS
while (!RS.EOF) {
//Формируем строку со значениями трех полей, которые разделены
//символами табуляции
s=RS.Fields("LastName")+"t"+RS.Fields("Name")+"t"+RS.Fields("Phone");
//В конце строки ставим символ перевода строки
s+="n";
//Добавляем сформированную строку к переменной SOut
SOut+=s;
//Переходим к следующей записи
RS.MoveNext();
}
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
</script>
</job>
- Оптимальная структура хранения записей
- Настройка учетных записей пользователей
- Сортировка и фильтрация списка
- ПРИМЕР: СОРТИРОВКА СТРОК
- Настройка учетных записей
- Настройка учетных записей почты
- Сортировка данных
- Сортировка списков данных
- Практическая работа 50. Сортировка списка данных
- Практическая работа 51. Отбор записей из списка с помощью фильтра
- Практическая работа 54. Просмотр и редактирование таблиц. Поиск и сортировка в базе данных
- Контроль учетных записей пользователей (UAC)