Установка значень для пошуку 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Установка значень для пошуку



 

Пошук може здійснюватися тільки по індексним полям.

Склад полів, що використовуються для ідентифікації потрібного запису при пошуку в НД, визначається поточним індексом. Тому, якщо поля, по котрим необхідно здійснити пошук, не входять в індекс, що є поточним у даний момент, то у якості поточного індексу потрібно встановити індекс, побудований з полів, за значеннями яких і планується здійснити пошук. Для встановлення поточного індексу використовують властивості IntexFieldNames або IntexName.

Для індексів, до складу яких входять більше одного поля, повинні вказуватися значення всіх полів, що входять в індекс, або значення полів старших рівнів вкладеності.

Точний пошук

Для точного пошуку (пошуку на точну відповідність) застосовується метод

function FindKey([список значень]):Boolean;

При пошуку на точну відповідність робиться спроба відшукати в НД запис, у котрого індексні поля відповідають значенням, зазначеним у списку записів. Якщо такий запис знайдено, то метод FindKey повертає True і робить знайдений запис поточним. Якщо знайдено декілька записів, що відповідають умові, то поточним стає логічно перший із них. Якщо запис не знайдено, то курсор НД не переміщується і метод FindKey повертає False.

Неточний пошук

Неточний пошук (пошук на неточну, приблизну відповідність) застосовує метод

procedure FindNearest([список параметрів]);

При пошуку на неточну відповідність робиться спроба відшукати в НД запис, у якого індексні поля відповідають значення, вказаним у списку значень. Якщо такий запис знайдено, то покажчик поточного запису в НД переміщується на нього або на наступний запис, у залежності від значення властивості property KeyExclusive:Boolean. Якщо KeyExclusive=False (за замовчуванням), то покажчик поточного запису переміщується на знайдений запис. Якщо KeyExclusive=True, то покажчик поточного запису переміщується на наступний за знайденим запис. Якщо запис не знайдено, то покажчик поточного запису завжди переміщується на найближчий запис з більшим значенням індексу.

 

Приклад: Виконати пошук у таблиці Група.


Практична робота № 8

 

Тема: Організація фільтрації у базі даних

Мета: Вивчення властивостей, методів та подій для фільтрації записів

 

Завдання:

 

1 Виконати фільтрацію по одному та декількох полях.

2 Виконати фільтрацію з використанням індексів та без індексів.

Обов’язкові засоби: SetRange, Filter, Filtered, FindFirst, FindLast, FindNext, FindPrior.

 

Зміст звіту.

 

1 Опис застосування з зазначенням встановлених значень властивостей компонентів.

2 Лістинги розроблених процедур та їх аналіз.

3 Висновки по роботі.

 

Порядок виконання роботи

 

Методи ApplyRange і SetRange.

Для фільтрації записів у ТБД компонент TTable має такі методи:

procedure SetRangeStart - встановлює нижню межу фільтра;

procedure EditRangeEnd - встановлює верхню межу фільтра;

procedure ApplyRange - здійснює фільтрацію записів у TTable; умови фільтрації визначаються методами SetRangeStart і EditRangeEnd;

procedure SetRange(const StartValues, EndValues: array of const) - дає той же ефект, що і послідовне виконання методів SetRangeStart, EditRangeEnd і ApplyRange. У якості параметрів використовуються масиви констант, які містять значення ключових полів. Методи ApplyRange / SetRange показують у НД тільки ті записи, індексні поля яких лежать у діапазоні [StartValues.. EndValues].

Фільтрація методами ApplyRange / SetRange проводиться по полю (полях) поточного індексу, обумовленого властивістю TTable.IndexName або TTable.IndexFieldNames. У випадку, якщо значення цих властивостей не встановлені, за замовчуванням використовується головний індекс ТБД. Тому, якщо потрібно використати індекс, відмінний від головного, необхідно явно перевстановити значення властивості TTable.IndexName (ім'я поточного індексу) або TTable.IndexFieldNames (список полів поточного індексу).

property Filtered:Boolean;

Властивість Filtered, встановлена в True, ініціює фільтрацію, умова якої записана або в обробнику події OnFilterRecord, або утримується як текстове значення у властивості Filter. Якщо встановлені різні умови фільтрації і у події OnFilterRecord, і у властивості Filter, то виконуються обидві.

Установка Filtered у False призведе до скасування фільтрації, умови якої зазначені в події OnFilterRecord або (і) у властивості Filter. При цьому фільтрація, накладена на НД методом SetRange або ApplyRange і йому супутніми методами, не порушується.

Властивості Filter і Filtered.

Властивість

property Filter:string;

дозволяє задати умови фільтрації. НД буде відфільтрований, як тільки його властивість Filtered стане рівною True.

При записі умови фільтрації можна застосовувати оператори відношення: <; >; >=; <=; =; <>; а також використовувати логічні оператори AND, NOT і OR.

 

Використання методів FindFirst, FindLast, FindNext, FindPrior.

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

Для цього використовуються методи FindFirst, FindLast, FindNext, FindPrior.

Умову фільтрації можна зробити співпадаючою з умовою пошуку, зазначеною у параметрі KeyValues методу Locate. При цьому пошук за допомогою зазначених методів має перевагу перед пошуком за допомогою Locate: якщо у Locate можна вказувати тільки значення, то в умові фільтрації можна вказувати логічні умови.

У випадку, якщо запис знайдено, дані методи повертають True у протилежному випадку - False.

function FindFirst: Boolean; - переходить на перший запис, що задовольняє умові фільтрації;

function FindLast: Boolean; - переходить на останній запис, що задовольняє умові фільтрації;

function FindNext: Boolean; - переходить на наступний запис, що задовольняє умові фільтрації;

function FindPrior: Boolean; - переходить на попередній запис, що задовольняє умові фільтрації;

 

Приклад: Виконати фільтрацію у таблиці студент.

 

Початкова форма:

 

Результат:

 

 


ЗАГАЛЬНІ ЗАУВАЖЕННЯ ДО РОБОТИ З КОМПОНЕНТОМ TQuery

 

 

Компонент TQuery призначений для:

– виконання запитів до БД, які повертають НД, джерелом даних для якого можуть слугувати записи як однієї, так і декількох таблиць БД;

– виконання запитів до БД, які не повертають наборів даних (додавання, зміна, видалення записів в ТБД тощо).

Текст будь-якого запиту зберігається у властивості SQL компонента TQuery.

Таким чином, один компонент TQuery використовується для виконання таких різних запитів, як, наприклад, SELECT та INSERT.

Для з’єднання компонента TQuery з базою даних необхідно у властивості DatabaseName вказати:

– псевдонім БД, раніше визначений за допомогою утиліти BDE Adminastrator;

– перевизначений псевдонім із властивості DatabaseName явно визначеного компонента TDataBase, якщо він використовується.

Запити, що виконуються компонентом TQuery, можуть бути статичними або динамічними.

Статичний запит характеризується тим, що SQL-оператор, який його описує, не змінюється в процесі роботи застосування.

SQL-оператор динамічного запиту може частково змінюватися під час роботи застосування. В цьому випадку ті частини SQL-оператора, що змінюються, оформлюють у вигляді параметрів, значення яких можуть багаторазово змінюватись в процесі роботи застосування.

Для формування статичного запиту необхідно:

1 Вибрати для існуючого компонента TQuery властивість SQL в інспекторі об’єктів і натиснути кнопку в правій частині рядка.

2 У вікні текстового редактора набрати текст SQL-запиту та натиснути ОК.

3 Встановити властивість Active компонента в True, якщо результуючий НД необхідно відкрити в момент початку роботи застосування, або залишити властивість Active у стані False, якщо відкриття НД буде виконуватися в програмі в деякий момент роботи застосування.

Умову вибору записів, що реалізована в статичному запиті, змінити не можна.

У випадку динамічного запиту під параметром розуміють ім’я, перед яким ставиться двокрапка, наприклад:

:Parameter1

Імена параметрів можуть бути довільними.

Для формування динамічного запиту необхідно:

1 Вибрати для існуючого компонента TQuery в інспекторі об’єктів властивість SQL і натиснути кнопку текстового редактора.

2 У вікні текстового редактора набрати текст SQL-оператора з параметрами.

3 Вибрати в інспекторі об’єктів властивість Params і натиснути кнопку у рядку даної властивості. У вікні, що з’явиться, будуть показані імена всіх параметрів, введених у текст динамічного SQL-оператора на кроці 2. Список параметрів відслідковується автоматично щоразу при змінні складу властивості SQL.

4 Кожному параметру необхідно поставити у відповідність деякий тип, а якщо потрібно, то й стартове значення в полі Value. Перемикач Null Value дозволяє вказувати в якості стартового значення NULL.

5 Компонент TQuery можна зробити активним (встановити властивість Active=True) на стадії розробки застосування лише у тому випадку, коли для кожного з параметрів визначено стартове значення.

Якщо компонент TQuery не відкрито в момент створення форми, його можна відкрити в будь-який момент програмно.

У випадку використання оператора SELECT, після відкриття компонента TQuery повертається набір даних. Такий компонент TQuery необхідно відкривати:

– встановленням властивості Active в значення True, наприклад:

Query1.Active:=True;

– виконанням метода procedure Open, наприклад:

Query1.Open;

У випадку використання операторів INSERT, UPDATE, DELETE, набір даних не повертається. Такий компонент TQuery необхідно відкривати, виконуючи метод procedure ExecSQL, наприклад:

Query1.ExecSQL;

Закриття компонента TQuery здійснюється методом procedure Close або встановленням в False властивості Active, наприклад

Query1.Active:=False;

Виконання методу Close для компонента TQuery, який не повертає набір даних, не має ніяких наслідків, оскільки з компонентом не пов’язаний відкритий набір даних.

Для передачі значень параметрів може використовуватись властивість DataSource компонента TQuery. У цьому випадку явного надання значень параметрам динамічного запиту не виконується, тобто не кодуються оператори присвоєння типу

Query1.ParamByName(‘Ім’я Параметра’).Value:=Значення;

Застосування визначає, чи є посилання на будь-який компонент TDataSource у властивості DataSource компонента TQuery. Якщо такого посилання немає – відбувається збудження виключної ситуації; якщо є – в наборі даних, що пов’язаний з TDataSourse, відшукуються поля, які мають такі ж імена, як і параметри динамічного запиту. Якщо такі поля є, то їх поточні значення беруться в якості значень параметрів, якщо таких полів немає - відбувається збудження виключної ситуації.

 


Практична робота № 9

 

Тема: Організація статичних запитів за допомогою мови SQL

Мета: Набуття практичних навичок роботи з компонентом TQuery для організації статичних запитів.

 

Завдання:

 

1 Розробити застосування, яке дозволяє вводити текст SQL-оператора та переглядати результати виконання запиту.

2 Обов’язкові засоби: TQuery.

 

Зміст звіту:

 

1 Структури таблиць робочої бази даних.

2 Тексти статичних SQL-операторів, які виконують команди оновлення даних ТБД (INSERT, UPDATE, DELETE) та команди маніпулювання даними (SELECT). Навести словесний опис запитів.

3 Опис роботи застосування. Навести фрагменти програмних кодів, які виконують введені SQL-оператори.

4 Аналіз результатів роботи.

 

Порядок виконання роботи

 

На формі (Form1) розміщуються робочі ТБД (компоненти TQuery, TTable, TDataSource, TDBGrid), поле для вводу SQL-оператора (компонент TMemo), два компоненти TPanel. Після введення SQL-оператора користувач натискає одну з екранних кнопок:

– «Виконати запит», після чого введений запит виконується для однієї чи декількох таблиць; результат виконання запиту виводиться на іншій формі у модальному режимі;

– «Виконати оновлення», після чого у зазначеній таблиці буде модифіковано, введено або вилучено визначений в SQL-операторі рядок (рядки). Для перегляду результатів оновлення необхідно виконати метод Refresh.

На другій формі розміщуються компоненти TDataSource, TDBGrid, які використовуються для виведення результатів виконання запиту. При натисканні кожної з кнопок на першій формі текст SQL-оператора переписується з компонента Memo1 у властивість SQL компонента Query1.

 

 

Приклад: Знайти прізвища всіх студентів, які займаються на факультеті АІТ.

 

 

Результат:

 

 


Практична робота № 10

 

Тема: Організація зв’язку багато-до-багатьох

Мета: Набуття практичних навичок роботи з компонентом TQuery

 

 

Завдання:

 

Розробити застосування для формування проміжної таблиці при реалізації зв’язку багато-до-багатьох за допомогою параметричних SQL-операторів оновлення даних ТБД (INSERT, DELETE).

Обов’язкові засоби: TQuery.

 

Зміст звіту:

 

1 Структури таблиць, які зв’язані відношенням багато-до-багатьох.

2 Тексти динамічних SQL-операторів, які виконують оновлення проміжної таблиці (INSERT, DELETE). Навести словесний опис запитів.

3 Опис роботи застосування. Навести фрагменти програмного коду.

4 Аналіз результатів роботи.

 

Порядок виконання роботи

 

Застосування повинно складатися з двох форм. На першій розмістити одну з двох головних таблиць. Активізацію другої форми реалізувати за допомогою порожнього стовпця компонента TDBGrid, пов’язаного з першою таблицею. Для цього доповнити компонент DBGrid1 новим стовпцем (Columns Editor / Add). Встановити властивість ButtonStyle порожнього стовпця в значення cbsEllips. Це призведе до того, що в режимі редагування порожнього стовпця з’явиться кнопка (…). При її натисканні виникає подія OnEditButtonClick. В обробнику цієї події передбачити виклик другої форми, що включає другу головну таблицю та проміжну.

Кнопки Ввести запис і Видалити запис дозволяють формувати поточне значення проміжної таблиці. При розробці додатку продемонструвати різні способи передачі значень параметрам запиту – явне шляхом присвоєння параметру значення:

– деякого поля поточного запису таблиці;

– властивості Text компонента TЕdit;

та неявне:

– за допомогою властивості DataSource компонента TQuery.

 

 

Приклад. Головна форма:

 

 

Форма, яка викликається для редагування проміжної таблиці:

 

 


Практична робота № 11

 

Тема: Формування запитів з використанням мови QBE та за допомогою засобу Visual Query Builder

Мета: Виконання основних операцій по створенню запитів мовою QBE

 

 

Завдання:

 

За допомогою засобу Visual Query Builder і QBE сформувати тексти SQL-операторів SELECT, що виконують:

– пошук інформації за заданою умовою у декількох таблицях (розглянути випадки декількох умов, з’єднаних зв’язками AND і OR);

– обчислення агрегатних функцій (COUNT, SUM, MAX, MIN) з групуванням за значенням деякого стовпця;

– накладення умови на групу.

 

Зміст звіту:

 

1 Структури таблиць робочої бази даних.

2 Опис запитів: а) словесний; б) мовою SQL; в) мовою QBE.

3 Аналіз результатів роботи.

 

Порядок виконання роботи

 

Формування тексту SQL-оператора SELECT може здійснюватися за допомогою вбудованого в Delphi засобу Visual Query Builder або засобу QBE, що входить до складу DatabaseDesktop. Використання цих конструкторів дозволяє спростити процес побудови складних запитів.

Для формування тексту SQL-оператора SELECT за допомогою Query Builder необхідно виконати такі операції:

1 Помістити на форму (звичайну або модуля даних) компонент типу TQuery. Задати ім’я об’єкту запита (властивість Name). Надати значення властивості DatabaseName.

2 Клацнути правою кнопкою миші на компоненті типу TQuery і з контекстного меню вибрати Query Builder. Якщо з’явиться вікно вибору бази даних, двічі клацнути на відповідному імені.

3 У вікні Add Table необхідно вибрати імена таблиць, які будуть брати участь в запиті. Двічі клацнути на відповідних іменах таблиць і закрити діалогове вікно. З’явиться вікно Visual Query Builder, що включає вибрані таблиці.

4 Для реалізації з’єднання двох таблиць необхідно перетягти стовпчик, за яким виконується з’єднання, з першої таблиці на відповідний стовпчик другої таблиці. Між стовпцями повинна з’явитися лінія, що з’єднує таблиці.

5 Необхідно визначити, які стовпці таблиць, що з’єднуються, будуть входити до результуючої таблиці. Щоб додати стовпець до запиту, необхідно двічі клацнути на ньому. Назва стовпця повинна з’явитися в нижній частині вікна Query Builder.

6 Умови, що накладені на значення стовпців, вводяться в графі Criteria цих стовпців в нижній частині вікна Query Builder. Для динамічних запитів в графі Criteria вказується умова порівняння з параметром.

7 Для групування даних, що повертаються запитом, за значенням деякого стовпця необхідно в нижній частині вікна Query Builder клацнути правою кнопкою миші на полі Options цього стовпця і зі списку, що з’явиться, вибрати пункт Group.

8 Для визначення умови обчислення агрегатних функцій (COUNT, SUM, MAX, MIN) використовується Expression Builder (кнопка a+b) панелі інструментів засобу Query Builder. В діалоговому вікні Expression можна сформувати необхідний вираз. Для цього:

– В рядку Expression Name ввести псевдонім стовпця, що обчислюється;

– Із списку Tables вибрати ім’я таблиці, для якої буде обчислюватися агрегатна функція;

– Двічі клацнути на імені агрегатної функції в списку Function і двічі на імені відповідного стовпця в списку Columns;

– Повернутися в головне вікно Query Builder, натиснувши Save і Close.

9 Для перегляду SQL-оператора, згенерованого системою Query Builder, натиснути кнопку View SQL (на піктограмі кнопки зображені окуляри).

10 Після закінчення роботи з Query Builder запит буде автоматично збережено у властивості SQL відповідного компонента TQuery. Імена параметрів, що використовуються в запиті, будуть автоматично внесені у властивість Params цього компонента.

Для формування тексту SQL-оператора SELECT за допомогою засобу QBE необхідно виконати такі операції:

11 Запустити DatabaseDesktop (опції Tools / DBD) і настроїти Working Directory на необхідний аліас.

12 Вибрати пункти меню File / New / QBEQuery. З’явиться діалогове вікно зі списком усіх таблиць зазначеної БД.

13 Виберіть необхідні таблиці у вікні Select File і закрийте його. У вікні Query з’являться шаблони таблиць, що додані до запиту. При необхідності можна збільшити розміри вікна Query. Ще раз відкрити вікно Select File можна клацнувши на піктограмі Add Table (кнопка +) панелі інструментів.

14 Для з’єднання таблиць використайте екземпляри елементів, що ідентифікують спільні поля таблиць.

– У випадку природного з’єднання клацніть на піктограмі Join Tables. Потім клацніть на стовпцях, за якими виконується з’єднання для обох таблиць. В кожному полі з’явиться слово join1. Повторіть цей процес для з’єднання інших таблиць, що входять до запиту.

– У випадку -з’єднання введіть умову з’єднання, натисніть F5 (або введіть знак підкреслення) і зазначте екземпляр елемента, що ідентифікує поля, які порівнюються. Екземпляр елемента буде виділено червоним кольором.

15 Щоб додати стовпчик до результуючої таблиці запиту, необхідно клацнути на прапорці, що пов’язаний з цим стовпчиком. З’явиться прапорець 3, який вказує, що в результуючій таблиці будуть виведені унікальні дані в порядку їх збільшення. У випадку, коли необхідно вивести усі результуючі дані, включаючи дублікати, виберіть прапорець 3+ (з меню за правою кнопкою миші). У цьому випадку дані не будуть сортуватися. Для сортування у порядку зменшення даних виберіть прапорець 3 .

16 Умови, що накладені на значення стовпця, вводяться в полі стовпця. Для введення умов, що з’єднані зв’язкою OR необхідно ввести ще один рядок в шаблон таблиці (клавіша Insert). Для вилучення рядка з шаблону натиснути Ctrl+Del.

17 Для визначення умови обчислення агрегатних функцій (COUNT, SUM, MAX, MIN) необхідно описати поле, що обчислюється (типу cаlc) в будь-якому з стовпців шаблона. Встановити прапорець 3 в полі, за значеннями якого треба згрупувати дані.

18 Для перевірки своєї роботи можна переглянути результуючу таблицю. Для цього клацніть на піктограмі з зображенням блискавки.

Для перетворення оператора QBE в SQL-оператор, клацніть на піктограмі SQL. Отриманий SQL-вираз можна зберегти на диску або скопіювати в буфер обміну і вставити у властивість SQL об’єкта TQuery.

 

Приклад: Знайти прізвища всіх студентів, які вчаться на спеціальності ІТЕП.

Результат виконання запиту:

 


Практична робота № 12

 

Тема: Побудова звітів

Мета: Вивчення методів побудови простих та складних звітів

 

 

Завдання:

 

1 Створення простих звітів з використанням математичних обчислень;

2 Групування даних у звіті;

3 Побудова звітів на основі декількох зв’язаних таблиць;

4 Побудова композитного звіту.

Примітка: звіти будуються як на основі однієї таблиці, так і на основі декількох зв’язаних таблиць.

Обов’язкові засоби: TQuickRep, TQRBand, TQRSubDetail, TQRGroup, TQRExpr, TQRSysDate, TQRChart, TQRLabel, TQR DBText.

 

Зміст звіту:

 

1 Опис НД, який є основою для формування звіту.

2 Опис форми звіту.

3 Аналіз результатів роботи.

 

Порядок виконання роботи

 

В Delphi на сторінці палітри компонентів QReport розміщено біля двох десятків компонентів, які застосовуються для побудови звітів.

Головним компонентом є TQuickRep, який визначає поведінку звіту в цілому. Інші компоненти визначають стан частини звіту.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 98; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.140.185.170 (0.118 с.)