Разделы

  Java, JavaScript
  Документация Perl
  Новости
  Документация ASP
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C

Средства доступа к базам данных

Уроки программирования
3.5 / 5 (63 оценок)


Метод OpenDatabase имеет четыре аргумента:
• Name - символьная строка с именем существующей базы данных. Если сеть это поддерживает, эта строка может содержать сетевой путь.
• Options - для рабочей области базы данных Jet может иметь значение True или False. При значении True другие пользователи не могут открыть эту базу данных, что позволяет повысить производительность работы (значение по умолчанию - False).
• ReadOnly - также может иметь значение True или False. Если True, то модификации не разрешаются.
• Connect - строка, содержащая дополнительную информацию, включая пароли.

Для закрытия базы применяется метод Close. Например, dbБД.Close.
После открытия базы данных с помощью набора записей (объект Recordset) можно извлекать, добавлять, изменять и удалять отдельные записи из одной таблицы или связанные записи из нескольких таблиц. Для создания набора записей сначала объявляется объектная переменная типа Recordset, а затем используется метод OpenRecordset:
Dim recДоставка As Recordset
Dim recДоставка2 As Recordset
Dim recЗамовлено As Recordset
Dim sSQLЗамовлено As String
Set recДоставка = dbБД.OpenRecordset (Name: = «Доставка», _
Type: = dbOpenTable)
sSQLЗамовлено = "Select * From Заказано" & _
"WHERE (Замовлено.КодТовару = 11) "
Set recЗамовлено = dbБД.OpenRecordset _
(Name: = sSQLЗамовлено, Type: = dbOpenDynaset)

Метод OpenRecordset имеет следующие аргументы:
• Name - единственный обязательный аргумент. Он идентифицирует источник записей. Это символьная строка, содержащая имя таблицы базы данных, имя запроса или оператор SQL.
• Type определяет тип создаваемого объекта Recordset. Для баз данных Jet он может иметь значение dbOpenTable, dbOpenDynaset, dbOpenSnapshot, или dbOpenForwardOnly. Первое используется для создания табличных наборов, второе - для создания динамических наборов, третье - для создания статических наборов. dbOpenForwardOnly разрешается просматривать записи только в одном направлении (последовательный доступ).
• Options определяет некоторые характеристики нового набора записей. Например, опция dbAppendOnly позволяет добавлять в конец набора новые записи, но не позволяет редактировать и удалять существующие.
• LockEdit - определяет способ блокировки записей, для предотвращения одновременном обновлению данных различными пользователями.

Выбор типа набора записей зависит от операций, которые с ним нужно проводить. Табличный набор (Table) используется для доступа к записям отдельной таблицы, хранящейся в MDB-файле. Если для упорядочения записей использоваться индексы, то поиск в табличном наборе выполняться значительно быстрее, чем в наборах других типов.

Динамический набор (Dynaset) содержит не сами данные, а ссылки на записи таблиц (первичные ключи), хранящихся в MDB-файле или связанные с ним. Он наиболее гибок в работе и может использоваться для доступа к записям, полученных в результате выполнения запроса. С помощью таких наборов можно извлекать, добавлять, изменять и удалять отдельные записи как в отдельной таблице, так и в нескольких согласно определению запроса.
Статические наборы (Snapshot) отличаются от динамических тем, что они содержат не ссылки на записи в таблицах, а копии записей. Такие наборы могут использоваться только для чтения данных. Модификация данных в таких наборах выполняться не может. Для просмотра записей в одном направлении статические наборы с последовательным доступом обеспечивают лучшую производительность.

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

Если свойство «начало файла» (BOF) имеет значение True, то указатель текущей записи находится в начале набора записей перед первой записью. Аналогично, если свойство «конец файла» (EOF) имеет значение True, то указатель текущей записи находится в конце набора записей по последней записью. Если оба свойства - и BOF и EOF - имеют значение True, то в наборе нет никаких записей.

Свойство AbsolutePosition используется для установления и определения номера текущей записи динамического или статического набора записей (при применении к табличного набора возникнет ошибка). Это свойство отсчитывается от нуля (то есть, для первой записи это свойство имеет значение 0). При добавлении и изъятии записей значение свойства AbsolutePosition для конкретной записи может меняться.

Каждая запись в наборе Recordset имеет уникальную закладку, которая может быть использована для того, чтобы сделать эту запись текущим. Чтобы получить закладки записи, нужно сделать эту запись текущим и присвоить значение свойства Bookmark переменной типа Variant. Если затем текущим станет другая запись, всегда можно вернуться к данной записи, предоставив свойства Bookmark значение соответствующей переменной. Закладки поддерживаются теми объектами Recordset, основанные на таблицах баз данных Jet. Наборы записей, представляющих таблицы других типов, могут не поддерживать закладки. Поддерживает набор записей закладки, можно определить с помощью свойства Bookmarkable (при поддержке она имеет значение True). Закладки не поддерживаются статическими наборами записей, созданными с параметром dbForwardOnly.

Для определения количества записей в объекте Recordset используется свойство RecordCount. Для табличного набора записей это свойство точно отражает количество записей в таблице и сразу обновляется при изъятии или добавлении записей. Для динамических и статических наборов записей значение свойства RecordCount равно количеству записей в наборе, в которых было реализовано доступ. Чтобы получить фактическое количество записей, в таких наборах нужно сначала сместить указатель текущей записи на последнюю запись, а уже потом использовать RecordCount.

Для перемещения по записям, то есть для изменения положения указателя текущей записи, применяются методы группы Move.

Методы MoveFirst и MoveLast делают текущим первый и последней записи соответственно.
Методы MoveNext и MovePrevous смещают положение указателя текущей записи соответственно на следующий и предварительная запись.

Метод Move смещает положение указателя текущей записи на определенное количество относительно текущей записи или закладки. Метод имеет два аргумента. Первый является обязательным и имеет тип Long, т.е. он может быть положительным или отрицательным целым числом. Он указывает, на какое количество записей (вперед или назад) должен сместиться указатель текущей записи. Второй (необязательный) является закладкой, указывающей место, с которого нужно двигаться. Если он не задан, то движение начинается с текущей записи. Примеры использования методов группы Move приведены в таком фрагменте:

vЗакладка1 = recДоставка.Bookmark "запомнить
'Месторасположение
recЗамовлено.MoveLast 'сместиться на последнюю запись, чтобы
'= Можно было' определить количество записей
lКилЗаписив = recДоставка.RecordCount
recЗамовлено.Bookmark = vЗакладка1 'вернуться к закладке
recЗамовлено.Move -7 'на 7 записей назад
recЗамовлено.Move +5 "на 5 записей вперед
recЗамовлено.MoveFirst 'на первую запись
recЗамовлено.Bookmark = vЗакладка1 'вернуться к закладке
recЗамовлено.MoveNext 'на следующую запись
recЗамовлено.MovePrevous 'на предыдущую запись

Для считывания значений полей текущей записи можно применять любой из трех способов ссылки на объект внутри коллекции, рассмотренных в теме 1. «Объектно-ориентированный подход к разработке программных средств», обращаясь к семейству Fields, соответствующего набора записей. Стоит отметить, что нумерация объектов в семействе Fields начинается с нуля.
Модификация записи осуществляется с помощью следующих действий вызывается метод Edit (например, recЗамовлено.Edit), поля записи заполняются соответствующими данными и после этого вызывается метод Update (например, recЗамовлено.Update). Если метод Update вызывается без предварительного вызова метода Edit, то возникает ошибка.
Для добавления к набору новой записи используется метод AddNew (например, recЗамовлено.AddNew). Запись физически не сохраняется в базе данных, пока не будет вызван метод Update.

Для определения, вызывались методы Edit или AddNew, можно пользоваться свойством EditMode. Если ее значение совпадает со значением константы dbEditNone, то это означает, что в текущем редактирования не было. Если ее значение совпадает со значением константы dbEditProgress, то это означает, что было вызвано метод Edit и текущая запись находится в буфере редактирования.

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

Для отмены действий методов Edit или AddNew, чтобы изменения не были занесены в базу данных, используется метод CancelUpdate.



Другие материалы по теме:

- Введение в программирование с помощью api
- Использование языков и сред программирования как средств обучения
- Средства структурного анализа и проектирования систем
- Разработка программного продукта. Этапы проектирования и построение модели
- Типы алгоритмов


📌 smti.ru © 2026 SMTI.RU: инструменты, знания и сообщество для создания веб-проектов | Обратная связь