Андрей Попов - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В TableInfo.js для доступа к таблице Phone создается объект Recordset:
//Формируем SQL-запрос к таблице Phone
SSource = "SELECT * FROM Phone";
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = "DSN=PhoneDS";
//Создаем объект Recordset
RS=WScript.CreateObject("ADODB.Recordset");
Перед открытием набора записей с помощью метода Open()нужно установить свойство CursorTypeобъекта Recordsetравным 3 (при этом создается статическая копия таблицы, что позволяет получить информацию о полях и записях):
//Задаем статический курсор
RS.CursorType = 3;
//Открываем набор записей - результат запроса
RS.Open(SSource, SConnect);
После этого в коллекции Fieldsбудут содержаться все поля набора записей Recordset, а в свойстве RecordCount— число записей в этом наборе:
//Определяем число полей в наборе данных
RS_NomFields = RS.Fields.Count;
//Определяем число записей в наборе данных
RS_NomRecs = RS.RecordCount;
В переменной SOutбудет формироваться текст для вывода на экран:
SOut="ТАБЛИЦА Phone СОДЕРЖИТ "+NomFields+" ПОЛЯ(ЕЙ):\n\n";
Для получения списка полей мы перебираем в цикле forвсе элементы коллекции Fields:
//Перебираем все поля набора данных RS
for (i=0; i
//Формируем строку с номером и именем поля таблицы
SOut+"Поле N "+i+": "+RS.Fields(i).Name+"\n";
}
После завершения цикла к переменной SOutдобавляется информация о количестве записей, набор записей RSзакрывается и значение переменной SOutвыводится на экран:
SOut+="\nИ "+NomRecs+" ЗАПИСЬ(ЕЙ)";
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
/*******************************************************************/
/* Имя: TableInfo.js */
/* Язык: JScript */
/* Описание: Получение информации о полях таблицы */
/*******************************************************************/
//Объявляем переменные
var
RS, //Экземпляр объекта Recordset
SSource, //Строка с текстом SQL-запроса к БД
SConnect, //Строка с параметрами соединения с БД
SOut, //Строка, в которой сохраняется выходная информация
NomField, //Количество полей в таблице
NomRecs, //Количество записей в таблице
i;
//Формируем SQL-запрос к таблице Phone
SSource = "SELECT * FROM Phone";
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = "DSN=PhoneDS";
//Создаем объект Recordset
RS=WScript.CreateObject("ADODB.Recordset");
//Задаем статический курсор
RS.CursorType = 3;
//Открываем набор записей-результат запроса
RS.Open(SSource,SConnect);
//Определяем число полей в наборе данных RS
NomFields = RS.Fields.Count;
//Определяем число записей в наборе данных RS
NomRecs = RS.RecordCount;
SOut="ТАБЛИЦА Phone СОДЕРЖИТ "+NomFields+" ПОЛЯ(ЕЙ):\n\n";
//Перебираем все поля набора данных RS
for (i=0; i
//Формируем строку с номером и именем поля таблицы
SOut+="Поле N "+i+": "+RS.Fields(i).Name+"\n";
}
SOut+="\nИ "+NomRecs+" ЗАПИСЬ(ЕЙ)";
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
/************* Конец *********************************************/
Сортировка записей в таблице
Используя предложение 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+="\n\nКоманда:";
//Выводим диалоговое окно для ввода режима сортировки
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.
Имя: SortRecords.wsf
Описание: Сортировка записей таблицы БД по заданному полю
'Функция для реализации диалогового окна со строкой ввода
'в сценариях JScript
Function WSHInputBox(Message,Title)
'Выводим диалоговое окно со строкой ввода
WSHInputBox = InputBox(Message,Title)
End Function
//Объявляем переменные
var
RS, //Экземпляр объекта Recordset
SSource, //Текст SQL-запроса к БД
SConnect, //Строка с параметрами соединения с БД
SOut, //Строка, в которой сохраняется выходная информация
Res, //Результат ввода в диалоговом окне
SSort, //Имя поля таблицы, по которому будет производиться сортировка
SMenu, //Текст сообщения в диалоговом окне ввода
s;
//Формируем текст сообщения в диалоговом окне ввода
Интервал:
Закладка: