Страница 163 из 179
При использовании статического набора записей, в отличие от табличного и динамического наборов, вся информация из базы данных (определенная свойством 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).
EOF = True ∙ Текущая запись установлена за последней записью. Указатель текущей записи является недопустимым (invalid).
BOF и EOF равны True ∙ В наборе записей нет строк. Указатель текущей записи является недопустимым (invalid).
Связанные с данными элементы управления
При разработке приложений такие действия как открытие базы данных, определение источника данных и др. возлагаются на объект управления данными. Однако, для создания полноценного приложения совершенно необходимым является наличие у разработчика средств визуализации самих данных. Для решения этой задачи в Visual Basic предусмотрены, так называемые, связанные с данными элементы управления (Data-bound Controls). Другими словами, в связанных элементах управления, расположенных на экранной форме, отображается содержимое полей текущей записи из базы данных (точнее, из набора записей).
В качестве связанных объектов управления могут выступать некоторые стандартные объекты Visual Basic, например такое как Text box (текстовое окно).
Кроме свойств, присущих обычным элементам управления Visual Basic, эти элементы управления имеют несколько общих свойств, специально предназначенных для связи с базами данных:
DataField — Определяет имя поля в наборе записей, созданном объектом управления данными.
DataSource — Определяет имя объекта управления данными, с которым связывается элемент управления.
DataChanged — Показывает, было ли изменено содержимое связанного элемента управления.
Таким образом, чтобы добавить связанный элемент управления в приложение, необходимо выполнить следующие действия:
Перетащите необходимый объект управления из панели инструментов на вашу экранную форму и установите требуемые размеры.
Установите свойство DataSource для связи с объектом управления данными.
Установите свойство DataField для связи с требуемым полем набора записей.
Кроме стандартных связанных элементов управления, в Visual Basic предусмотрено несколько специальных связанных элементов управления, которые, кроме как для работы с данными обычно не используются:
Data-bound list box,
Data-bound combo box,
Data-bound grid.
Тот факт, что они используются вместе с данными, отражен в самих их названиях. Их детальное описание и примеры использования в приложениях будут рассмотрены в отдельнх уроках.
Источником данных для любого связанного элемента управления всегда является объект управления данными. Когда пользователь при помощи кнопок со стрелками на объекте Data перемещает указатель текущей записи с одной записи на другую, обновление данных в связанных элементах управления происходит автоматически. Любое изменение данных в связанных элементах управления, сделанное пользователем, немедленно отображается в наборе записей и затем в базе данных (если, конечно, не предусмотреть специальных мер).
В таблице 3.3 представлены типы данных, которые могут отображаться в связанных объектах управления.
Таблица 3.3
Название объекта ∙ Типы данных
Picture box ∙ Long Binary
Image ∙ Binary
Label ∙ Text, Numeric, Date
Text box ∙ Text, Numeric, Date
Check box ∙ True/False, Yes/No
List box ∙ Text, Numeric, Date
Combo box ∙ T ext, Numeric, Date
Data bound list box ∙ Text, Numeric, Date
Data bound combo box ∙ Text, Numeric, Date
Data bound grid ∙ Text, Numeric, Date
Masked edit ∙ Text, Numeric, Date
Простое приложение для просмотра полей базы данных
Для демонстрации использования объекта управления данными и связанных элементов управления создадим очень простое приложение, которое, тем не менее, позволит нам просматривать библиографическую информацию из базы данных BIBLIO.MDB. Для этого вы должны последовательно выполнить следующие действия:
1. Откройте новый проект и измените свойство Caption формы Form1 на “Книги по программированию”.
2. Перенесите из панели инструментов на форму объект управления данными Data1.
3. В окне свойств объекта Data1 измените свойство Caption на “Книги”.
4. В окне свойств объекта Data1 установите свойство DatabaseName, как имя файла базы данных с указанием полного пути C: VB5BIBLIO.MDB.
5. В окне свойств объекта Data1 определите свойство RecordSource, как следующий SQL-запрос:
SELECT * FROM TITLES, AUTHORS, PUBLISHERS, [TITLE AUTHOR] WHERE TITLES.ISBN = [TITLE AUTHOR].ISBN AND [TITLE AUTHOR].AU_ID = AUTHORS.AU_ID AND TITLES.PUBID= PUBLISHERS.PUBID
Этот запрос выбирает все поля из всех четырех таблиц базы данных BIBLIO.MDB, связанных между собой с помощью совпадающих значений ключевых полей.
6. Разместите на форме восемь меток и, соответственно, восемь текстовых окон как показано на рис. 3.6 и установите их свойства следующим образом: