Интернет-журнал "Домашняя лаборатория", 2007 №4
Шрифт:
Если требуется использовать данные из нескольких таблиц, для определения требуемого источника данных можно использовать язык структурированных запросов (SQL). Описанию языка запросов будут посвящены несколько уроков на данном сайте.
Рис. 3.5. Установка свойства RecordSource.
Что такое набор записей
Теперь пришло время определить понятие набора записей (Recordset).
Таким образом, набор записей представляет собой некоторое подмножество записей из одной или нескольких таблиц базы данных (или из нескольких баз данных). При этом, он может содержать как полную копию таблицы, так и ее часть. Если источник данных определен с помощью языка SQL, то набор записей будет содержать строки из базы данных, удовлетворяющие соответствующему SQL-запросу.
Объект Recordset (как и любой другой объект в Visual Basic) имеет вполне конкретные свойства и методы, которые подробно будут рассмотрены позднее в уроках, посвященных объектам доступа к данным (DAO).
В пятой версии Visual Basic поддерживаются пять типов наборов записей. Но наиболее широко используются только три типа: набор записей динамического типа или динамический набор записей, набор записей типа таблица и статический набор записей. Их краткое описание приведено в таблице 3.1.
Таблица 3.1.
Тип набора записей • Описание
Table • Набор записей, представляющий собой всю таблицу базы данных. Используя такой набор записей, можно добавлять, изменять или удалять записи, причем доступ возможен только к одной таблице.
Dynaset • Динамический набор записей представляет собой таблицу базы данных или результат запроса, содержащего поля одной или нескольких таблиц. Можно добавлять, изменять или удалять записи и изменения будут отражаться в соответствующей базе данных.
Snapshot • Статическая копия таблицы, которую можно использовать, например, для поиска данных или для составления отчетов.
По умолчанию объект управления данными создает набор записей динамического типа.
Использование набора записей типа таблица по своему действию аналогично прямому открытию таблицы. При этом в память компьютера загружается только содержимое текущей записи. Из этого и вытекают преимущества и недостатки табличного набора записей. Используя его, вы можете работать только с одной таблицей, причем таблица открывается вся целиком, что может потребовать значительных ресурсов памяти… Основным преимуществом такого набора записей является возможность использования индексов для упорядочения и поиска данных в таблице.
Из всех трех доступных типов наборов записей наиболее гибким в использовании является динамический набор записей (не зря же именно он создается объектом Data по умолчанию). Фактически, набор записей динамического типа представляет собой ряд ссылок на информацию в базе данных, поскольку использует ключевые поля, однозначно определяющие каждую строку в базе данных. Использование ключей увеличивает скорость загрузки данных и уменьшает нагрузку на сеть при работе
При использовании статического набора записей, в отличие от табличного и динамического наборов, вся информация из базы данных (определенная свойством RecordSource объекта Data) заносится в память компьютера. Статический набор может содержать данные из одной или нескольких таблиц базы данных, при этом обновление данных невозможно. Поэтому, он может использоваться в случаях, не требующих обновления данных в исходной таблице, например, для поиска определенной записи или для составления отчетов. Так как содержимое записей статического набора находится в памяти, то все операции с ним выполняются гораздо быстрее, чем при использовании динамического или табличного наборов записей. При этом платой за высокую скорость является потребность в значительных ресурсах памяти.
Объекты — наборы записей, создаваемые программно, могут быть связаны со свойством Recordset объекта управления данными при помощи оператора Set:
Set Data1.Recordset=NewRecordset.
Таким же образом набор записей, созданный одним объектом управления данными может быть связан с другим объектом управления данными во время выполнения (run time) приложения:
Set Data1.Recordset=NewRecordset
Set Data2.Recordset=Data1.Recordset.
Текущая запись
В каждый момент времени текущей является только одна запись из набора и содержимое полей именно этой записи отображается в связанных элементах управления на вашей экранной форме. Нажатие кнопок со стрелками на объекте Data эквивалентно соответствующему перемещению указателя текущей записи по данным из объекта Recordset.
Когда вы программируете какие-либо операции с данными из набора записей, вы всегда должны быть уверены, что текущая запись является допустимой (valid). Это условие является необходимым, так как, например, удаленная запись является недопустимой (invalid) и любая попытка доступа к ней записи вызовет ошибку. Такие свойства объекта Data, как BOFAction и EOFAction, предоставляют некоторый контроль над состоянием текущей записи, но вы также можете создать программный код для проверки свойств BOF (начало файла) и EOF (конец файла) объекта Recordset. Установка этих двух свойств и определяет состояние текущей записи. В таблице 3.2 представлены возможные состояния свойств BOF/EOF объекта Recordset.
Таблица 3.2.
Свойство BOF/EOF объекта • Описание
Recordset
BOF и EOF равны False • Указатель текущей записи является допустимым (valid) до тех пор, пока вы не удалите последнюю запись в наборе записей.
BOF = True • Текущая запись установлена перед первой записью. Указатель текущей записи является недопустимым (invalid).