//В конце строки ставим символ перевода строки

 s+=' ';

 //Добавляем сформированную строку к переменной SOut

 SOut+=s;

 //Переходим к следующей записи

 RS.MoveNext();

}

//Закрываем объект Recordset

RS.Close();

//Выводим на экран строку SOut

WScript.Echo(SOut);

</script>

</job>

Перемещение в наборе записей 

Во всех рассмотренных выше сценариях мы перемещались в наборе 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')+' '+RS.Fields('Name')+' '+RS.Fields('Phone');

 //В конце строки ставим символ перевода строки

 s+=' ';

 //Добавляем сформированную строку к переменной SOut

 SOut+=s;

 //Переходим к предыдущей записи

 RS.MovePrevious();

}

Свойство BOF, используемое в цикле while, становится равным true, когда курсор будет находиться перед первой записью таблицы RS.

После выхода из цикла объект Recordset закрывается и сформированная строка SOut выводится на экран:

//Закрываем объект Recordset

RS.Close();

//Выводим на экран строку SOut

WScript.Echo(SOut);

Полностью текст сценария MoveInTable.js приведен в листинге 9.7.

Листинг 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 В ОБРАТНОМ ПОРЯДКЕ: ';

//Перебираем все записи набора данных RS

while (!RS.BOF) {

 //Формируем строку со значениями трех полей, которые разделены

 //символами табуляции

 s=RS.Fields('LastName')+' '+RS.Fields('Name')+' '+RS.Fields('Phone');

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату