Головна |
Приклад розробки бази даних.Як приклад розглядається послідовність дій для створення та обробки бази даних «Навчальний процес». Створимо базу даних, яка буде складатися з трьох таблиць: предмети (вихідна таблиця), викладачі (вихідна), навчальний план (підпорядкована таблиця). Так як підпорядкована таблиця буде містити відомості з вихідних таблиць, то спочатку створюються вихідні таблиці, потім підпорядкована таблиця. Після відкриття програми на екрані з'явиться діалог створення нової БД. Спочатку необхідно вибрати «Нова база банних», потім в рядку "Ім'я файлу" ввести ім'я відповідно до завдання і натиснути кнопку «Створити». Створення таблиці Предмети в режимі Конструктора: для переходу в режим Конструктора виконайте Вид - Конструктор, а потім введіть ім'я таблиці. Режим Конструктора таблиці представлений на рис.3. Необхідно заповнити імена полів, типи даних і визначити ключове поле. Після заповнення таблиці в режимі Конструктора необхідно її наповнити даними, для цього виконайте Вид - Режим таблиці. Заповнена таблиця представлена ??на рис.4. Якщо для поля код предмета був обраний тип даних - лічильник, То заповнювати його не потрібно (лічильник заповнюється автоматично). Після заповнення таблиці даними закрийте її. 1.3.3 Компоненти доступу до даних Для доступу до даних, представленим за допомогою різних компонент будь то BDE-орієнтовані джерела (наприклад, Table), або ADO, IB Express, або dbExpress, використовується один і той же набір компонентів, розташованих на закладці Data Access: - DataSource - джерело даних; - ClientDataSet - клієнтський набір даних; - DataSetProvider - провайдер набору даних; - XMLTransform - перетворювач даних, представлених у вигляді XML в звичайний пакет даних і назад; -XMLTransformProvider - Провайдер даних для XML-документів, який здійснює так само їх оновлення; - XMLTransformClient - адаптер між XML-документом і провайдером. З цього списку нам цікаво тільки перші 3 компонента, а саме DataSource, ClientDataSet і DataSetProvider. Використовуючи набір з цих компонент, можна забезпечити доступ до даних. Причому в разі, коли мова йде про BDE і таблицях Paradox, як правило, досить використовувати лише один з перерахованих компонентів - DataSource. Цей компонент має всього 4 власних властивості - AutoEdit, DataSet, Enabled і State. Властивість Enabled схоже на властивість Active таблиці або Connected у бази даних, т. Е. Робить активним або неактивним з'єднання. А властивість AutoEdit, будучи включеним, забезпечує можливість редагування записів без написання будь-якого додаткового коду. Властивість State інформує про те, в якому стані в поточний момент знаходиться джерело даних. Ну а найважливіше властивість цього компонента - це, звичайно ж, DataSet, яке і визначає джерело даних - таблицю, запит і т. Д. Решта ClientDataSet і DataSetProvider можуть знадобитися в тому випадку, якщо потрібно забезпечити кешування записів, наприклад, для того, щоб представити у вигляді таблиці джерело даних типу dbExpress. 1.3.4 Відображення даних Користувач може працювати з базою даних в режимі таблиці або в режимі форми. У режимі таблиці інформація відображається у вигляді таблиці, що дозволяє бачити одночасно кілька записів. Цей режим звичайно використовується для перегляду інформації. У режимі форми відображається один запис. Зазвичай даний режим використовується для введення і редагування інформації. Відображення даних у табличній формі забезпечує компонент DBGrid (рисунок 1.1). Властивості компонента (таблиця 1.1) визначають вид таблиці і дії, які можуть бути виконані над даними під час роботи програми. Малюнок 1.1 Значок компонента DBGrid Таблиця 1.1 Властивості компонента DBGrid
Властивість Columns компонента DBGrid є колекцією (масив) об'єктів типу TColumn. Властивості об'єкта TColumn (таблиця 1.2) визначають інформацію, яка відображається в стовпці. Таблиця 1.2 - Властивості об'єкта TColumn
Налаштування компонента DBGrid виконується наступним чином. Спочатку в колекцію Columns треба додати стільки елементів, скільки стовпців даних необхідно відобразити в поле компонента DBGrid. Для цього слід розкрити вікно редактора колекції - клацнути на кнопці з трьома крапками, яка знаходиться в полі значення властивості Columns, або з контекстного меню, яке з'являється в результаті клацання правою кнопкою миші в полі компонента, вибрати команду Columns Editor. У вікні редактора колекції треба зробити клацання на кнопці Add New. В результаті в колекцію Columns буде додано новий елемент - об'єкт Columns. Додавши потрібну кількість елементів в колекцію Columns, можна приступити до їх налаштування. У найпростішому випадку для кожної колонки досить встановити значення властивостей FieldName і Title.Caption. в таблиці 1.3 наведені значення властивостей компонента DBGrid1. Таблиця 1.3 - Значення властивостей компонента DBGrid1.
Спостерігає, що потрібно зробити - створити процедури обробки подій Activate і Close форми. Процедура обробки події Activate повинна відкрити базу даних, події Close - зберегти останні зміни, зроблені користувачем. Тут потрібно звернути увагу, що зміни, зроблені користувачем, автоматично фіксуються в базі даних (у файлі) в момент переходу до наступного запису. Однак якщо користувач, не завершивши введення даних, закриє вікно програми, дані останнього редагованої записі не будуть записані в файл. Тому, перед тим як завершити роботу програми, треба перевірити, чи не редагує користувач запис, і якщо редагує (в цьому випадку значення властивості EditorMode компонента DBGrid одно True), то зберегти редаговану запис в базі даних. 1.3.5 Навігаційний спосіб доступу до даних Навігаційний спосіб доступу полягає в обробці кожного окремого запису набору даних. Цей спосіб зазвичай використовується в локальних БД або в віддалених БД невеликого розміру. При навігаційному способі доступу кожен набір даних має невидимий покажчик поточного запису. Покажчик визначає запис, з якої можуть виконуватися такі операції, як редагування або видалення. Поля поточної записи доступні для перегляду. Наприклад, компоненти DBEdit і DBText відображають вміст відповідних полів саме поточного запису. Компонент DBGrid вказує поточну запис за допомогою спеціального маркера. В додатку, що розробляється навігаційний спосіб доступу до даних можна реалізувати, використовуючи будь-який з компонентів таblе або Query. Реляційний спосіб доступу заснований на обробці групи записів. Якщо потрібно обробити одну запис, все одно обробляється група, що складається з одного запису. При реляционном способі доступу використовуються SQL-запити, тому його називають також SQL-орієнтованим. Реляційний спосіб доступу орієнтований на роботу з віддаленими БД і є для них найкращим. Однак його можна використовувати і для локальних БД. Реляційний спосіб доступу до даних в додатку можна реалізувати за допомогою компонента Query. У формі програми відображається одна запис бази даних (цей запис називається поточної). Компонент DBNavigator, його властивості приведені в табл. 6.14, забезпечує переміщення покажчика поточного запису до наступної, попередньої, першої або останньої записи, а також виконання інших операцій в результаті клацання на відповідній кнопці (табл. 6.15). Слід звернути увагу на властивість VisibleButtons. Воно дозволяє приховати деякі кнопки компонента DBNavigator і тим самим заборонити виконання відповідних операцій над файлом даних. Наприклад, присвоївши значення False властивості VisibleButtons.nbDelete, можна приховати кнопку nbDelete і тим самим заборонити видалення записів. Значення властивостей компонента DBNavigator1 наведені в таблиці 1.4. Таблиця 1.4 - Властивості компонента DBNavigator
Таблиця 1.5 - Кнопки компонента DBNavigator
1.3.6 Вибір інформації з бази даних При роботі з базою даних користувача, як правило, цікавить не весь її вміст, а деяка конкретна інформація. Знайти потрібні відомості можна послідовним переглядом записів. Однак такий спосіб пошуку незручний і малоефективний. Більшість систем управління базами даних дозволяють зробити вибірку потрібної інформації шляхом виконання запитів. Користувач відповідно до певних правил формулює запит, вказуючи, якими критеріями повинна задовольняти його цікавить інформація, а система виводить записи, що задовольняють запиту. Для вибірки з бази даних записів, що задовольняють деякому критерію, призначений компонент Query. Для того щоб під час розробки програми задати, яка інформація буде виділена з бази даних в результаті виконання запиту, властивість SQL має містити представлений на мові SQL запит на вибірку даних. У загальному вигляді запит на вибірку з таблиці даних виглядає так: SELECT Список-Полів FROM Таблиця WHERE (Критерій) ORDER BY Список Полів, де: - SELECT - команда вибору записів з таблиці і виведення вмісту полів, імена яких вказані в списку; - FROM - параметр команди, який визначає ім'я таблиці, з якої потрібно зробити вибірку; - WHERE - параметр, який задає критерій вибору. У найпростішому випадку критерій - це інструкція перевірки вмісту поля; - ORDER BY - параметр, який задає умову, відповідно до якого будуть впорядковані записи, що задовольняють критерію запиту. Часто потрібна інформація вже є в завантаженої таблиці. У цьому випадку, для того щоб її знайти (приховати непотрібну в даний момент інформацію), слід скористатися механізмом фільтрації записів. Фільтр - це умова відбору записів. Можливістю фільтрації мають компоненти ADODataset, ADOQuery і ADOTable. Для того щоб фільтрація була виконана, в властивість Filter треба записати умова відбору записів і активізувати процес фільтрації - привласнити значення True властивості Filtered (щоб скасувати дію фільтра, властивості Filtered треба привласнити значення False). Слід звернути увагу, що фільтр впливає на набір даних, сформований в результаті виконання команди SELECT. Принципова відмінність механізму фільтрації від вибірки записів командою SELECT полягає в тому, що фільтр впливає на записи, завантажені з бази даних, і приховує записи, що не відповідають критерію запиту, в той час як команда SELECT завантажує з бази даних записи, що задовольняють критерію запиту. Як приклад використання фільтра в лістингу 6.4 наведені процедури обробки подій Click для кнопок Знайти і Всі записи програми роботи з базою даних Нотатки. Обробка події Click (використання фільтра): // Клацання на кнопці Знайти Procedure TForm1.Button1Click (Sender: TObject); begin Form2.ShowModal; // Form2- форма Запит (див. Модуль FindForm.pas) if Form2.ModalResult = mrOk then // Користувач ввів критерій запиту // І натиснув кнопку ОК Begin // фільтр ADODataSet1.Filtered: = False; ADODataSet1.Filtered: = 'name Like' '%' + Form2.Edit1.Text + '%' ''; ADODataSet1.Filtered: = True; Перевірка інформації експерта і гіпотези про характерності | if ADODataSEt1.RecordCount <0 then |