Visual2000 · Архив статей А.Колесова & О.Павловой

Элементы управления VB 6.0 для работы с ADO. Часть 1

Андрей Колесов, Ольга Павлова

© 1999, Андрей Колесов, Ольга Павлова
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" № 08/99, c. 161-168.

VBP-проекты примеров, приведенных в данной статье, вы можете найти на Web-узле по адресу: www.visual.2000.ru/develop/vb/source/.


Одним из ключевых новшеств VB 6.0...

Одним из ключевых новшеств VB 6.0 стало включение в него новой технологии Microsoft для работы с базами данных ADO (ActiveX Data Objects), которая в будущем должна заменить уже давно известные методы DAO (Data Access Objects) и RDO (Remote Data Objects). (Подробнее об этом см. статью "VB 6.0: доступ к данным с помощью технологии ADO")

Так же как и в случае с DAO, VB-разработчик может обращаться напрямую к объектам ADO с помощью программного кода. Для этого во многих случаях удобнее и проще использовать готовые элементы управления. В VB 6.0 включены четыре новых элемента управления — ADO Data, DataGrid, DataList и DataCombo, которые обеспечивают работу с источниками данных в соответствии со спецификациями OLE DB (данный интерфейс является основой ADO). Хотя эти компоненты — аналоги уже известных элементов управления Data, RemoteData, DBGrid, DBList и DBCombo, в них появились некоторые специфические дополнения, которые мы и рассмотрим ниже.

Отметим, что в VB 6.0 входят еще два новых инструмента для работы с базами данных на основе OLE DB: конструктор Data Environment и окно Data View, использование которых мы уже рассматривали в статье "Использование конструктора VB 6.0 Data Environment".

В начало статьи

Элемент управления ADO Data

Элемент управления ADO Data (рис. 1) обеспечивает связь между поставщиком данных OLE DB (OLE DB Provider) и элементами управления, обладающими свойством DataSource (CheckBox, ComboBox, Image, Label, ListBox, PictureBox и TextBox).

Рис. 1

ADO Data может применяться в следующих случаях:

ADO Data добавляется к формам аналогично любому другому элементу управления, причем их количество в форме не ограничено. Однако следует помнить о том, что данный элемент управления является ресурсоемким: ему требуется по крайней мере два соединения для первого компонента и по одному для каждого последующего.

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

В начало статьи

Создание источника данных OLE DB

Для создания коллекции можно применять три источника данных: Collection String, файл OLE DB (.UDL) или ODBC Data Source Name (DSN). В этой статье мы будем использовать второй вариант.

Чтобы обеспечить доступ к конкретной базе данных, необходимо создать источник данных OLE DB. Здесь мы будем иллюстрировать использование новых элементов управления на примере простейших приложений, работающих с Nwind.mdb (Northwind), которая поставляется вместе с Visual Basic. Для всех примеров достаточно создать источник данных OLE DB только один раз.

ВНИМАНИЕ! Чтобы обеспечить простую переносимость программных примеров, мы будем использовать каталог C:\VB-DB, в котором должен находится файла Nwind.mdb, а также создаваемый ниже файл Nwind.udl.

Шаг 1. Откройте Windows Explorer, а затем каталог, в котором хотите создать источник данных OLE DB (например, Microsoft Visual Studio\VB98).

Шаг 2. Щелкните правой кнопкой мыши правую панель Windows Explorer, после этого щелкните элемент New в контекстном меню. В списке типов файлов выберите Microsoft Data Link (рис. 2).

Рис. 2

Шаг 3. Переименуйте новый файл в Nwind.UDL и щелкните его правой кнопкой мыши. Выберите команду Properties из контекстного меню для вывода на экран окна Nwind.UDL Properties.

Примечание. Файлы для источников данных OLE DB имеют тип с названием Microsoft Data Link и расширение UDL (Universal Data Link). В русской документации VB 6.0 для этих файлов ОШИБОЧНО указывается расширение MDL.

Примечание. Описание назначения типов и имен файлов приведено для режима обязательного показа расширения имени файла.

Шаг 4. Щелкните вкладку Provider и выберите Microsoft Jet 3.51 OLE DB Provider из списка OLE DB Provider(s) (рис. 3). Щелкните кнопку Next. При этом вы автоматически переходите во вкладку Connection. В поле Select or enter a database name введите путь к файлу Nwind.mdb (рис. 4).

Рис. 3

Рис. 4

Шаг 5. Для проверки соединения щелкните кнопку Test Connection. Если соединение установлено (об этом выдается сообщение), щелкните OK.

В начало статьи

Пример 1. Создание приложения для работы с фронтальной (front-end) базой данных

Такое приложение можно создать, установив всего несколько свойств элементов управления и написав минимум программного кода.

Шаг 1. Поместите на форму элемент управления ADO Data (Adodc1). Если в окне инструментов нет этого компонента, вызовите диалоговое окно Components (Ctrl+T или Project|Components) и в списке компонентов установите флажок Microsoft ADO Data Control 6.0 (OLEDB).

Шаг 2. Выделите ADO Data и нажмите F4 для вывода окна Properties. Там щелкните свойство ConnectionString, и на экране появится диалоговое окно Property Pages. Поскольку мы решили работать с источником данных OLE DB, установите переключатель Use Data Link File, а затем, щелкнув кнопку Browse, найдите ранее созданный файл Nwind.UDL (рис. 5).

Рис. 5

Щелкните OK, и в свойстве ConnectionString окна Properties появится заполненная строка, в нашем случае такая:

FILE NAME=C:\vb-db\Nwind.UDL

Примечание. При работе с ODBC-данными установите переключатель Use ODBC Data Source Name, а затем выберите необходимый файл из раскрывающегося окна списка или щелкните кнопку New, чтобы создать новый. Если же вы хотите создать строку соединения, установите переключатель Use Connection String, щелкните кнопку Build и в появившемся диалоговом окне Data Link Properties создайте строку соединения.

Шаг 3. В окне Properties элемента управления ADO Data щелкните свойство RecordSource и в появившемся диалоговом окне Property Pages (рис. 6) задайте оператор SQL, например так:

SELECT * FROM Products WHERE ProductID

Рис. 6

Примечание. При доступе к таблице базы данных не забывайте указывать предложение WHERE, иначе она окажется заблокированной и могут возникнуть проблемы для других пользователей.

Шаг 4. Поместите на форму поле текста Text1, куда будет выводиться информация из базы данных, и установите его свойство DataSource как Adodc1, чтобы связать его с компонентом ADO Data. Щелкните свойство DataField поля Text1 и в раскрывшемся списке доступных полей выберите одно — то, которое хотите видеть на экране.

Шаг 5. Повторите шаг 4 для каждого дополнительного поля, которое хотите вывести на экран.

Шаг 6. Запустите приложение. С помощью четырех кнопок со стрелками элемента управления ADO Data вы можете осуществить просмотр данных: переходить к началу или концу данных, а также от записи к записи (рис. 7).

Рис. 7

Установку свойств ConnectionString, RecordSource, DataSource и DataField, которую мы только что показали в примере 1, можно осуществить и программным образом. При этом обратите внимание, что для установки свойства DataSource необходимо использовать оператор Set:

Private Sub Form_Load()
  With Adodc1
    .ConnectionString = "FILE NAME=C:\VB-DB\Nwind.UDL"
    .RecordSource = "SELECT * FROM Products WHERE ProductID"
  End With
  Set Text1.DataSource = Adodc1
  Text1.DataField = "ProductName"
  Label1.Caption = "ProductName:"
  ' аналогично для других полей
End Sub

В начало статьи

Таблица 1. Основные свойства элемента управления ADO Data

Название Пояснения
ConnectionString Строка с параметрами, необходимыми для установки соединени Состав параметров зависит от конкретного драйвера. Например, для драйверов ODBC строка может содержать имя драйвера, поставщика, базу данных по умолчанию, сервер, имя пользователя и пароль
UserName Имя пользователя устанавливается в случаях, когда база данных защищена паролем. UserName можно указывать в строке ConnectionString, как и свойство Provider. Если одновременно заданы и ConnectionString, и UserName, то первое значение заменит собой значение второго
Password Пароль для доступа к защищенной базе данных. Значение Password заменяется, если задано значение ConnectionString (аналогично тому, как это делается для свойств Provider и UserName)
RecordSource Предложение, определяющее, что должно быть извлечено из базы данных
CommandType Инструкция поставщику данных о том, является ли RecordSource названием таблицы, SQL-оператором, процедурой или тип предложения неизвестен
CursorLocation Указывает, где находится курсор, — у клиента или сервера. На основании этого устанавливаются некоторые другие свойства
CursorType Определяет тип набора данных — статический, динамический или ключевой
LockType Способ блокировки данных при попытке изменить данные извне в тот момент, когда вы их редактируете
Mode Определяет режим работы с набором данных. Так, сделав установку только для чтения, можно увеличить производительность, если вам необходимо только просматривать данные
MaxRecords Размер курсора, зависящий от размеров извлекаемой информации и объема памяти вашего компьютера
ConnectionTimeout Время ожидания в секундах при установлении соединени По истечении этого времени выводится сообщение об ошибке
CacheSize Количество извлеченных записей. Если свойство CursorLocation установлено как клиент, то CacheSize может иметь минимальное значение (например, 1). Если же CursorLocation установлено как сервер, то размер CacheSize следует оптимизировать таким образом, чтобы он был равен числу строк, которые можно просмотреть за один раз
BOFAction, EOFAction Определяют, что происходит, когда элемент управления находится в начале и конце курсора соответственно. В качестве вариантов могут быть такие случаи: переход к первой или последней записи, добавление новой записи (только в конце) или неподвижное состояние в начале или в конце

В начало статьи

Продолжение статьи: см. Часть 2

В начало статьи