Документація Reportizer Зміст Індекс

Використання SQL-запитів

Початок Попередній Наступний

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

Написати запит ви можете як при створенні звіту, так і під час його редагування (на сторінці Джерело даних).

Слід писати запити по тим правилам, які визначені для відкритої бази даних: наприклад, якщо відкрито базу даних Oracle, пишіть запит по правилам Oracle, і т.д.

SQL-редактор та підсвітка синтаксису

Запити до кількох баз даних

Запити з параметрами та макросами

SQL-редактор і підсвітка синтаксису

Текст запиту можна ввести з клавіатури або завантажити з файлу (за допомогою відповідної кнопки або простим перетягуванням потрібного файлу з Провідника). Введений SQL-текст можна зберегти в файлі або надрукувати.

SQL-редактор підтримує підсвітку SQL-синтаксису. Використовуйте Опції | Опції редактора... для зміни параметрів підсвітки синтаксису. При друкуванні SQL-тексту зберігаються кольори та синтаксична підсвітка.

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

Запити до кількох баз даних одночасно

З локальних баз даних є можливість будувати запити типу SELECT, які б посилалися на таблиці з зовнішньої бази даних (тільки для підключень BDE). Більше того, можна зв'язувати таблиці кількох баз даних одночасно. Локальна база даних - це база з таблицями Paradox, dBase, або FoxPro, відкрита через аліас BDE або через назву папки. Зовнішньою базою може бути посилання на папку (для локальних таблиць), джерело даних ODBC або аліас BDE. Щоб послатися на таблицю із зовнішньої бази, перед назвою таблиці напишіть двокрапку, назву бази, та ще одну двокрапку, і всю конструкцію візьміть в лапки, наприклад:

SELECT c.custno, o.orderdate

FROM ":CustDSN:customer" c, ":OrderAlias:order" o

WHERE ...

Запити з параметрами та макросами

Параметрі та макроси є свого роду змінними в SQL-тексті. Вони збільшують гнучкість при виконанні запитів, дозволяючи (без зміни тексту) змінювати запит безпосередньо перед його виконанням. Вони отримують значення безпосередньо перед виконанням запиту або від користувача, або через параметри командної строчки, або зі звіту (якщо запит відкривається зі звіту), або ж можуть бути вирахувані автоматично, якщо вони є наперед визначении (див. нижче). Макроси - це завжди текстові змінні; вони замінюються в SQL-тексті своїми значеннями перед виконанням запиту. На відміну від макросів, параметри мають тип; їх значення і типи передаються серверу, а не вставляються в SQL-текст. Макроси і параметри всередині коментарів і строчкових літералів ігноруються програмою, але все-таки не рекомендується включення параметрів всередині коментарів, особливо для підключень ADO. Іноді не суттєво, використовується макрос чи параметр, але часто це має значення.

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

Макроси починаються з << і закінчуються >>. Їх головне призначення: динамічна заміна при виконнані запиту з командної строчки. Текст макросу може містити тільки букви, цифри і знак підкреслювання. Наступний SQL приклад містить макрос CUST_TYPE_LIST:

SELECT * FROM payments

WHERE customertype in (<<CUST_TYPE_LIST>>)

Значенням для такого макросу може бути, наприклад, такий текст:

3, 8, 12, 5

Зауважте, що подібний результат немоливо отримати з використанням параметрів.

Параметри починаються з двокрапки. Параметри, що містять пробіли, повинні братися в одинарні лапки. Параметричні запити зручні тим, що один і той же SQL-вираз можна використовувати для різних даних, які будуть підставлятися тільки на етапі виконання. Наступний SQL приклад містить параметр DATE:

SELECT * FROM payments

WHERE paydate = :DATE

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

SELECT * FROM orders

WHERE orderno < :ORDERNO /* ParamType=Integer */

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

<<SYSTEM_DATE>>заміняються поточною датою (з типом Date)
<<SYSTEM_DATETIME>>заміняються поточними датою і часом (з типом DateTime)
<<SYSTEM_TIME>>заміняються поточним часом (з типом DateTime)
<<SYSTEM_YEAR>>заміняються поточним роком (з типом Integer)
<<SYSTEM_MONTH>>заміняються поточним місяцем (з типом Integer)
<<SYSTEM_DAY>>заміняються поточним днем (з типом Integer)

Якщо наперед визначений параметр починається не з двокрапки, то він інтерпретується як наперед визначений макрос. У випадкуцілочисельних даних результат буде одинаковий, але для інших типів даних можуть бути проблеми, тому краще не плутати макроси та параметри.

Див. також:

 Приклади запитів

 Запуск з командної строчки

 Гарячі клавіші редакторів SQL тексту та тексту звіту

 Джерела даних для звітів