Використання конструктора 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).
Крок 2. У вікні Project Explorer двічі клацніть DataEnvironment1 в папці Designers, в результаті чого в робочий простір Visual Basic завантажиться конструктор Data Environment, показаний на рис. 2.
Крок 3. Клацніть правою кнопкою миші елемент Connection1 в конструкторі Data Environment, а потім - команду Properties. Після цього на екран виведеться вікно Data Link Properties, яке ми будемо використовувати для встановлення зв'язку з базою даних (рис. 3).
Крок 4P. Робота з базою даних Pubs. У вкладці Provider двічі клацніть опцію OLE DB Provider for SQL Server - відкриється вкладка Connection. Введіть ім'я використовуваного вами SQL-сервера, свій ідентифікатор користувача (ID) і пароль.
Крок 5. Зараз у вас вже встановлено зв'язок з обраної вами базою даних. Щоб протестувати її, клацніть кнопку Test Connection. Після закінчення тестування VB виведе на екран вікно повідомлення Test connection succeeded, де вам потрібно натиснути кнопку OK. Потім повторно натисніть кнопку OK для закриття вікна Data Link Properties.
Крок 7. Двічі клацніть папку Tables, щоб розгорнути таблицю і показати таблиці, що зберігаються в базі даних. Залежно від того, з якою базою даних ви працюєте, скопіюйте таблицю Customers або Authors у вікно Data Environment за допомогою методу "перетягни і залиш". В результаті там з'явиться призначена для користувача команда з тим же ім'ям, що і перенесена таблиця (рис. 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).
Крок 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.
Крок 13. Збережіть створений в даному прикладі проект NorthWind в файлі DataProject.vbp.
Приклад 2. Створення пов'язаної з даними форми за допомогою методу "перетягни і залиш"
Створимо просту форму, використовуючи команду Data Environment, яка містить три таблиці - Customers, Orders і Order_Details. Закінчений вигляд цієї форми з декількома елементами управління TextBox і елементом управління Hierarchical FlexGrid, прив'язаними до даних, показаний на рис. 9.
Крок 1. Відкрийте проект DataProject.vbp, створений в прикладі 1.
Крок 2. У вікні Project Explorer двічі клацніть DataEnvironment1 в папці Designers.
Крок 3. Розкрийте папку Form у вікні Project Explorer і двічі клацніть форму frmDataEnv. На екран виведеться конструктор форм. Змініть розміри форми і конструктора Data Environment так, як показано на рис. 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).
Крок 6. Помістіть на форму дві командні кнопки і розташуйте їх у нижній частині, відразу під елементом управління Hierarchical FlexGrid. Встановіть властивості цих кнопок у вікні Properties у відповідності з наступною таблицею:
Крок 7N. Робота з базою даних NorthWind. Двічі клацніть кнопку cmdPrev для переходу у вікно Code View, де можна вказати такий код:
А для кнопки cmdNext введіть такий код:
Крок 7P. Робота з базою даних Pubs. Потрібно зробити ті ж операції, що і в кроці 7N, але замість "rsCustomers" ввести "rsAuthors".
Крок 8. Закрийте вікна Code View і Form.
Крок 9. Запустіть додаток на виконання, клацнувши значок Start на панелі інструментів VB6 або натиснувши клавішу F5. Скористайтеся командними кнопками для переміщення вперед і назад по записах бази даних. Зверніть увагу на інформацію, яка виводиться в елементі управління Hierarchical FlexGrid. Оскільки вона не відформатована, її можна налаштувати, надавши їй необхідний вид, що і буде показано на наступному прикладі.
Приклад 3. Створення простого звіту з даними
Приклад демонструє, як створити звіт з даними за допомогою команди Data Environment, яку ми сформували в перших двох прикладах як джерело даних. Коли ви закінчите виконання цього прикладу, ваш звіт буде виглядати приблизно так, як показано на рис. 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).
Крок 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.
Висота розділу Details повинна бути якомога менше, оскільки вона множиться на кількість дат OrderDate, що повертаються для поля CompanyName. Будь-яке додаткове простір вгорі або внизу поля тексту OrderDate веде до надлишку порожнього місця в остаточному звіті.
Крок 15. У вікні Project Explorer двічі клацніть форму frmDataEnv. Після появи форми на екрані помістіть на неї командну кнопку, яку розташуйте між кнопками cmdPrev і cmdNext.
Крок 17. Двічі клацніть командну кнопку cmdPreview і напишіть наступний код в подію cmdPreview_Click: