Руководство к выполнению

advertisement
Методические указания к лабораторной работе
«Доступ к БД из VB»
Цель работы: изучить способы получения доступа к базе данных из среды
программирования VB.
Руководство к выполнению
Элемент управления данными ADO
Для доступа к базе данных из программы на Visual Basic в VB 6.0
включены объекты управления данными Active X (Active X Data Objects ADO).
ADO data control (ADO – элемент управления данными) – это компонент,
который можно использовать в VB-программах для подключения к базе
данных. Он помещается в форму и соединяется с базой. Затем вы
отображаете данные в форме, применяя другие элементы управления,
которые связываете с элементом управления данными.
Когда элемент управления данными уже подключен к базе данных, можно
воспользоваться любым из информационно-ориентированных элементов
управления (связанные элементы управления) для отображения записей.
Анализируя посланный запрос, ядро базы данных строит набор записей
(recordset). Набор записей – это рабочая копия сведений, хранящихся в
таблицах.
Информационно-ориентированный элемент управления предоставляет
доступ к одному или нескольким полям записи базы с помощью ADOэлемента управления данными. С помощью кнопок навигации ( ◄,◄, ►,► )
можно перейти к другой записи. При этом во всех связанных элементах
управления отображаются данные из полей новой записи. Если пользователь
изменяет данные в связанном элементе управления и потом переходит к
новой записи, изменения сохраняются в базе автоматически ( см. рисунок 1).
VB-форма
Связанные элементы управления
соотнесены
◄◄
Adodc1
Adodc1
с элементом управления данными
►►
Набор записей ( в памяти )
БД
Рисунок 1
Среди стандартных элементов управления в VB есть такие, которые могут
быть связаны с данными. Среди них поле ввода ( TextBox ), флажок (
CheckBox ), комбинированный список ( ComboBox ), изображение ( Image ),
метка ( Label ), список ( ListBox ) и графический список ( PictureBox ). Кроме
того, VB имеет несколько дополнительных элементов управления Active X,
которые также могут быть связаны с данными. Следующие элементы
управления Active X поставляются с VB 6.0 ( они хранятся в OCX-файлах):
- Data-bound Listbox (связанный список);
- Data-bound combobox ( связанный комбинированный список);
- DBGrid ( таблица данных );
- MS HFlexGrid ( табличное поле);
- Hierarchical FlexGrid control – может отображать иерархические
данные;
- DataGrid control – новый табличный элемент управления, который
может работать совместно с ADO-элементом управления и набором
записей;
- DataList control – элемент управления, аналогичный DBList, но
оптимизированный для работы с источником данных ADO;
- DataCombo control – работает так же, как связанный комбинированный
список, но оптимизирован для работы с источниками данных ADO.
Чтобы поместить любой из этих элементов на панель инструментов, надо
щелкнуть правой кнопкой мыши по панели. Выбрать из выпадающего меню
пункт Components… - появится диалоговое окно Components, содержащее, в
частности, перечень элементов управления.
Отметьте с помощью флажков те из них, которые надо добавить в проект,
и щелкните по кнопке ОК.
Если некоторый элемент управления выделен, в нижней части
диалогового окна отображается полное имя соответствующего ОСХ-файла.
Регистрация ADO в VB
Начните новый проект в VB. Перейдите в диалоговое окно Project →
References и добавьте в проект ссылки на Microsoft ActiveX Data Objects 2.0
Library. Теперь VB «знает» о компонентах ADO, которые вы будете
использовать.
Порядок работы с ADO-элементом (Adodc)
Прежде всего надо добавить ADO-элемент управления данными, а также
другие необходимые элементы на панель инструментов.
Щелкните правой кнопкой мыши на панели инструментов и раскройте
список Components. Выберите, например, следующие два элемента
управления:
- Microsoft ADO Data Control 6.0 (OLEDB);
- Microsoft DataList Controls 6.0 (OLEDB).
Совместно с ADO-элементом управления данными могут использоваться
только те элементы управления, в названии которых встречается
аббревиатура OLEDB.
Щелкните ОК. Теперь на панели инструментов появились три новых
пиктограммы:
Adodc - ADO-элемент управления данными;
DataList – список данных;
DataCombo – комбинированный список данных.
При выборе из списка Microsoft DataList Controls 6.0 (OLEDB) на панель
помещаются сразу два элемента: DataList и DataCombo. Они оба находятся в
одном ОСХ-файле. ОСХ-файлы – это DLL.
Каждый из элементов DataList, DataCombo, DataGrid и MS HFlexGrid
позволяет отображать сразу несколько записей, используя один ADOэлемент управления. Другие внутренние элементы управления (метка, поле
ввода, список, комбинированный список и т.д.) могут быть связаны только с
одним полем из набора записей.
Практикум – использование элемента DataCombo с ADO-элементом
управления данными
1. Создайте новый проект в VB 6.0. Поместите в форму элемент
DataCombo и ADO-элемент управления данными (Adodc). Элемент
управления данными выполняет все операции над текущей записью.
Информационно-ориентированные элементы, связанные с элементом
управления данными, отображают одно или несколько полей из текущей
записи.
2. Задайте свойства ADO-элемента управления данными, чтобы он знал,
какой набор записей создавать. Щелкните по ADO-элементу и откройте окно
Properties. Так как ADO может подключаться к любому источнику
информации, нужно задать строку соединения; она описывает источник и
сообщает ADO, как до него добраться.
3. Щелкните по свойству ConnectionString, и в правой половине таблицы
появится кнопка с многоточием. Щелкните по ней, чтобы VB создал строку
соединения. В качестве источника информации возьмем учебную базу
данных Biblio.mdb.
4. Щелкните по кнопке Build – появится окно «Свойства связи с
данными». Чтобы подключиться к БД Access, выберите Microsoft Jet 3.51
OLE DB Provider. Щелкните Далее>.
5. Далее вы сообщаете, какую БД открывать. Щелкните по кнопке с
многоточием и выберите Biblio.mdb. Так как база не защищена паролем,
оставьте в поле User Name значение по умолчанию и поднимите флажок
«Пустой пароль».
Имя пользователя Admin разрешает полный доступ к БД. Но если бы база
данных была защищена паролем, в диалоговом окне надо было бы ввести как
имя пользователя, так и пароль. Эти сведения были бы включены в строку
соединения.
6. Теперь проверьте возможность соединения с указанной БД. Щелкните
по кнопке «Проверить подключение». Если все нормально, на экране
появится окно с сообщением об успешном соединении.
7. Щелкните вкладку «Все» на странице Свойств. В окне отображается вся
информация, необходимая ADO-элементу управления данными. Большая
часть свойств имеет значения по умолчанию. Пользователи могут изменить
любое значение.
8. Закройте диалоговое окно и страницу свойств, щелкнув по кнопке ОК.
Если теперь посмотрите на свойство ConnectionString, то увидите, что ему
присвоено значение, которое вы определили. В свойстве ConnectionString
задан провайдер данных (переменная Provider), информация, относящаяся к
защите, и источник данных (переменная DataSource), в качестве которого
выступает БД Biblio.mdb.
9. Щелкните по свойству RecordSource ADO-элемента управления
данными. Щелкните по кнопке с многоточием, чтобы открыть страницу
свойств RecordSource. Поскольку мы будем извлекать данные из таблицы,
выберите из списка CommandType пункт 2 – adCmdTable.
10. Позже для формирования запросов будет использоваться SQL и тогда
надо будет выбирать пункт 1 – adCmdText. В результате вы сможете
поместить в поле CommandText(SQL) текст любого SQL-запроса. А пока вы
просто выбираете все записи из таблицы, поэтому укажите ее в выпадающем
списке, который содержит имена всех таблиц, имеющихся в БД Biblio.mdb.
Выберите таблицу Titles (Названия книг) и щелкните ОК.
11. Итак, вы задали параметры соединения между БД и ADO-элементом
управления данными, благодаря чему сможете построить набор записей.
Теперь обратимся к элементу, который будет отображать данные DataCombo.
Вернитесь к форме и откройте окно Properties для добавленного ранее
элемента
DataCombo. Щелкните по вкладке Categorized, в которой
представлены различные категории свойств, относящихся к отображению
данных. Щелкните свойство DataSource и выберите из выпадающего списка
Adodc1 – имя только что созданного ADO- элемента управления. Этим вы
сообщаете элементу DataCombo, с каким элементом управления данными он
связан.
12. Установите свойство RowSource равным Adodc1( единственно
возможный выбор). Затем щелкните по свойству ListField и выберите из
выпадающего списка Title. Когда из списка ListField выбирается новое
значение, VB обновляет свойство BoundColumn. Это свойство позволяет
связать две таблицы. С помощью этого свойства можно одновременно
обновлять две таблицы. Установите свойство Text равным пустой строке,
чтобы не показывать название элемента управления на экране.
13. Теперь посмотрите результат. Нажмите F5 для запуска программы.
Затем откройте выпадающий список, в котором присутствует более 8000
строк, помещенных туда элементом управления данными.
Введите какую-нибудь букву в поле над списком. Если вы набрали «С»,
список прокрутится и покажет первую строку, начинающуюся на «С». Таким
образом, элемент управления ищет нужную информацию автоматически. А
если вы хотите расположить строки в списке по алфавиту, нужно задать SQLзапрос, осуществляющий сортировку. Вот как это делается.
Откройте диалоговое окно Properties для ADO-элемента управления
данными и выберите свойство RecordSource. Щелкните кнопку с
многоточием.
14. Выберите из списка CommandType значение 1 - adCmdText. Это
позволит задать в качестве команды SQL-запрос. Введите в поле
CommandText команду:
SELECT * FROM Titles ORDER BY Title
Щелкните ОК.
Сохраните проект и нажмите F5 для повторного запуска программы. Все
названия должны выстроиться в алфавитном порядке.
Свойство Bound Column
Пусть необходимо добавить новую книгу в таблицу Titles. Поле PubID
(идентификатор издательства) в записи о книге ссылается на запись с
соответствующим первичным ключом в таблице Publishers (Издательства).
Пользователь знает название издательства, но не обязан знать код PubID.
Этот код надо взять из связанной таблицы Publishers. Задача состоит в
следующем: нужно обеспечить пользователю возможность при вводе
информации о новой книге в таблицу Titles задавать название издательства,
но при этом в таблицу должен заноситься код издательства PubID, взятый из
связанной таблицы Publishers.
Названия издательств покажем в выпадающем списке с помощью
элемента DataCombo. Эти названия берутся из связанной таблицы Publishers.
Нам понадобятся два элемента управления данными ADO. Первый
открывает таблицу Titles, а второй – таблицу Publishers. Свойству DataSource
элемента DataCombo присвоим значение Titles, а свойству RowSource –
значение Publishers (см. рисунок 2).
Adodc1
Adodc2
PubID
Элемент управления
DataCombo
DataSource:
Adodc1
Title
DataField:
PubID
Year Published
RowSource:
Adodc2
Таблица
Titles
Таблица
Bound Column: PubID
PubID
ListField:
Name
Рисунок 2.
Name
Publishers
Свойство ListField определяет, какое поле будет показано
пользователю в элементе управления DataCombo. Мы установим его так,
чтобы отображались названия издательств. Свойство BoundColumn
определяет, какое поле в таблице Publishers копируется в поле, имя которого
задано свойством DataField, являющимся внешним ключом таблицы Titles,
т.е. в поле PubID. Таким образом, свойство BoundColumn определяет имя
поля, с помощью которого задается связь между двумя таблицами.
Создадим форму, позволяющую обновлять таблицу Titles при
поступлении в библиотеку новых книг.
Начните новый проект в VB. Поместите в форму следующие
компоненты: DataCombo, два ADO-элемента управления данными, семь
полей ввода и семь меток.
Расположите все это, как
показано
на
рисунке
и
установите значения свойства
Text полей ввода равными
именам полей, которые будут с
ними связаны.
Воспользуйтесь
справочной
таблицей 1 для того, чтобы
задать
значения
всех
необходимых свойств.
Постройте строки соединения
для
обоих
элементов
управления данными, как в предыдущем примере, затем свяжите элементы
управления, сверяясь с приведенной ниже таблицей.
Таблица 1.
Элемент
управления
ADODC1
ADODC2
Свойство
Значение
ConnectionString
CommandType
RecordSource
Caption
EOFAction
Biblio.mdb
adCmdTable
Titles
Titles Table
adDoAddNew
ConnectionString
CommandType
RecordSource
Caption
Biblio.mdb
adCmdTable
Publishers
Publishers Table
Комментарий
При таком значении данного свойства
устанавливается
возможность
добавления в таблицу новой записи,
если текущей является последняя
запись и пользователь нажимает
кнопку перехода к следующей записи.
По умолчанию значением свойства
EOFAction ADO-элемента управления
является adDoMoveLast – при этом
пользователю
не
разрешается
перемещаться за последнюю запись.
Visible
Text1
DataSource
DataField
Text
Text2
DataSource
DataField
Text
Text3
DataSource
DataField
Text
Text4
DataSource
DataField
Text
Text5
DataSource
DataField
Text
Text6
DataSource
DataField
Text
Text7
DataSource
DataField
Text
DataCombo1 DataSource
DataField
RowSource
BoundColumn
ListField
Label1
Caption
Label2
Caption
Label3
Caption
Label4
Caption
Label5
Caption
Label6
Caption
Label7
Caption
False
Благодаря такому значению данного
свойства элемент Adodc2 не будет
виден на экране во время работы
программы
ADODC1
Title
Title
ADODC1
Year Published
Year Published
ADODC1
ISBN
ISBN
ADODC1
Description
Description
ADODC1
Notes
Notes
ADODC1
Subject
Subject
ADODC1
Comments
Comments
ADODC1
PubID
ADODC2
PubID
Name
Book Title
Year Published
ISBN
Description
Notes
Subject
Comments
Сохраните проект и нажмите F5 для запуска программы.
«Погуляйте» по набору записей с помощью элемента Adodc1, который
управляет набором записей из таблицы Titles. Посмотрите, как изменяется
название издательства при перемещении, и не забудьте, что название
издательства берется из таблицы Publishers, а не Titles. Вы получили
наглядную демонстрацию того, как элемент управления данными связывает
две таблицы.
Добавьте теперь новую книгу в таблицу Titles, чтобы убедиться в
работоспособности программы. Для перехода к новой записи щелкните по
кнопке ► на элементе управления данными. Затем щелкните по кнопке ►,
после чего откроется форма с незаполненными полями, готовая для ввода
данных о новой книге.
Введите в пустые поля какой-нибудь текст, но не щелкайте по элементу
DataCombo. Заполнив поля, щелкните по кнопке ◄. Изменения должны
записаться в базу данных. Но VB выдает сообщение об ошибке: поскольку не
было выбрано издательство из выпадающего списка, программа не знает,
какое значение записать в поле PubID – внешний ключ таблицы Titles. А
поскольку пустым это поле не может быть, запись и не добавилась.
Выберите название издательства из списка, который является частью
элемента DataCombo. Щелкните по кнопке ◄ и увидите, что на этот раз в
таблицу Titles добавлена новая запись.
Щелкните по кнопке ◄ для перехода к первой записи в наборе. Затем
щелкните по кнопке ► для возврата на последнюю запись. Вы видите, что
новая запись оказалась в конце набора. Добавленные записи всегда
помещаются в конец.
Контрольные вопросы
1. Какой компонент можно использовать в VB-программах для подключения
к базе данных?
2. Как зарегистрировать ADO в VB?
3. Опишите порядок работы с ADO-компонентом.
Download