//(указываем нужный 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+'': ';

//Перебираем все записи набора данных RS

while (!RS.EOF) {

 //Формируем строку со значениями трех полей, которые разделены

 //символами табуляции

 s=RS.Fields('LastName')+' '+RS.Fields('Name')+' '+ RS.Fields('Phone');

 //В конце строки ставим символ перевода строки

 s+=' ';

 //Добавляем сформированную строку к переменной 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

Function WSHInputBox(Message,Title)

'Выводим диалоговое окно со строкой ввода

WSHInputBox = InputBox(Message,Title)

End Function

</script>

<script language='JScript'>

//Объявляем переменные

var

 RS,       //Экземпляр объекта Recordset

 SSource,  //Текст SQL-запроса к БД

 SConnect, //Строка с параметрами соединения с БД

 SOut,     //Строка, в которой сохраняется выходная информация

 Res,      //Результат ввода в диалоговом окне

 SFilt,    //Шаблон, по которому будет производиться фильтрация

 NomRecs,  //Количество записей в отфильтрованном наборе

 s;

//Выводим диалоговое окно для ввода первой буквы фамилии

Res=WSHInputBox('Введите первые буквы фамилии','Работа с базой данных');

//Формируем шаблон, по которому будет производиться фильтрация

SFilt='''+Res+'%'';

//Формируем SQL-запрос к таблице Phone

SSource = 'SELECT * FROM Phone WHERE (LastName LIKE '+SFilt+')';

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

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

SConnect = 'DSN=PhoneDS';

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

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

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

RS.CursorType = 3;

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

RS.Open(SSource,SConnect);

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

NomRecs = RS.RecordCount;

if (NomRecs==0) {

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

 WScript.Quit();

}

SOut='ВСЕГО '+NomRecs+' ЗАПИСЕЙ, НАЧИНАЮЩИХСЯ НА ''+Res+'': ';

//Перебираем все записи набора данных RS

while (!RS.EOF) {

 //Формируем строку со значениями трех полей, которые разделены

 //символами табуляции

 s=RS.Fields('LastName')+' '+RS.Fields('Name')+' '+RS.Fields('Phone');

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату