div.main {margin-left: 20pt; margin-right: 20pt}
Использование конструктора Visual Basic 6.0 Data
Environment
В этой статье мы покажем основные возможности нового конструктора Data
Environment, включенного в состав Visual Basic 6.0 и предназначенного для работы
с данными. На трех примерах мы последовательно рассмотрим вопросы:
использования визуальных средств для работы с базами данных;
использования конструктора Data Environment Designer для создания команды
доступа к данным;
создания связанных с данными формы и отчета при помощи метода "перетащи и
оставь";
написания ADO-кода для управления связанной с данными формой.
Пример 1. Установление связи с данными и создание простой команды при помощи
конструктора Data Environment и окна Data View
На данном примере мы продемонстрируем работу с конструктором Visual Basic 6.0
Data Environment для установления связи с данными OLE DB. Для выполнения примера
можно использовать базу данных NorthWind, поставляемую вместе с Visual Basic,
или базу данных Pubs, поставляемую с Microsoft SQL Server.
В ходе работы мы создадим простую команду для иерархических наборов записей,
которая ссылается на три таблицы, соответствующие одной из этих баз данных. Если
мы выберем базу данных NorthWind, то установим ссылки к таблицам Customers,
Orders и Order_Details, а если базу данных Pubs - то к таблицам Authors,
TitleAuthor и Titles. Обе базы данных устанавливают взаимосвязи между таблицами,
чтобы логически связать их. Использование двух различных источников данных имеет
лишь небольшие различия, как будет видно дальше. Для этого мы будем отмечать
шаги, относящиеся только к конкретной базе данных, с помощью индексов N
(Northwind) и P (Pubs) соответственно.
ВНИМАНИЕ! В программных приложениях к данной статье используется
база данных Nwind.MDB, которая должна находиться в каталоге C:VB-DB.
Шаг 1. Откройте Visual Basic 6.0 и во вкладке New диалогового окна New
Project выберите шаблон Data Project (рис.1).
Рис. 1.
Шаг 2. В окне Project Explorer дважды щелкните DataEnvironment1 в
папке Designers, в результате чего в рабочее пространство Visual Basic
загрузится конструктор Data Environment, показанный на рис. 2.
Рис. 2.
Шаг 3. Щелкните правой кнопкой мыши элемент Connection1 в конструкторе
Data Environment, а затем — команду Properties. После этого на экран выведется
окно Data Link Properties, которое мы будем использовать для установления связи
с базой данных (рис. 3).
Рис. 3.
Шаг 4N. Работа с базой данных Northwind. Во вкладке Provider дважды
щелкните опцию Microsoft Jet 3.51 OLE DB Provider — откроется вкладка Connection
(рис. 4). Выберите необходимую базу данных, щелкнув кнопку Browse. Для нашего
примера найдем базу данных NorthWind (обычно она хранится по адресу C:Program
FilesMicrosoft Visual StudioVB98Nwind.mdb, но мы используем
C:VB-DBNwind.mdb). Выделим ее и затем щелкнем кнопку Open.
Рис. 4.
Шаг 4P. Работа с базой данных Pubs. Во вкладке Provider дважды
щелкните опцию OLE DB Provider for SQL Server — откроется вкладка Connection.
Введите имя используемого вами SQL-сервера, свой идентификатор пользователя (ID)
и пароль.
Шаг 5. Сейчас у вас уже установлена связь с выбранной вами базой
данных. Чтобы протестировать ее, щелкните кнопку Test Connection. По окончании
тестирования VB выведет на экран окно сообщения Test connection succeeded, где
вам нужно щелкнуть кнопку OK. Затем повторно щелкните кнопку OK для закрытия
окна Data Link Properties.
Шаг 6. Теперь щелкните значок Data View Window на верхней панели
инструментов, чтобы открыть окно Data View, где дважды щелкните элемент
Connection1. VB развернет дерево, отображающее связь с базой данных, показав
категории элементов, которые содержатся внутри него. В нашем примере дерево
содержит два элемента — Tables и Views, как показано на рис. 5.
Рис. 5.
Шаг 7. Дважды щелкните папку Tables, чтобы развернуть таблицу и
показать таблицы, хранящиеся в базе данных. В зависимости от того, с какой базой
данных вы работаете, скопируйте таблицу Customers или Authors в окно Data
Environment с помощью метода "перетащи и оставь". В результате там появится
пользовательская команда с тем же именем, что и перенесенная таблица (рис. 6).
Рис. 6.
Шаг 8N. Работа с базой данных NorthWind. Повторите шаг 7, перетащив
таблицы Orders и Order_Details в конструктор Data Environment.
Шаг 8P. Работа с базой данных Pubs. Повторите шаг 7, перетащив таблицы
Titles и TitleAuthor в конструктор Data Environment.
Шаг 9. Закройте окно Data View.
Шаг 10. Теперь необходимо установить родительско-дочернюю связь между
тремя таблицами в конструкторе Data Environment. (Последний обладает удобными
возможностями для установления подобных связей.) Вначале щелкните правой кнопкой
мыши команду Orders (или Titles) и выберите команду Properties для вывода
диалогового окна Orders Properties (или Titles Properties). Щелкните вкладку
Relation и установите флажок Relate to a Parent Command Object (рис. 7).
Рис. 7.
Шаг 11. После этого раскройте список Parent Command и выберите в нем
команду Customers (или TitleAuthor) в качестве родительской команды. Тогда окна
списков Relation Definition автоматически заполнятся идентификаторами CustomerID
(или AU_ID). Щелкните кнопку Add для установления родительско-дочерней связи, а
затем щелкните OK.
Шаг 12. Теперь команда Orders (или Titles) в конструкторе Data
Environment представляет собой дочернее поле в папке Customers (или Authors).
Это означает, что для каждого Customer (Покупателя) в иерархии может
существовать несколько Orders (Бланков заказа). После этого выберите команду
Order_Details (или TitleAuthor) и повторите шаги 10 и 11, установив
Order_Details (или TitleAuthor) в качестве дочерней команды для Orders (или
Titles). В итоге конструктор NorthWind Data Environment приобретает такой вид,
как показано на рис. 8.
Рис. 8.
Шаг 13. Сохраните созданный в данном примере проект NorthWind в файле
DataProject.vbp.
В начало статьи
Пример 2. Создание связанной с данными формы при помощи метода "перетащи и
оставь"
Перед тем как приступить к этому пошаговому процессу, убедитесь, что вы
сохранили проект, созданный в Примере 1. Мы продемонстрируем здесь возможность
конструктора Data Environment создавать мощные, управляемые данными формы. Мы
будем использовать окно Data View для выбора и просмотра данных, а конструктор
Data Environment - для размещения на форме связанных с данными элементов
управления.
Создадим простую форму, используя команду Data Environment, которая содержит
три таблицы - Customers, Orders и Order_Details. Законченный вид этой формы с
несколькими элементами управления TextBox и элементом управления Hierarchical
FlexGrid, привязанными к данным, показан на рис. 9.
Рис. 9.
Шаг 1. Откройте проект DataProject.vbp, созданный в Примере 1.
Шаг 2. В окне Project Explorer дважды щелкните DataEnvironment1 в
папке Designers.
Шаг 3. Раскройте папку Form в окне Project Explorer и дважды щелкните
форму frmDataEnv. На экран выведется конструктор форм. Измените размеры формы и
конструктора Data Environment так, как показано на рис. 10.
Рис. 10.
Шаг 4. Затем перетащите команду Customers (или Authors) из
конструктора Data Environment в верхнюю часть формы. При этом на ней разместятся
несколько связанных с данными элементов управления TextBox и соответствующие им
метки. В нижней части формы, сразу под полями текста, разместится связанный с
данными элемент управления Hierarchical FlexGrid. Он будет находиться как раз
там, где обычно приводится более подробная информация о заказах (Orders).
Примечание. Вы можете настраивать элементы управления TextBox или
FlexGrid, когда вы их связываете с данными. Если щелкнуть правой кнопкой мыши
какое- либо поле в конструкторе Data Environment и выбрать команду Properties,
можно установить соответствие между этим полем и элементом управления любого
типа.
Шаг 5. Щелкните поверхность формы, чтобы снять выделение у элементов
управления, которые только что были помещены на форму. Щелкните правой кнопкой
мыши элемент управления Hierarchical FlexGrid и затем выберите команду
Properties. В появившемся диалоговом окне Property Pages измените свойство
BandDisplay на 1-Vertical и щелкните OK (рис. 11).
Рис. 11.
Шаг 6. Поместите на форму две командные кнопки и расположите их в
нижней части, сразу под элементом управления Hierarchical FlexGrid. Установите
свойства этих кнопок в окне Properties в соответствии со следующей таблицей:
Свойство |
Элемент управления Command1 |
Элемент управления Command2 |
Name |
cmdPrev |
cmdNext |
Caption |
<< |
>> |
Шаг 7N. Работа с базой данных NorthWind. Дважды щелкните кнопку
cmdPrev для перехода в окно Code View, где введите следующий код:
Private Sub cmdPrev_Click()
If DataEnvironment1.rsCustomers.BOF Then
MsgBox "Вы уже находитесь в первой записи."
Else
DataEnvironment1.rsCustomers.MovePrevious
End If
End Sub
А для кнопки cmdNext введите такой код:
Private Sub cmdNext_Click()
If DataEnvironment1.rsCustomers.EOF Then
MsgBox "Вы уже находитесь в последней записи."
Else
DataEnvironment1.rsCustomers.MoveNext
End If
End Sub
Шаг 7P. Работа с базой данных Pubs. Нужно сделать те же операции, что
и в шаге 7N, но вместо "rsCustomers" ввести "rsAuthors".
Шаг 8. Закройте окна Code View и Form.
Шаг 9. Запустите приложение на выполнение, щелкнув значок Start на
панели инструментов VB6 или нажав клавишу F5. Воспользуйтесь командными кнопками
для перемещения вперед и назад по записям базы данных. Обратите внимание на
информацию, которая выводится в элементе управления Hierarchical FlexGrid.
Поскольку она не отформатирована, ее можно настроить, придав ей требуемый вид,
что и будет показано на следующем примере.
В начало статьи
Пример 3. Создание простого отчета с данными
Пример демонстрирует, как создать отчет с данными при помощи команды Data
Environment, которую мы сформировали в первых двух примерах в качестве источника
данных. Когда вы закончите выполнение этого примера, ваш отчет будет выглядеть
приблизительно так, как показано на рис. 12.
Рис. 12.
Чтобы упростить задачу, мы не будем использовать все поля из Data Environment
в создаваемом нами отчете. Поэтому в результате приведенного здесь пошагового
процесса отчет будет состоять лишь из нескольких позиций. Все сказанное здесь
относится к работе с обоими вариантами баз данных - NorthWind и Pubs.
Шаг 1. Откройте проект DataProject.vbp, созданный в Примере 1 и
дополненный в Примере 2.
Шаг 2. В окне Project Explorer раскройте папку Designers и дважды
щелкните конструктор DataReport1.
Шаг 3. В окне Properties щелкните свойство DataSource, а затем
выберите DataEnvironment1 в качестве источника данных.
Шаг 4. В окне Properties щелкните свойство DataMember и выберите
Customers (или Authors).
Шаг 5. Щелкните правой кнопкой мыши любое место в конструкторе Data
Report и после этого выберите команду Retrieve Structure. Выберите Yes для
замены иерархической структуры на новую. Обратите внимание, что при этом в
конструкторе будут созданы новые групповые разделы, отражающие структуру Data
Environment, а именно: каждый раздел будет иметь однозначное соответствие с
объектом Command в Data Environment. Таким образом, новые разделы Group будут
соответствовать команде Customers и ее последующим дочерним командам (рис. 13).
Рис. 13.
Шаг 6. Щелкните верхний колонтитул Group Header (Customers_Header). В
окне Properties измените свойство Name колонтитула с Customers_Header на
CompanyName_Header.
Шаг 7. Щелкните нижний колонтитул Group Footer (Customers_Footer) и
измените свойство Name колонтитула с Customers_Footer на Company_Name_Footer.
Шаг 8. Откройте конструктор Data Environment, дважды щелкнув
DataEnvironment1 в окне Project. Перетащите поле CompanyName из команды
Customers из Data Environment в раздел CompanyName_Header (белая область под
колонтитулом CompanyName_Header).
Примечание. Раздел Group Header может содержать любое поле из
команды Customers, однако для упрощения отчета (о чем мы говорили в самом начале
примера) мы сейчас поместим в него только имя Customer.
Шаг 9. Выделите элементы управления txtCompanyName и Label1 и
выровняйте их по левому краю конструктора отчетов.
Шаг 10. Снова выделите элементы управления txtCompanyName и Label1,
после этого перейдите в окно Properties. Щелкните свойство Font, а затем -
кнопку с изображением многоточия (...), которая откроет диалоговое окно Font
Style. Щелкните Bold, чтобы наименование компании выводилось полужирным шрифтом,
и щелкните OK.
Шаг 11. Перетащите поле OrderDate из команды Orders из Data
Environment в раздел Group Header (Orders_Header).
Шаг 12. Раздел Details соответствует самой нижней команде в иерархии
Data Environment - команде Orders_Details. Перетащите ее из Data Environment в
раздел Detail (Order_Details_Detail) конструктора отчетов. При этом данный
раздел автоматически заполнится полями, содержащимися внутри команды. С помощью
клавиши SHIFT выделите каждую из меток в разделе Detail и перетащите их влево,
чтобы они не накладывались на соответствующие элементы управления Data.
Шаг 13. Измените размеры разделов в конструкторе Data Report так, как
это показано на рис. 14.
Рис. 14.
Высота раздела Details должна быть как можно меньше, поскольку она умножается
на количество дат OrderDate, возвращаемых для поля CompanyName. Любое
дополнительное пространство вверху или внизу поля текста OrderDate ведет к
избытку пустого места в окончательном отчете.
Шаг 14. Сохраните проект командой File|Save. Теперь, когда мы уже
создали объекты Data Environment и Data Report, можно было бы запустить наш
проект на выполнение. Остался лишь один шаг - написать единственную строку кода,
позволяющую осуществить предварительный просмотр отчета.
Шаг 15. В окне Project Explorer дважды щелкните форму frmDataEnv.
После появления формы на экране поместите на нее командную кнопку, которую
расположите между кнопками cmdPrev и cmdNext.
Шаг 16. Выделите новую командную кнопку и перейдите в окно Properties,
где щелкните свойство Caption и введите "Просмотр отчета". Затем выделите
свойство Name и введите cmdPreview.
Шаг 17. Дважды щелкните командную кнопку cmdPreview и напишите
следующий код в событии cmdPreview_Click:
Private Sub cmdPreview_Click()
DataReport1.Show
End Sub
Шаг 18. Запустите проект на выполнение и щелкните кнопку "Просмотр
отчета". На экран выведется окно просмотра, содержащее наш отчет с данными.
|