Андрей Попов - Windows Script Host для Windows 2000/XP
//Определяем число полей в наборе данных
RS_NomFields = RS.Fields.Count;
//Определяем число записей в наборе данных
RS_NomRecs = RS.RecordCount;
В переменной SOut будет формироваться текст для вывода на экран:
SOut="ТАБЛРЦА Phone СОДЕРЖРРў "+NomFields+" ПОЛЯ(ЕЙ):nn";
Для получения списка полей мы перебираем в цикле for все элементы коллекции Fields:
//Перебираем все поля набора данных RS
for (i=0; i<RS.Fields.Count; i++) {
 //Формируем строку с номером и именем поля таблицы
 SOut+"Поле N "+i+": "+RS.Fields(i).Name+"n";
}
После завершения цикла к переменной SOut добавляется информация о количестве записей, набор записей RS закрывается и значение переменной SOut выводится на экран:
SOut+="nР "+NomRecs+" Р—РђРџРРЎР¬(ЕЙ)";
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
Листинг 9.4. Получение информации о полях таблицы/*******************************************************************/
/* РРјСЏ: 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+" ПОЛЯ(ЕЙ):nn";
//Перебираем все поля набора данных RS
for (i=0; i<RS.Fields.Count; 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+="nnКоманда:";
//Выводим диалоговое окно для ввода режима сортировки
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.
Листинг 9.5. Сортировка записей в таблице по заданному полю<job id="SortRecs">
<runtime>
<description>
РРјСЏ: SortRecords.wsf
Описание: Сортировка записей таблицы БД по заданному полю
</description>
</runtime>
<script language="VBScript">
'Функция для реализации диалогового окна со строкой ввода
'в сценариях JScript
Function WSHInputBox(Message,Title)
'Выводим диалоговое окно со строкой ввода
WSHInputBox = InputBox(Message,Title)
End Function