Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual Basic 6.0~03.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4 Мб
Скачать
☆

Властивості елементу даних

Почнемо з властивостей елементу даних (мал. 8.8). Властивість Connect вказує тип бази даних - за умовчанням вибирається Access. Властивість DatabaseName визначає ім'я файлу бази даних (строго кажучи, це справедливо тільки для баз даних Access; у інших базах даних досить вказати тільки каталог). Властивість RecordSet показує, звідки беруться дані - з таблиці, динамічного набору (dynaset) або знімка (snapshot). Зазвичай (хоча і не завжди) таблиця виявляється найбільш ефективним варіантом, якщо дані зберігаються в одній таблиці; динамічний набір - якщо дані є підмножиною записів таблиці або знаходяться в декількох таблицях, а знімок - якщо доступ до даних відбувається тільки для читання. У нашому прикладі властивість RecordsetType може мати будь-яке з трьох можливих значень. Властивість RecordSource визначає таблицю в базі даних (принаймні в Access; у інших базах даних воно звичайно визначає ім'я файлу). Щоб працювати з декількома таблицями в динамічному наборі, вам доведеться ввести SQL - оператор або заздалегідь створити цей набір у своїй програмі або Access.

Мал. 8.8. Властивості елементу даних

Сам по собі елемент даних не відображує інформацію - його доводиться зв'язувати з елементом іншого типу. У попередньому прикладі використовувалися два текстові поля. Для кожного з полів у властивості DataSource було задано ім'я елементу даних (у нашому прикладі - Datal), а в полі DataField - ім'я поля в наборі записів, властивістю RecordSource елементу даних. Можливість роботи з базами даних є однією з найсильніших сторін Visual Basic. Елементи даних мають колосальні можливості, але ви можете добитися ще більших результатів, якщо навчитеся писати процедури доступу до даних на Visual Basic. Навіть у недалекому минулому робота з даними не викликала особливих труднощів, але з появою ADO це завдання стало чи не одним з найпростіших! Ми детально розглянемо ADO в цьому уроці, а доки давайте познайомимося із структурою баз даних.

Анатомія бази даних

У Visual Basic передбачено багато можливостей для роботи з базами даних формату Microsoft Access (.MDB), а також SQL Server і Oracle. Хоча в Visual Basic існує немало способів отримати потрібні дані, ми розглянемо лише пару з них (додаткову інформацію можна знайти в книзі Джона Вейскаса "Ефективна робота з Microsoft Access 97" (Видавництво "Пітер")). На щастя, для роботи з базами даних Access необов'язково мати встановлену копію Access, тому що в Visual Basic входить ядро AccessJet Engine. Усе, що вам потрібне - це MDB - файл Access. Для створення бази даних зручніше користуватися Access, проте ми вдамося до послуг надбудови Visual Data Manager, тому що вона входить в Visual Basic.

База даних Access є файлом, що включає таблиці, індекси і запити. Таблицею називається набір даних, розбитих на рядки і стовпці. В термінах баз даних рядка називаються записами, а стовпці - полями. Індексом називається пов'язаний список покажчиків на записі таблиці. Він прискорює пошук в таблиці (подібно до того, як предметний покажчик книги прискорює пошук потрібної сторінки). Запитами називаються оператори SQL (Structured Query Language - структурована мова запитів), по яких з таблиці вибирається підмножина записів.

Таблиці

Якщо вам доводилося працювати з SQL, то ви знаєте, що таке таблиця. Якщо ви переходите на Visual Basic або Access c одній з традиційних систем управління базами даних, буде потрібно деякі пояснення. To, що в xBase вважається базою даних, в Access називається таблицею. У Visual Basic і Access таблиці складають лише частину компонентів, з яких складається база даних. Повноцінна база даних Access містить і інші об'єкти - інші таблиці, запити, форми і т. д. Таблиці не зберігаються в окремих файлах, а є невід'ємною частиною бази даних. Щоб відкрити таблицю, необхідно заздалегідь відкрити батьківську базу даних. Таблиці є найбільш важливим компонентом бази даних, саме в них зберігаються дані. Якщо вам не доводилося працювати з базами даних, але у вас є деякий досвід спілкування з Excel, можете розглядати таблицю як робочий лист. Якщо продовжити аналогію з електронними таблицями, рядки відповідають записам, а стовпці - полям. Я поясню сказане на прикладі простої таблиці.

Назва

Автор

за п'ять хвилин

Ф. Блоггз

Астрофізика для чайників

Дж. Доуу

Як заробити мільярд

Б. Гейтс

Якщо не рахувати назв стовпців, в таблиці є присутній три рядки, кожна з яких відноситься до окремої книги. Іншими словами, наша таблиця складається з трьох записів. Кожен запис має різні атрибути, або властивості - назву і ім'я автора. Полів всього два - "Назва" і "Автор". Зрозуміло, справжні бази даних містять набагато більше записів і складаються з більшої кількості полів.

У будь-яку базу даних повинна входити хоч би одна таблиця, інакше база не міститиме ніяких даних і виявиться абсолютно безглуздою. Отже, при створенні бази даних необхідно передусім створити хоч би одну таблицю і занести в неї дані. Ймовірно, з розширенням потреб програми вам доведеться додавати в базу даних і інші таблиці. Так, в наведеному раніше прикладі друга таблиця може містити інформацію про видавців книг з першої. Звичайно, першу таблицю можна доповнити і включити в неї відомості про видавця у вигляді окремого поля - але якщо видавці випускають по декілька книг, бажано винести в окрему таблицю. Тим самим ви забезпечите цілісність даних, а структура бази даних стане раціональнішою.

Запити

Запити служать для вибірки або зміни даних в таблицях. Ви звертаєтеся із запитом до існуючої бази даних і, якщо запит сформульований коректно, отримуєте відповідь. При цьому економиться немало часу, який довівся б витрачати на пошук відповіді іншими засобами. Існують і інші способи отримання даних з таблиць, але ми почнемо саме із запитів. Для зміни даних в таблицях теж можна користуватися іншими способами (наприклад, модифікувати таблицю вручну), проте запити дозволяють легко внести зміни відразу в декілька записів і полів. Припустимо, нас цікавить, які книги були написані Стівеном Блахом. Для цього ми визначимо на мові SQL запит, до якого увійдуть записи, що лише цікавлять нас. Поступіть наступним чином:

1. Відкрийте приклад з підрозділу "Використання елементу даних".

2. У вікні властивостей заміните значення властивості RecordSource наступним: select * from [Authors] where [Author] = "Blaha, Stephen"

3. Виконаєте команду Run > Start.

Результат запиту виглядає так:

Ім'я автора

Номер

Blaha, Stephen

9033

Результат запиту дуже схожий на таблицю; фактично він є підмножиною записів таблиці. У термінології Visual Basic і Access така підмножина називається "Динамічним набором". Дані, що входять в динамічний набір, насправді не існують - вони лише тимчасово витягаються з таблиці (чи таблиць), що цікавить вас, а при збереженні запиту записується лише критерій вибірки (у нашому прикладі критерій - це автор з ім'ям Stephen Blaha). Визначення "динамічний" означає, що при зміні таблиці склад набору може змінитися, але запит залишиться тим же. Оскільки динамічний набір є підмножиною записів існуючої таблиці, ви можете змінити що входять в нього дані - це приведе до зміни даних початкової таблиці. Слід врахувати, що на редагування даних в динамічних наборах накладаються деякі обмеження, наприклад забороняється вносити зміни, загрозливі цілісності даних. Наприклад, якщо таблиця з іменами авторів не повинна містити імен, що повторюються, ви не зможете створити новий запис для книги, написаної тим же автором.

Запити складають надзвичайно важливу частину Visual Basic і Access. Ви можете не лише змінювати дані в динамічному наборі, але і звертатися із запитом до самого запиту (сподіваюся, ви розумієте, що мається на увазі). Скажімо, якщо динамічний набір містить назви декількох книг, написаних Стівеном Блахом, критерій можна посилити і обмежити його однією-двома назвами. Виникає принципове питання - чом би не поставити назви книг на перше місце і не замінити два запити одним? Звичайно, це цілком допустимо, і більше того, в багатьох ситуаціях поступати слід саме так, Проте витонченість запитів Access якраз і полягає в тому, що послідовні запити дозволяють поступово звужувати динамічний набір і переглядати результати проміжних запитів. Запити стають "багатошаровими", а в багатьох ситуаціях саме це і потрібно.

Попутно виникає ще один, не менш важливе питання. Чи варто возитися із запитом, якщо ви можете проглянути таблиці і "вручну" вибрати з неї усі книги Стівена Блаха? Якщо таблиця складається всього з трьох записів, таке зауваження виглядає цілком обґрунтованим. Але якщо в базі зберігається декілька десятків, сотень і навіть тисяч записів, використання запитів дозволяє легко виділити інформацію, що цікавить вас. Зазвичай в запити входить інформація з декількох таблиць - це дозволяє переглядати і змінювати дані з логічно пов'язаних, але проте різних таблиць на одній формі Visual Basic.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]