
| |
Объект типа Recordset представляет из себя
таблицу - результат запроса к базе данных.
Экземпляр объекта создаётся командой Server.CreateObject("ADODB.Recordset").
Для перемещения по строкам, или записям,
таблицы, объект использует т.н. курсор,
указывающий на текущую запись. При открытии
объекта курсор указывает на самую первую запись.
Для удобства работы можно разбивать таблицу на
страницы, варьируя их размер.
По умолчанию, если не задано свойство CursorType,
перемещаться по записям можно только вперед.
Коллекции
Fields |
Список полей таблицы. Каждый элемент коллекции
представляет собой объект типа Field.
Чтобы вывести список полей таблицы, попробуйте
следующий код: <% For i=1 To recordset.Fields.Count
%>
<%= recordset.Fields(i).Name %><br>
<% Next %>
|
Properties |
Набор свойств соединения, в том числе
параметры из строки ODBC-соединения типа DSN,
UID, PWD и другие, а
также параметры ODBC-драйверов и многое другое.
Каждый элемент является объектом типа Property.
Практический интерес представляют количество
элементов коллекции (connection.Properties.Count),
а также наименование (connection.Properties.Item(item).Name)
и значение (connection.Properties.Item(item).Value)
элемента (здесь item - номер элемента
коллекции) |
Свойства
ActiveConnection |
Объект типа Connection, к которому
привязан данный Recordset |
Source |
Строка-источник запроса, т.е. SQL-выражение, имя
таблицы или хранимой процедуры |
Filter |
Фильтр, т.е. та часть SQL-запроса, которая
находится в составе WHERE, например,
recordset.Filter = "(LastName = 'Smith' OR LastName =
'Jones') AND FirstName = 'John'"
позволяет выбрать из всего списка только людей
по фамилии John и имени Smith или Jones. |
CursorType |
Тип курсора. Можно изменять только до
открытия объекта
0 |
Forward-only курсор. Является значением по
умолчанию. Позволяет перемещаться только
вперед по записям таблицы. Наиболее оптимальное
значение в тех случаях, когда нужно провести лишь
единственный проход по записям |
1 |
Keyset курсор. Подобен динамическому
курсору за исключением того, что вы не можете
видеть записи таблицы, добавленные другими
пользователями базы данных |
2 |
Динамический курсор. Позволяет любые
перемещения по таблице, а также добавление,
изменение и удаление записей, которые видны всем
пользователям базы данных |
3 |
Статический курсор - копия таблицы.
Позволяет производить поиск по таблице и
создавать отчёт. Добавления, изменения и
удаления, проведённые другими пользователями,
невидимы. Полезен, например, при постраничном
выводе таблицы с возможностью перемещаться
вперед-назад по страницам |
|
State |
Определяет состояние объекта: 0 -
закрыт, 1 - открыт |
BOF
EOF |
Логическая величина (True или False).
Определяет, что курсор находится перед первой
записью таблицы (BOF) или за последней (EOF) |
EditMode |
Определяет состояние редактирования текущей
записи - проведен ли метод Update для
сохранения текущих изменений
0 |
Показывает, что редактирование не проводилось |
1 |
Показывает, что данные в текущей записи
редактировались но изменения еще не сохранены |
2 |
Показывает, что текущая запись добавлена с
помощью метода AddNew, но до сих пор не
сохранена |
|
Следующие методы доступны лишь
при установке CursorType=3 |
RecordCount |
Определяет количество записей в таблице. |
AbsolutePosition |
Перемещает курсор на новую запись под данным
номером. Должен иметь значение в интервале от 1
до RecordCount |
Bookmark |
Закладка в виде числа типа long. Никак
не связана с номером записи. Можно при
сканировании по таблице запомнить значение Bookmark
в некоторой временной переменной, а затем
вернуться обратно на данную запись |
PageSize |
Задаёт число записей таблицы на странице. По
умолчанию равен 10. |
PageCount |
Определяет количество страниц. Автоматически
пересчитывается при изменении PageSize |
AbsolutePage |
Перемещает курсор на начало данной страницы.
Вот, например, как можно вывести страницу номер pagenum: <%
recordset.AbsolutePage = pagenum
For i=1 To recordset.PageSize
< вывод текущей записи >
recordset.MoveNext
Next
%>
|
Методы
Open |
Исполняет запрос и открывает
таблицу-результат
recordset.Open [Sourse[, ActiveConnection[,
CursorType]]]
Здесь необязательные параметры Source, ActiveConnection и CursorType обозначают то же, что и
соответствующие свойства объекта Recordset.
Кроме того, параметр ActiveConnection может
быть не только объектом типа Connection, но и
просто строкой инициализации ConnectionString |
Close |
Закрывает объект |
Requery |
Заново пересчитывает таблицу. Эквивалентен
последовательному исполнению методов Close
и Open |
Clone |
Возвращает объект типа Recordset - копию
исходного объекта
rstDuplicate = rstOriginal.Clone
Полезен в случаях, когда нужно использовать
одновременно несколько записей из одной таблицы |
MoveFirst
MoveLast
MoveNext
MovePrevious |
Перемещает курсор на первую, последнюю,
следующую или предыдущую запись таблицы |
Move |
Перемещает курсор на новое положение
recordset.Move NumRecords[, Start]
NumRecords |
Параметр типа long. Количество записей,
на которые нужно переместить курсор.
Положительное значение означает перемещение
вперед, отрицательное - назад по записям |
Start |
Точка отсчёта, откуда нужно переместить
курсор. Может быть либо закладкой, либо одним из
возможных значений:
0 |
Значение по умолчанию. Точка отсчёта - текущая
запись |
1 |
Отсчёт идёт от первой записи таблицы |
2 |
Отсчёт идёт от последней записи таблицы |
|
|
AddNew |
Добавить запись. Можно сначала добавить
запись, затем определить значение полей. А можно
это сделать и одной командой:
recordset.AddNew [Fields, Values]
Здесь Fields - имя или массив имен полей,
которые нужно определить, Values - значение
или массив значений этих полей
Чтобы сохранить добавленную запись, необходимо
выполнить метод Update |
Delete |
Удаляет текущую запись или группу записей в
зависимости от параметра:
recordset.Delete [AffectRecords]
AffectRecords - одно из возможных значений:
1 |
Значение по умолчанию. Удаляет только текущую
запись |
2 |
Удаляет записи, удовлетворяющие свойству Filter, которое должно быть
задано заранее |
|
Update |
Сохраняет изменения в текущей записи.
Изменения в записи можно произвести
предварительно или непосредственно в команде:
recordset.Update [Fields, Values]
Здесь Fields - имя или массив имен полей,
которые нужно определить, Values - значение
или массив значений этих полей.
Если вы переместили курсор с добавленной или
изменённой записи, сервер автоматически
выполнит метод Update |
CancelUpdate |
Отменяет любые изменения или добавления
записей, проведённые до использования метода Update |
|