Использование функций для обработки событий

Реферат - Компьютеры, программирование

Другие рефераты по предмету Компьютеры, программирование

Тип блокировки

 

Объект Recordset используется для работы с записями и с полями в записях. Свойство Count семейства указывает количество полей в наборе записей. Семейство Fields является стандартным семейством объекта Recordset, поэтому возможна короткая ссылка rs!Имя (где переменная rs объявлена, например как, Dim rs As DAO.Recordset).

После окончания работы с набором записей необходимо выполнить метод Close объекта Recordset, чтобы удалить набор из памяти.

 

Рассмотрим выполнение операций над записями с помощью свойств и методов объекта Recordset и Field, которые имеются в объектных моделях DAO и ADO.

 

Рассмотрим объектную модель DAO.

 

Синтаксис создания объекта Recordset:

 

СсылкаНаОбъект_Database_или_Connection.OpenRecordset (источник, [типОбъекта]. [параметры], [типБлокировки]

 

Значение аргумента параметры метода OpenRecordset:

 

КонстантаОписаниеdbAppendOnlyРазрешено только добавление записей в объект Recordset.

Применяется только для динамического набора записей.dbSQLPassThroughРезультирующий набор статический. Используется для выполнения прямого запроса к серверу, когда в качестве аргумента Источник указывается сам запрос.dbSeeChangesПрименяется только для динамического набора и не разрешает изменять запись, если она уже редактируется другим пользователемdbDenyWriteЗапрещено другим пользователям изменять и добавлять записи в наборе.dbDenyReadЗапрещено другим пользователям изменять и добавлять записи и читать данные из таблицы (применяется только к объекту Recordset типа таблица).dbForwardOnlyДублирует константу acOpenForwardOnly для аргумента тип объекта.dbReadOnly Данные в наборе будут доступны только для чтения.dbRunAsyncВыполняет асинхронный запрос.dbExecDirectВыполнение ускорения запроса.dbInconsistentРазрешены несогласованные изменения. dbConsistentРазрешены только согласованные обновления записей.

Значение аргумента тип блокировки не приводится, т. к. в данной работе он не используется.

 

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

 

Для получения значений полей произвольной записи набора, сначала надо сделать требуемую запись текущей, т. е. переместиться на эту запись. Для перемещения по набору записей используются методы:

 

MoveFirst переход к первой записи набора. При использовании статистического курсора с последовательным доступом вызывает повторное выполнение команды, которая возвратила Recordset. Используется при всех типах курсоров.

MoveNext переход к следующей записи. Используется при всех типах курсоров.

MovePrevious переход к предыдущей записи. При использовании статического курсора с последовательным доступом вызывает генерацию ошибки времени исполнения.

MoveLast переход к последней записи. При использовании статического курсора с последовательным доступом вызывает генерацию ошибки времени исполнения.

 

Move позволяет переместиться на заданное число записей вперед или назад. При использовании статического курсора с последовательным доступом вызывает генерацию ошибки времени исполнения.

 

 

При перемещении по набору записей необходимо контролировать, чтобы не переместить указатель за границы набора. Используются два свойства:

 

BOF принимает значение TRUE, как только указатель текущей записи оказывается перед первой записью набора.

EOF принимает значение TRUE, как только указатель текущей записи оказывается после последней записи набора или если в наборе нет ни одной записи.

 

 

 

Организация цикла по набору записей:

 

Вариант 1

 

Dim rs As DAO.Recordset

Dim dbCur As Database

……………………………….

Используется для заполнения источника строк поля со списком формы

Set dbCur=CurrentDb

Set rs=dbCur.OpenRecordset ("Select Код, Название FROM Образование "_

& "ORDER BY Название", dbOpenSnapshot)

rs.MoveFirst

While Not rs.EOF

CmdEducation.RowSource= CmdEducation.RowSource & rs!Код & ";" &_

rs!Название & ";"

rs.MoveNext

Wend

rs.Close

dbCur.Close

 

 

 

 

Вариант 2

 

 

Dim rs As DAO.Recordset

Dim dbCur As Database, i as integer

……………………………….

 

Set dbCur=CurrentDb

Set rs=dbCur.OpenRecordset ("Кадры ", dbOpenDynaset)

If rs.RecordCount <> 0 Then

rs.MoveFirst

For i=1 to rs.RecordCount

' Код обработки записи

rs.MoveNext

Next I

End IF

rs.Close

dbCu.Close

 

Во втором варианте использовано свойство RecordCount. Для набора записей типа Таблица это свойство возвращает общее количество записей в наборе. Для набора записей статического или динамического типа, значение этого свойства равно 1. Это происходит потому, что не все записи сразу считываются с источника, однако предполагается, что набор содержит хотя бы одну запись. Чтобы узнать общее число записей в подобных наборах, нужно перейти в конец набора с помощью метода Movelast (при этом все записи будут прочитаны). Теперь свойство RecordCount будет содержать нужное значение.

 

Иногда требуется определить позицию текущей записи в наборе. Свойство AbsolutePosition возвращает абсолютную позицию текущей записи (от 1 до RecordCount), а свойство PercentPosition относительную позицию текущей записи в процентах от числа записей, которое отражается в свойстве R