Вход/Регистрация
Windows Script Host для Windows 2000/XP
вернуться

Попов Андрей Викторович

Шрифт:

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+")";

//Формируем строку с параметрами соединения с БД

//(указываем нужный DSN)

SConnect = "DSN=PhoneDS";

Создав объект

Recordset
(переменная
RS
), мы присваиваем значение 3 свойству
CursorType
(это позволит узнать количество записей в наборе
RS
после выполнения SQL-запроса):

//Создаем объект Recordset

RS=WScript.CreateObject("ADODB.Recordset");

//Задаем статический курсор

RS.CursorType = 3;

//Открываем набор записей - результат запроса

RS.Open(SSource, SConnect);

//Определяем число записей в наборе

RS_NomRecs = RS.RecordCount;

Если в наборе RS не окажется ни одной записи (нет фамилий, начинающихся на нужные символы), то будет выведено соответствующее сообщение и произойдет выход из сценария:

if (NomRecs==0) {

 WScript.Echo("В таблице Phone нет ни одной фамилии, начинающейся на '"+Res+"'");

 WScript.Quit;

}

Если же подходящие записи найдены, то они, как обычно, обрабатываются в цикле

for
. В результате формируется строка
SOut
со значениями полей
LastName
,
Name
и
Phone
для этих записей:

SOut="ВСЕГО "+NomRecs+" ЗАПИСЕЙ, НАЧИНАЮЩИХСЯ НА '"+Res+"':\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
закрывается, а строка
SOut
выводится на экран:

//Закрываем объект Recordset

RS.Close;

//Выводим на экран строку SOut

WScript.Echo(SOut);

Полностью текст сценария FilterRecords.wsf приведен в листинге 9.6.

Листинг 9.6. Фильтрация записей в таблице

<job id="FiltRecs">

<runtime>

<description>

Имя: FilterRecords.wsf

Описание: Фильтрация записей таблицы Phone по первому символу

фамилии

</description>

</runtime>

<script language="VBScript">

'Функция для реализации диалогового окна со строкой ввода

'в сценариях JScript

  • Читать дальше
  • 1
  • ...
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: