<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 - Сортировка по фамилии
';
SMenu+='2 - Сортировка по телефону
';
SMenu+='
Команда:';
//Выводим диалоговое окно для ввода режима сортировки
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:
';
//Перебираем все записи набора данных RS
while (!RS.EOF) {
//Формируем строку со значениями трех полей, которые разделены
//символами табуляции
s=RS.Fields('LastName')+' '+RS.Fields('Name')+' '+RS.Fields('Phone');
//В конце строки ставим символ перевода строки
s+='
';
//Добавляем сформированную строку к переменной SOut
SOut+=s;
//Переходим к следующей записи
RS.MoveNext();
}
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
</script>
</job>
Фильтрация записей в таблице
Оператор SELECT
позволяет выбирать из источника данных не все записи, а лишь те, которые удовлетворяют определенному критерию. Для этой цели в операторе SELECT
применяется оператор WHERE
. Например, следующий SQL-запрос
SELECT * FROM Phone WHERE (LastName LIKE 'П%')
вернет только те записи таблицы Phone, у которых значение поля LastName
начинается на букву 'П' (шаблон '%' означает любое число любых символов).
Мы напишем сценарий FilterRecords.wsf, в котором можно ввести в диалоговом окне один или несколько символов (рис. 9.14) и получить список людей, фамилии которых начинаются с этих символов (рис. 9.15).

Рис. 9.14. Ввод первых символов фамилии для фильтрации записей

Рис. 9.15. Отфильтрованные в сценарии FilterRecords.wsf записи
Как и в сценарии SortRecords.wsf, символы в диалоговом окне вводятся с помощью VBScript-функции WSHInputBox()
:
//Выводим диалоговое окно для ввода первой буквы фамилии
Res=WSHInputBox('Введите первые буквы фамилии', 'Работа с базой данных');
После этого формируется строка с нужным SQL-запросом (переменная SSource
) и строка с параметрами соединения с базой данных (переменная SConnect
):
//Формируем шаблон, по которому будет производиться фильтрация
SFilt='''+Res+'%'';
//Формируем SQL-запрос к таблице Phone
SSource = 'SELECT * FROM Phone WHERE (LastName LIKE '+SFilt+')';
//Формируем строку с параметрами соединения с БД