-
Одним из основных назначений разработанного приложения является быстрый поиск информации в базе данных и получение ответов на разнообразные вопросы. Для этих целей в 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). | Рис. 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 (), вы можете подсчитать количество клиентов, проживающих в том или ином городе.
-
В данном примере создадим запрос для таблиц Ordsalem и Ordsaled об итоговой сумме по каждому заказу. | Откройте окно запроса для таблиц Ordsalem и Ordsaled. | На вкладке Fields (Поля) перенесите в список Selected fields (Выбранные поля) поле cndoc, содержащее номер документа.
-
Visual FoxPro по умолчанию присваивает полям результирующей таблицы запроса наименования, которые имеют поля исходной таблицы. Вычисляемым и итоговым полям присваиваются наименования в соответствии с соглашением, принятым в Visual FoxPro.