Visual2000 · Архив статей А.Колесова & О.Павловой
Андрей Колесов, Ольга Павлова
© 1999, Андрей Колесов, Ольга ПавловаVBP-проекты примеров, приведенных в данной статье, вы можете найти на Web-узле по адресу: www.visual.2000.ru/develop/vb/source/.
Одним из ключевых новшеств 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 (рис. 1) обеспечивает связь между поставщиком данных OLE DB (OLE DB Provider) и элементами управления, обладающими свойством DataSource (CheckBox, ComboBox, Image, Label, ListBox, PictureBox и TextBox).
Рис. 1
ADO Data может применяться в следующих случаях:
ADO Data добавляется к формам аналогично любому другому элементу управления, причем их количество в форме не ограничено. Однако следует помнить о том, что данный элемент управления является ресурсоемким: ему требуется по крайней мере два соединения для первого компонента и по одному для каждого последующего.
Хотя во многих случаях можно пользоваться установками свойств элемента управления, заданными по умолчанию, иногда может потребоваться изменить некоторые из них. Для выполнения этой процедуры будет полезна сводная информация, приведенная в табл. 1.
Для создания коллекции можно применять три источника данных: 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. Поместите на форму элемент управления 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
Название | Пояснения |
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