Книга: Windows Script Host для Windows 2000/XP

Получение информации о полях и записях таблицы

Получение информации о полях и записях таблицы

Иногда бывает необходимо определить число и названия полей или подсчитать общее число записей в таблице. Приведенный в листинге 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+" ПОЛЯ(ЕЙ):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);
/*************  Конец *********************************************/

Оглавление книги


Генерация: 1.405. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз