Запити до бази даних
Одним з основних призначень розробленого додатка є швидкий пошук інформації в базі даних і отримання відповідей на різноманітні питання. Для цих цілей в Visual FoxPro використовуються кошти, звані запитами.
Для створення запиту у вікні конструктора запитів виконайте наступні дії: | На вкладці Data (Дані) конструктора проекту виберіть групу Queries (Запити). | Натисніть кнопку New (Новий). | У діалоговому вікні New Query (Новий запит) натисніть кнопку New Query (Новий запит).
Для роботи у вікні конструктора запиту можна використовувати команди меню Query і панель інструментів Query Designer (Конструктор запиту). Призначення команд і кнопок на панелі інструментів описано в табл. 9.2. | Таблиця 9.2. Призначення команд меню Query і кнопок панелі інструментів Query Designer.
Сформувавши в вікні конструктора запитів умови вибірки, ви можете їх зберегти в файлі з розширенням QPR, що дозволить заощадити час при наступних запусках запиту. | Для збереження умов вибірки в меню File (Файл) виберіть команду Save as (Зберегти як).
В результуючої таблиці запиту поля формуються на основі полів вихідних таблиць і обчислюваних полів. Для завдання списку полів результуючої таблиці запиту призначена вкладка Fields (Поля) конструктора запитів (рис. 9.3).
Visual FoxPro дозволяє не тільки включати в результуючу таблицю запиту інформацію з вихідних таблиць, а й робити обчислення над ними, надаючи, таким чином, можливість отримати дані, відсутні у вихідній таблиці.
Вкладка Order By (Упорядкування) конструктора запитів (рис. 9.6) дозволяє вказати критерій впорядкування даних в результуючій таблиці, використовуючи одне або кілька полів вихідної таблиці, перенесених зі списку Selected fields (Вибрані поля) в список Ordering criteria (Критерії впорядкування).
Тепер розглянемо ситуацію, коли необхідно впорядкувати дані по декількох полях. У цьому прикладі відобразимо дані в результуючій таблиці по містах клієнтів в алфавітному порядку і по спадаючій значень кредиту. При формуванні запиту скористаємося запитом, створеним в попередньому прикладі.
У всіх розглянутих раніше прикладах в запит включалися всі або частину полів вихідної таблиці, упорядкованих відповідним чином. У більшості випадків потрібно отримати окремі записи вихідної таблиці, що задовольняють певним умовам.
Прапорець Not (He), розташований на вкладці Filter (Фільтр) вікна конструктора запитів, дозволяє вибрати з таблиці записи, що не відповідають заданій умові. Наприклад, в попередньому прикладі ми здійснювали вибір клієнтів, які проживають в Москві.
Список варіантів порівняння Criteria (Критерій) вкладки Filter (Фільтр) містить значення, що дозволяють задавати різні критерії обираних в результуючу таблицю записів. При роботі з великими таблицями час від часу виникає необхідність знайти записи, точне написання яких ви не знаєте. Наприклад, ви не знаєте, верхній або нижній регістр був використаний при введенні записів.
Для вибору записів, що лежать в заданому діапазоні значень, використовуються оператори> (більше), <(меньше) и Between (Между) из списка Criteria (Критерий) вкладки Filter (Фильтр). Операторы> (Більше) і <(меньше) используются в том случае, если задана только нижняя или верхняя граница диапазона, a Between (Между) – когда известны обе границы.
Visual FoxPro дозволяє при створенні запиті "формувати кілька умов. У тому випадку, якщо всі поставлені умови накладаються на одне поле, їх можна розмістити в одному рядку. В іншому випадку умови розміщуються в різних рядках вкладки Filter (Фільтр). Наведемо приклад.
У всіх розглянутих раніше в цьому розділі прикладах дані при формуванні запиту вибиралися з однієї таблиці. На практиці при формуванні запитів часто використовуються вибірки з декількох таблиць, т. К.
Розглянемо приклад вибірки товарів, придбаних клієнтами. Для вирішення цієї Завдання нам потрібні таблиці Customer, Ordsalem, Ordsaled і Goods. Таблиця customer містить інформацію про клієнтів, таблиця ordsalem - відомості про замовлення на товари, таблиця ordsaled - відомості про товари, що входять в замовлення (кількість куплених товарів і ціна товару), а таблиця Goods - найменування всіх товарів.
Угруповання полів запиту дозволяє отримати інформацію про підгрупах таблиці. Наприклад, згрупувавши за кодом замовлення дані в таблиці, яка містить відомості про замовлення, можна отримати відомості про підсумковій сумі по кожному замовленню.
У запит можна включати статистичні значення, що обчислюються по одному або декількох полях вихідної таблиці. Наприклад, використовуючи функцію count (), ви можете підрахувати кількість клієнтів, які проживають в тому чи іншому місті.
В даному прикладі створимо запит для таблиць ordsaiem і ordsaied про підсумковій сумі по кожному замовленню. Для цього: | Відкрийте вікно запиту для таблиць Ordsaiem і Ordsaied. | На вкладці Fields (Поля) перенесіть в список Selected fields (Вибрані поля) поле icdorder, що містить код замовлення.
Visual FoxPro за замовчуванням присвоює полях результуючої таблиці запиту найменування, які мають поля вихідної таблиці. Обчислюваним і підсумковим полях присвоюються найменування відповідно до угоди, прийнятим в Visual FoxPro.