Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METODIChKA_-_OBDZ_I_semestr.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.27 Mб
Скачать

Тема 24 «Методи компонента tadoTable» План

  1. Методи компонента TADOTable.

  2. Призначення методів компонента TADOTable.

Література

  1. Гофман В. Э. «Работа с базами данных в Delphi». Санкт-Петербург: БХВ. 2001 р.

  2. Флёнов М. «Библия Delphi». 3-е издание. БХВ-Петербург 2011 г.

  3. Рубанцев В. «Delphi в примерах, играх и программах». 2011 г.

  4. Понамарёв В. «Базы данных в Delphi 7. Самоучитель». Питер. 2003 г.

  5. Бобровский С. «Delphi 7. Учебный курс». Питер. 2004 г.

  6. http://citforum.ru

Властивостей дуже багато і більшість з них дуже корисні. Але методи не менш корисні.

BookmarkValid – цей метод перевіряє правильність закладки. В якості єдиного параметра треба вказати закладку типу TBookmark і якщо вона є дійсною, то результатом буде true.

CancelUpdates - відмінити оновлення, які збережені в кеш-пам’яті

CompareBookmarks - порівняння двох закладок. У метода два параметри типу TBookmark. Ці дві закладки порівнюються. Якщо закладки рівні, то результат дорівнює нулю. Якщо перша менше за другу, то результат буде - 1. Якщо перша більше за другу, то результат дорівнює одиниці.

DeleteRecords – видалити записи. У метода один параметр - які записи видаляти. Можна вказати наступні значення в якості параметра:

- arCurrent знищити лише поточний запис.

- arFiltered знищити записи, які задовільняють встановленому фільтру.

- arAll – всі записи.

- arAllChapters знищити записи у всіх розділах ADO.

Append – додати новий запис в кінець таблиці.

Cancel – відмінити зміни поточного рядка, якщо зміни ще не були збережені за допомогою методу Post.

Close – закрити таблицю.

Delete – знищити поточний рядок.

Edit – перейти в режим редагування. Після цього можна змінювати значення полів.

FieldByName – знайти поле за іменем. В якості єдиного параметра треба вказати ім'я поля у вигляді рядка і в результаті отримуємо посилання на поле у вигляді об'єкту TField.

First – перейти на перший рядок в таблиці.

Insert – додати новий рядок в таблицю.

IsEmpty – якщо метод поверне true, то в таблиці не має жодного запису.

Last - перейти на останній запис в таблиці.

Next – перейти на наступний запис.

Post – прийняти всі зміни.

Prior - рухатися на попередній запис в таблиці.

Refresh – оновити інформацію про дані.

UpdateRecord – оновити поточний запис.

Контрольні питання:

  1. Які методи може мати компонент ADOTable?

  2. Яке призначення має кожен з методів компонента ADOTable?

Тема 25 «Керування відображенням даних» План

  1. Створення модуля даних.

  2. Вікно редагування полів таблиці бази даних.

  3. Властивості полів таблиці бази даних.

Література

  1. Гофман В. Э. «Работа с базами данных в Delphi». Санкт-Петербург: БХВ. 2001 р.

  2. Флёнов М. «Библия Delphi». 3-е издание. БХВ-Петербург 2011 г.

  3. Рубанцев В. «Delphi в примерах, играх и программах». 2011 г.

  4. Понамарёв В. «Базы данных в Delphi 7. Самоучитель». Питер. 2003 г.

  5. Бобровский С. «Delphi 7. Учебный курс». Питер. 2004 г.

  6. http://citforum.ru

У попередньому прикладі все працює прекрасно, тільки ось поле Key1 користувачеві бачити абсолютно не треба. Це поле - лічильник і його значення збільшується автоматично. А раз користувач не може впливати на поле і воно не несе в собі корисної для нього інформації, то і бачити це поле він не повинен.

Щоб приховати від користувача не потрібні поля і показувати тільки те, що треба і в тому вигляді, в якому хочемо, необхідно навчитися керувати відображенням даних. Але перш ніж приступити до цього, треба створити в базі ще два поля «Дата» і «Мобильник». Для цього треба завантажити базу даних в Access, натиснути по ній правою кнопкою і в меню, що з'явиться, обрати «Конструктор».

Рисунок 25.1 - Редагування таблиці

1. Додайте поле з іменем «Дата», тип «Дата/время».

2. Додайте поле з іменем «Мобильник», тип «Логический». Якщо в рядку знаходиться мобільний телефон, то в цьому полі треба буде ставити true, інакше «false».

Далі треба закрити таблицю. Перейти в Delphi та спробувати відобразити зміни в вже створеному прикладі.

Спершу треба перенести компоненти доступу до бази даних в окреме спеціальне вікно. Виділи компоненти ADOConnection1, DataSource1 і BookTable. Потім обрати з меню Edit пункт Cut, щоб ці компоненти скопіювалися у буфер обміну і відразу знищилися з форми.

Наступним кроком треба обрати з меню File->New->Data Module (рисунок 25.2). Цим Delphi створить спеціальне вікно Data Module, яке зручно підходить для зберігання компонентів доступу до баз даних.

Рисунок 25.2 - Створення модуля Data Module

Тепер треба обрати з меню Edit пункт Paste, щоб вставити в це вікно вирізані компоненти. Зручно розташувати ці компоненти у вікні (рисунок 25.3).

Рисунок 25.3 - Вікно Data Module

Тепер усі компоненти, які призначені для доступу до бази даних, треба буде розташовувати тут, щоб з ними зручно було працювати. Збережіть новий модуль під ім'ям DataModuleUnit.

Потім необхідно відкрити менеджер проектів (у меню View потрібно вибрати Project Manager) і розташувати це вікно так, щоб було зручно у будь-який момент отримати до нього доступ.

Тепер, коли потрібно буде перейти з головної форми в модуль даних DataModule або назад, легко можна буде зробити це за допомогою менеджера проектів, двічі клацнувши по потрібній формі (рисунок 25.4):

Рисунок 25.4 - Менеджер проектів

Якщо хоч раз вже відкривалась якась форма з менеджера проектів і не закривалась, то її можна знайти на закладках у вікні редактора коду (рисунок 25.5):

Рисунок 15.5 - Закладки форм в редакторі коду

І ще треба нагадати, що перемикатися між візуальною формою і її кодом дуже зручно простим натисненням клавіші F12.

Далі необхідно перейти в головну форму, де відразу можна побачити, що в нашій сітці DBGrid1 немає даних. Чому? Та тому що вона втратила зв'язок з компонентами доступу до даних. Видіть сітку і клацніть по властивості DataSource, після чого можна буде побачити, що у списку, який відкривається, нічого немає. Це тому що усі потрібні компоненти були перенесені в окрему форму і головна форма доки про це не знає.

Щоб форма дізналася про існування компонентів, їй треба вказати в розділі uses модуль DataModuleUnit. Це можна зробити вручну або вибрати з меню File пункт Use Unit (у цей момент має бути виділене вікно коду головної форми, тому що здійснюється підключення нового модуля саме до неї. У вікні, що з'явиться (рисунок 25.6) треба вибрати ім'я нового модуля DataModuleUnit (доки воно одно в списку) і натиснути ОК.

Обов’язково треба перевірити, щоб в редакторі коду, після ключового слова implementation з’явилось «uses DataModuleUnit;»:

implementation

uses DataModuleUnit;

{$R *.dfm}

Рисунок 25.6 - Вікно підключення нового модуля

Ось тепер можна виділяти сітку DBGrid1 та в властивості DataSource вказувати компонент DataSource, дані якого повинні бути відображені в сітці (DataModule1.DataSource1).

Тепер треба перейти до модуля DataModule та спробувати налаштування відображення даних. Для цього треба двічі натиснути по компоненту BookTable. Після чого з’явиться вікно редагування полів бази даних (рисунок 25.7):

Рисунок 25.7 - Вікно редагування полів бази даних

Поки що воно порожнє і сюди треба додати усі поля бази даних. Для цього необхідно клацнути в ньому правою кнопкою миші і в меню, що з'явиться, обрати пункт Add All Field (Додати всі поля). Вікно автоматично заповниться іменами полів (рисунок 25.8). Властивості можна переставляти місцями рухаючи мишкою. При цьому фізичне розташування в базі даних не змінюється, зате при відображенні даних в сітці, вони відображатимуться в тому порядку, в якому вони побудовані тут. Так що в будь-який момент можна змінити порядок відображення даних, не втручаючись в саму базу даних.

Тепер можна виділяти окремі поля і в об'єктному інспекторові редагувати їх властивості. Властивості у полів можуть бути різні, залежно від типу поля.

Риунок 25.8 – Заповнене вікно редагування полів бази даних

По-перше, що треба зробити - прибрати з видимості лічильник (поле Key1). Ми вже домовилися, що користувачеві воно не треба і він не повинний його бачити. Виділіть цю властивість і в об'єктному інспекторові, встановіть в властивості Visible значення false (ця властивість є у усіх полів). Відразу ж можна перейти в головну форму або запустити програму, щоб переконатися в тому, що поле Key1 більше не відображається.

Тепер відредагуємо довжину відображення колонок. Для цього треба виділити властивість «Фамилия». В базі даних було видведено під це поле 50 символів (про всяк випадок). У сітці ширина колонки відображатиметься за умовчанням на всю довжину. Але найчастіше прізвища не перевищують 15 символів, тому немає сенсу відображати усю довжину. На багато зручніше відображати тільки 15 символів, а якщо щось не поміститься, то користувач програми у будь-який момент зможе розсунути колонку і побачити бракуючі символи.

За ширину колонки відповідає властивість DisplayWidth(ця властивість є в усіх полів). За умовчанням в нім стоїть значення фізичної ширини поля, але ми вкажемо там 15.

Знову ж таки, на саму базу даних це не впливає і поле все ще має розмір 50, але ширина колонки, що відображається, в сітці буде 15. Так само треба скоротити ширину поля «Имя».

Розглянемо ще декілька цікавих властивостей:

DefaultExpression тут можна вказати значення за умовчанням. Надалі, коли створюватимуться нові рядки, то в поля відразу заноситимуться вказані тут значення.

MaxValueмаксимально допустиме значення. Якщо це числове поле і воно повинне змінюватися в певних рамках (наприклад, від 0 до 100), то бажано вказати ці обмеження тут, щоб скоротити вірогідність друкарської помилки користувачем. Усі люди схильні до помилок, так нехай програма автоматично скорочує вірогідність таких помилок.

MinValue - мінімальне допустиме значення.

ReadOnly - поле тільки для читання. Якщо якесь поле не повинне змінюватися, то треба встановити у нього у властивості ReadOnly значення true. В цьому випадку користувач забезпечить програму від випадкової зміни цього поля.

Required - якщо тут true, то поле є обов'язковим і обов'язково повинне мати якесь значення. Якщо користувач нічого не вкаже, то програма повідомить про це. Припустимо, що якесь поле бере участь в розрахунках. Якщо в цьому полі не виявиться даних, то програма може зависнути. Є два шляхи - при розрахунку перевіряти наявність в полі даних або вимагати, щоб користувач обов'язково щось ввів. Другий шлях прийнятніший, якщо це поле дійсно важливе.

Tag – просто числове значення, яке можна використовувати за власним розсудом.

Зараз в нашому вікні поміщається практично вся необхідна інформація і не потрібно зайвий раз використовувати смуги прокрутки (рисунок 25.9):

Рисунок 25.9 - Покращене вікно програми

Далі треба запустити програму і заповнити поле «Дата» у усіх записів будь-якими значеннями. При заповненні необхідно бути уважним і вказувати реальні дати. Якщо буде введене неприпустиме значення, то програма висвітить помилку.

При введенні даних треба враховувати роздільник чисел. У більшості російськомовних ОС Windows як роздільник використовується крапка або знак косої риски «/». До того ж першим йде число, потім місяць і потім рік (у англомовній версії першим може йти місяць). Пробіли не допустимі. Цей порядок і роздільник настроюються в налаштуваннях ОС. Увійдіть до «Панелі управління» і запустіть вікно «Язык и стандарты» (рисунок 25.10). Тут можна змінити усі налаштування введення дати, часу і чисел.

Рисунок 25.10 - Налаштування формату введення та відображення дати

Повернемося до Delphi. Наступним кроком треба виділити поле «Дата». Перше, що ми повинні зробити - уточнити, яку саме дату тут потрібно вводити. Оскільки це телефонний довідник, то будуть вказуватися дати народження власника телефону. Тому, цілком розумно буде в заголовку сітки відображати не просто «Дата», а «Дата рождения». Тут можна поступити двома способами - відредагувати ім'я поля у базі даних (не зовсім розумно) або просто змусити Delphi відображати в заголовку поля потрібний текст.

За текст що відображається в заголовку відповідає властивість DisplayLabel (ця властивість є у усіх полів). Введемо в ньому текст «Дата рождения». Можна перевірити, що тепер в заголовку відображається потрібний текст.

Тепер відредагуємо формат відображення дати. За це відповідає властивість DisplayFormat. Тут можна вказувати текстовий формат, в якому треба відображати дату. Як відображати? Згадайте функцію FormatDateTime і її перший параметр. Ось саме це тут і можна вказувати. Прийнятно використати для відображення повний формат – «dddddd».

Ну і нарешті треба вказати маску введення для дати. Її треба вказувати у властивості EditMask і так само, як це робилось у компонента TMaskEdit. Для дати краще використовувати маску введення «99/99/9999».

Якщо тепер запустити наш приклад, то в полі «Дата рождения» всі дати відображатимуться в повному форматі (рисунок 25.11). Якщо двічі натиснути по цьому полю у будь-якому рядку (увійти до режиму редагування рядка), то дата відразу перейде в режим редагування (дивіться рисунок 25.11другий рядок):

Рисунок 25.11 - Покращений вигляд поля «Дата рождения»

Останнє, що потрібно відредагувати - поле «Мобільник». Поки що тут відображаються значення true або false. Але зручніше було б бачити рідні Да або Нет. Для цього треба виділити це поле і в об'єктному інспекторові знайти властивість DisplayValues. Для булевих полів тут треба вказати два значення у форматі «True;False», тобто спочатку вказується позитивне значення і після крапки з комою негативне (лапки вказувати не потрібно).

Теперь в поле «Мобильник» будуть відображатися зрозумілі слова, та при редагуванні зараз треба буде вводити не true або false, а Да або Нет.

Контрольні питання:

      1. Що таке модуль даних? Як створити модуль даних? Яким способом можна підключити модуль даних?

      2. Що таке менеджер проектів? Як можна визвати менеджер проектів?

      3. Як отримати доступ до вікна редагування полів таблиці бази даних?

      4. Яким чином можна отримати доступ до властивостей кожного поля таблиці?

      5. Завдяки якій властивості можна зробити поле невидимим?

      6. Яка властивість відповідає за відображення дати?

      7. Який вигляд буде мати дата якщо для властивості DisplayFormat задати значення «dddddd»?

      8. Яке призначення має властивість EditMask?

      9. Які значення може приймати властивість DisplayValues?

117

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