Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Методичка - Організація баз даних і знань.doc
Скачиваний:
60
Добавлен:
02.05.2014
Размер:
631.3 Кб
Скачать

Загальні зауваження до роботи з компонентом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здійснюється методом procedureCloseабо встановленням вFalseвластивостіActive, наприклад

Query1.Active:=False;

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

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

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

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