Введение в объект управления данными - Data Control
1. Что такое объект управления данными.
2. Как установить свойства объекта Data.
5. Связанные с данными элементы управления.
6. Простое приложение для просмотра полей базы данных.
Само название этого объекта говорит о том, что предназначен он для работы с данными. С помощью Data Control можно быстро создавать простые приложения для работы с базами данных практически без написания программного кода. А используя этот элемент управления вместе с объектами доступа к данным (Data Access Objects или DAO) можно создавать достаточно мощные по своим функциональным возможностям программные комплексы, предназначенные для обработки информации из баз данных.
Что такое объект управления данными
Объект управления данными - это компонент Visual Basic, который позволяет получить доступ и манипулировать данными, хранящимися в файлах баз данных различных форматов. Как уже отмечалось выше, используя объект Data, вы можете достаточно быстро создавать работоспособные Windows-приложения практически без написания кода программы. Перечислим основные действия, которые объект управления данными позволяет выполнять без вмешательства программиста (точнее, почти без вмешательства):
Подключение (connect) к базе данных.
Открытие таблицы базы данных или определение при помощи соответствующего SQL-запроса критерия выбора записей из полей базы данных.
Передача данных из полей базы данных к связанным элементам управления, расположенным на форме (например, поле редактирования), где данные можно просматривать или изменять.
Добавление новых записей, удаление записей и обновление содержимого базы данных (здесь, правда, без написания нескольких строк кода не обойтись).
Закрытие базы данных.
Применение объекта Data дает возможность разработчику использовать в своих приложениях базы данных в наиболее распространенных в настоящее время форматах, таких как Microsoft Access, dBASE, FoxPro, Paradox, Btrieve, а также файлы электронных таблиц Microsoft Excel и Lotus 1-2-3. Кроме того, можно использовать в качестве источника данных обычные текстовые файлы (с расширением txt) или базы данных, доступные через интерфейс Open Database Connectivity (ODBC).
Объект управления данными обозначен на панели инструментов интегрированной среды разработки Visual Basic 5 пиктограммой, показанной на рис.3.1.
Рис.3.1. Пиктограмма объекта Data на панели инструментов Visual Basic 5.
Внешний вид объекта Data на вашей экранной форме показан на рис.3.2. При его выделении, в углах и на серединах сторон появляются маркеры, с помощью которых можно изменять линейные размеры этого элемента управления по вашему вкусу. Объект Data содержит заголовок и четыре кнопки, предназначенные для перемещения по записям базы данных, а точнее, по созданному им набору записей (что такое набор записей вы узнаете несколько позднее). В качестве заголовка лучше использовать текст, каким-либо образом характеризующий данные, с которыми вы предполагаете работать. Заголовок определяется свойством Caption объекта Data.
Рис.3.2. Вид объекта Data на экранной форме.
Чтобы использовать объект управления данными в приложении, необходимо выполнить, по крайней мере, четыре действия:
Если приложение должно работать с несколькими источниками данных, то можно одновременно разместить на экранной форме и использовать целый ряд объектов Data.
Как установить свойства объекта Data
Установить имя базы данных во время разработки (design time) приложения можно в окне свойств (Properties) объекта управления данными. При выборе свойства DatabaseName в правом столбце окна свойств появится кнопка с многоточием. При нажатии на нее откроется диалоговое окно просмотра файлов DatabaseName, при помощи которого необходимо выбрать требуемую для работы базу данных. Кроме того, если вы хорошо знаете полный путь к файлу, то можете просто ввести имя файла в окне свойств, используя клавиатуру компьютера. Здесь следует особо подчеркнуть, что имя должно включать в себя полный путь к файлу базы данных.
Рис.3.3. Диалоговое окно просмотра файлов баз данных.
Рис.3.4. Вы можете просто ввести имя файла.
После определения имени файла базы данных, в том же окне свойств надо определить источник данных.
Свойство RecordSource объекта Data определяет, из какой таблицы базы данных требуется использовать данные. Имя таблицы можно ввести с использованием клавиатуры компьютера, или выбрать из списка таблиц, которая появится после нажатия кнопки со стрелкой в правом столбце окна свойств.
Если требуется использовать данные из нескольких таблиц, для определения требуемого источника данных можно использовать язык структурированных запросов (SQL). Описанию языка запросов будут посвящены несколько уроков на данном сайте.
Рис.3.5. Установка свойства RecordSource.
Теперь пришло время определить понятие набора записей (Recordset). Объект управления данными не работает напрямую с базой данных, а создает в памяти компьютера именованную область, которая используется как буфер между файлом базы данных и объектом Data. В этой области памяти и содержится информация из базы данных. Данные для объекта Recordset определяются свойствами RecordSource и RecordsetType объекта Data.
Таким образом, набор записей представляет собой некоторое подмножество записей из одной или нескольких таблиц базы данных (или из нескольких баз данных). При этом, он может содержать как полную копию таблицы, так и ее часть. Если источник данных определен с помощью языка SQL, то набор записей будет содержать строки из базы данных, удовлетворяющие соответствующему SQL-запросу.
Объект Recordset (как и любой другой объект в Visual Basic) имеет вполне конкретные свойства и методы, которые подробно будут рассмотрены позднее в уроках, посвященных объектам доступа к данным (DAO).
В пятой версии Visual Basic поддерживаются пять типов наборов записей. Но наиболее широко используются только три типа: набор записей динамического типа или динамический набор записей, набор записей типа таблица и статический набор записей. Их краткое описание приведено в таблице 3.1.
Таблица 3.1.
Тип набора записей | Описание |
Table | Набор записей, представляющий собой всю таблицу базы данных. Используя такой набор записей, можно добавлять, изменять или удалять записи, причем доступ возможен только к одной таблице. |
Dynaset | Динамический набор записей представляет собой таблицу базы данных или результат запроса, содержащего поля одной или нескольких таблиц. Можно добавлять, изменять или удалять записи и изменения будут отражаться в соответствующей базе данных. |
Snapshot | Статическая копия таблицы, которую можно использовать, например, для поиска данных или для составления отчетов. |
По умолчанию объект управления данными создает набор записей динамического типа.
Использование набора записей типа таблица по своему действию аналогично прямому открытию таблицы. При этом в память компьютера загружается только содержимое текущей записи. Из этого и вытекают преимущества и недостатки табличного набора записей. Используя его, вы можете работать только с одной таблицей, причем таблица открывается вся целиком, что может потребовать значительных ресурсов памяти.. Основным преимуществом такого набора записей является возможность использования индексов для упорядочения и поиска данных в таблице.
Из всех трех доступных типов наборов записей наиболее гибким в использовании является динамический набор записей (не зря же именно он создается объектом Data по умолчанию). Фактически, набор записей динамического типа представляет собой ряд ссылок на информацию в базе данных, поскольку использует ключевые поля, однозначно определяющие каждую строку в базе данных. Использование ключей увеличивает скорость загрузки данных и уменьшает нагрузку на сеть при работе приложений многопользовательской среде. Содержимое Memo-полей и полей, содержащих OLE-объекты не загружается до тех пор, пока не возникнет необходимость их использования, например, вывода их на экран. Все это позволяет использовать динамические наборы записей при работе с большими таблицами и таблицами, содержащими OLE-объекты и Memo-поля. Самым существенным недостатком набора записей динамического типа можно считать невозможность использования индексов. При каждом изменении способа упорядочения записей динамический набор должен пересоздаваться заново.
При использовании статического набора записей, в отличие от табличного и динамического наборов, вся информация из базы данных (определенная свойством 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 | Text, 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:\VB5\BIBLIO.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 и установите их свойства следующим образом:
Label1.Caption=Название
Text1.DataSource=Data1
Text1.DataField=Title
Label2.Caption=Автор
Text2.DataSource=Data1
Text2.DataField=Author
Label3.Caption=Год издания
Text3.DataSource=Data1
Text3.DataField=Year Published
Label4.Caption=Тема книги
Text4.DataSource=Data1
Text4.DataField=Subject
Label5.Caption=Орисание
Text5.DataSource=Data1
Text5.DataField=Description
Label6.Caption=Международный код ISBN
Text6.DataSource=Data1
Text6.DataField=TITLES.ISBN
Label7.Caption=Издательство
Text7.DataSource=Data1
Text7.DataField=Name
Label8.Caption=Примечание
Text8.DataSource=Data1
Text8.DataField=Notes
Рис.3.6. Вид экранной формы.
7. Предусмотрим средство для завершения работы приложения. Для этого добавьте на форму командную кнопку, определите ее свойство Caption как “Выход” и установите следующий код в процедуре обработки события Click:
Private Sub Command1_Click ()
Unload Me
End Sub
8. Запустите проект на выполнение выбором команды Start из меню Run, или нажмите клавишу F5. Результат работы программы показан на рис.3.7. С помощью кнопок со стрелками на объекте управления данными можно перемещать текущий указатель по набору записей и содержимое соответствующих полей будет автоматически отображаться на форме в связанных элементах управления.
9. Закройте приложение нажатием кнопки “Выход”.
Рис.3.7. Результат работы приложения.