/* Имя: ListRecords2.js */
/* Язык: JScript */
/* Описание: Просмотр записей из таблицы базы данных */
/* с использованием объекта Connection */
/*******************************************************************/
//Объявляем переменные
var
RS, //Экземпляр объекта Recordset
Connect, //Экземпляр объекта Connection
SSource, //Строка с текстом SQL-запроса к БД
SConnect, //Строка с параметрами соединения с БД
SOut, //Строка, в которой сохраняется выходная информация
s;
//Формируем SQL-запрос к таблице Phone
SSource = 'SELECT * FROM Phone';
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = 'DSN=PhoneDS';
//Создаем объект Connection
Connect=WScript.CreateObject('ADODB.Connection');
//Устанавливаем связь с БД
Connect.Open(SConnect);
//Выполняем SQL-запрос, в результате создается объект Recordset
RS=Connect.Execute(SSource);
SOut='ВСЕ ЗАПИСИ ИЗ ТАБЛИЦЫ phone.dbf:
';
//Перебираем все записи набора данных RS
while (!RS.EOF) {
//Формируем строку со значениями трех полей, которые разделены
//символами табуляции
s=RS.Fields('LastName')+' '+RS.Fields('Name')+' '+RS.Fields('Phone');
//В конце строки ставим символ перевода строки
s+='
';
//Добавляем сформированную строку к переменной SOut
SOut+=s;
//Переходим к следующей записи
RS.MoveNext();
}
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
/************* Конец *********************************************/
Получение информации о полях и записях таблицы
Иногда бывает необходимо определить число и названия полей или подсчитать общее число записей в таблице. Приведенный в листинге 9.4 сценарий TableInfo.js выводит на экран диалоговое окно, где приведены названия всех полей и общее количество записей таблицы Phone.dbf (рис. 9.11).

Рис. 9.11. Информация о полях и записях таблицы Phone
В 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+' ПОЛЯ(ЕЙ):
';
Для получения списка полей мы перебираем в цикле for
все элементы коллекции Fields
:
//Перебираем все поля набора данных RS
for (i=0; i<RS.Fields.Count; i++) {
//Формируем строку с номером и именем поля таблицы
SOut+'Поле N '+i+': '+RS.Fields(i).Name+'
';
}
После завершения цикла к переменной SOut
добавляется информация о количестве записей, набор записей RS
закрывается и значение переменной SOut
выводится на экран:
SOut+='
И '+NomRecs+' ЗАПИСЬ(ЕЙ)';
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
/*******************************************************************/
/* Имя: TableInfo.js */
/* Язык: JScript */
/* Описание: Получение информации о полях таблицы */
/*******************************************************************/
//Объявляем переменные
var