Андрей Попов - Windows Script Host для Windows 2000/XP
- Название:Windows Script Host для Windows 2000/XP
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2004
- Город:Санкт-Петербург
- ISBN:5-94157-197-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Андрей Попов - Windows Script Host для Windows 2000/XP краткое содержание
В книге описывается сервер сценариев Windows Script Host (WSH) версии 5.6, который является одним из стандартных компонентов Windows ХР, а также может быть установлен в более ранних версиях Windows. Приводятся сценарии на языках VBScript и JScript, иллюстрирующие применение стандартных объектов WSH 5.6, включая создание из сценариев дочерних процессов и запуск сценариев на удаленных компьютерах. В качестве более сложных примеров рассматриваются сценарии, работающие с базами данных, управляющие приложениями Microsoft Office, организующие графический пользовательский интерфейс, использующие технологии ADSI (Active Directory Service Interface) и WMI (Windows Management Instrumentation) для решения задач администрирования. Освещены вопросы практической работы с XML-файлами и создания СОМ-объектов. Особое внимание уделяется вопросам безопасности при работе со сценариями, приводятся конкретные примеры настроек политик безопасности. К книге прилагается дискета с исходными текстами большинства примеров.
Windows Script Host для Windows 2000/XP - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
}
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
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
Перемещение в наборе записей
Во всех рассмотренных выше сценариях мы перемещались в наборе Recordset
сверху вниз, от первой записи к последней. Существует, однако, возможность перемещаться по записям не только вперед, но и назад. Это осуществляется с помощью метода MovePrevious()
, для использования которого нужно установить тип курсора (свойство CursorType
) в объекте Recordset
равным 1, 2 или 3.
Рассмотрим сценарий MoveInTable.js, в котором записи таблицы Phone выводятся в порядке, обратном физическому (рис. 9.16).

Рис. 9.16.Записи таблицы Phone в обратном порядке
Набор записей Recordset в этом сценарии открывается в режиме статической копии таблицы (свойство CursorType
равно 3):
//Формируем SQL-запрос к таблице Phone
SSource = "SELECT * FROM Phone";
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = "DSN=PhoneDS";
//Создаем объект Recordset
RS=WScript.CreateObject("ADODB.Recordset");
//Задаем статический курсор
RS.CursorType = 3;
После открытия набора записей мы переходим к последней записи с помощью метода MoveLast()
:
//Открываем набор записей - результат запроса
RS.Open(SSource, SConnect);
//Переходим на последнюю запись
RS.MoveLast();
После этого записи перебираются в цикле while
:
//Перебираем все записи набора данных RS
while (!RS.BOF) {
//Формируем строку со значениями трех полей, которые разделены
//символами табуляции
s=RS.Fields("LastName")+"\t"+RS.Fields("Name")+"\t"+RS.Fields("Phone");
//В конце строки ставим символ перевода строки
s+="\n";
//Добавляем сформированную строку к переменной SOut
SOut+=s;
//Переходим к предыдущей записи
RS.MovePrevious();
}
Свойство BOF
, используемое в цикле while
, становится равным true
, когда курсор будет находиться перед первой записью таблицы RS
.
После выхода из цикла объект Recordset
закрывается и сформированная строка SOut
выводится на экран:
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
Полностью текст сценария MoveInTable.js приведен в листинге 9.7.
/*******************************************************************/
/* Имя: MoveInTable.js */
/* Язык: JScript */
/* Описание: Перемещение по набору записей в обратном порядке */
/*******************************************************************/
//Объявляем переменные
var
RS, //Экземпляр объекта Recordset
SSource, //Строка с текстом SQL-запроса к БД
SConnect, //Строка с параметрами соединения с БД
SOut, //Строка, в которой сохраняется выходная информация
s;
//Формируем SQL-запрос к таблице Phone
SSource = "SELECT * FROM Phone";
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = "DSN=PhoneDS";
//Создаем объект Recordset
RS=WScript.CreateObject("ADODB.Recordset");
//Задаем статический курсор
RS.CursorType = 3;
//Открываем набор записей-результат запроса
RS.Open(SSource,SConnect);
//Переходим на последнюю запись
RS.MoveLast();
SOut="ВСЕ ЗАПИСИ ИЗ ТАБЛИЦЫ phone.dbf В ОБРАТНОМ ПОРЯДКЕ:\n";
//Перебираем все записи набора данных RS
while (!RS.BOF) {
//Формируем строку со значениями трех полей, которые разделены
//символами табуляции
s=RS.Fields("LastName")+"\t"+RS.Fields("Name")+"\t"+RS.Fields("Phone");
//В конце строки ставим символ перевода строки
s+="\n";
//Добавляем сформированную строку к переменной SOut
SOut+=s;
//Переходим к предыдущей записи
RS.MovePrevious();
}
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
/************* Конец *********************************************/
Доступ к БД без создания DSN
Напомним, что для получения доступа к базе данных мы предварительно создали DSN с именем PhoneDS (рис. 9.9). Однако связываться с базами данных можно и без описания DSN (DSN, Less Database Access). Для этого необходимо в качестве второго параметра метода Open
объекта Recordset
задать строку, в которой явно будут записаны название нужного драйвера и параметры соединения с базой. Для используемой нами базы данных DBF-формата достаточно указать каталог, в котором находятся нужные таблицы (этот параметр называется DefaultDir
). Например, если таблицы расположены в каталоге Tabl на диске С:, то строка SConn
с параметрами соединения имеет следующий вид:
SConn="Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=C:\\Tabl";
К положительным моментам доступа к данным без предварительного создания DSN можно отнести то, что строка соединения с базой формируется во время выполнения сценария (имя базы данных можно передавать в качестве параметра) — это позволяет писать более гибкие сценарии. Кроме этого, сценарий, не требующий предварительной настройки ODBC, легче переносить на другие машины. Недостаток этого подхода состоит в невозможности установить контроль над соединением с базой в той мере, в какой это позволяет сделать ODBC (это становится важным при работе с базой данных, находящейся в сети).
В листинге 9.8 приведен сценарий DSN_Less.js, в котором доступ к таблице Phone осуществляется без использования DSN (предполагается, что файл Phone.dbf находится в текущем каталоге).
/*******************************************************************/
/* Имя: DSN_Less.js */
/* Язык: JScript */
/* Описание: Просмотр записей таблицы без использования DSN */
/*******************************************************************/
//Объявляем переменные
var
WshShell, //Экземпляр объекта WshShell
RS, //Экземпляр объекта Recordset
SSource, //Строка с текстом SQL-запроса к БД
SConnect, //Строка с параметрами соединения с БД
Интервал:
Закладка: