Из предыдущей главы Вы узнали, как просмотреть информацию в таблице. Но что делать, если окажется, что нужно просмотреть информацию заданного типа ? Например, может потребоваться узнать все о покупателях, израсходовавших свыше $5000, или узнать лишь имя и номер каждого покупателя. FoxPro позволяет быстро извлекать и просматривать информацию, отвечающую заданным условиям. Процесс извлечения указанной информации называется "запросом".
Как открыть окно запроса
В меню "Файл" выберите команду "Открыть" и в каталоге FOXPROWTUTORIAL выберите файл CUSTOMER.DBF и нажмите кнопку "Открыть". Затем, в меню "Файл" выберите команду "Создать". В диалоге "Создать файл" установите опцию "Запрос", а затем нажмите кнопку "Создать". Появится окно запроса.
Рис. 2.1. Как открыть окно запроса
В окне запроса указывается информация, которую требуется извлечь из таблиц. Извлеченная информация помещается в окно просмотра. Можно работать с этим окном так, как это делалось в предыдущей главе.
В списке "Поля результата" окна запроса указывается, какие поля требуется отобразить в окне просмотра. По умолчанию во вновь открываемой таблице отображаются все поля.
В области "Критерий отбора" указывается, какие записи требуется извлечь из таблицы. Если область пуста - запрос извлекает все записи из таблицы.
Допустим, нет необходимости просматривать поля CNO, ADDRESS, ZIP и ONO. Тогда нам нужно указать только те поля, которые нужны.
Как задать поля для результата запроса
В окне запроса установите флажок "Поля". Появится диалог "Выбор полей запроса".
Рис. 2.2 Задание полей для запроса
Нажмите кнопку "Удалить все", чтобы очистить список "Выбранные поля". И поместите в список "Выбранные поля" COMPANY, CNO, CONTACT, PHONE, CITY, STATE и YTDPURCH, для этого выделите нужное поле в списке "Поля таблицы" и нажмите кнопку "Добавить". Каждое из перечисленных выше полей появится на экране с префиксом CUSTOMER, это означает принадлежность поля к таблице CUSTOMER. По окончании нажмите кнопку "Ok". Выбранные поля будут отображены в списке "Поля результата" окна запроса. При выполнении запроса поля в окне просмотра появляются в порядке, указанном в окне запроса.
Как выполнить запрос
В окне запроса нажмите кнопку "Выполнить". И у вас появится окно просмотра с выбранными полями.
Рис. 2.3 Выполнение запроса
Если в процессе работы с окном просмотра окажется, что больше нет необходимости в поле CONTACT, то его просто из запроса удалить.
Как удалить поле результата из запроса
Закройте окно просмотра, в котором отображен результат запроса. Установите флажок "Поля". Удалите поле CONTACT из списка "Выбранные поля", выделив его в списке и нажав кнопку "Удалить". Нажмите кнопку "Ok". Обратите внимание, что поля CONTACT больше нет в списке "Поля результата". И выполните запрос.
Теперь, когда выбраны поля результата, можно задать порядок, в котором будут представлены данные. Например, можно отобразить данные по городам в алфавитном порядке.
Как упорядочить поля в запросе
Закройте окно просмотра с отображенным результатом запроса. В окне запроса установите флажок "Порядок". В диалоге "Порядок полей запроса" поместите CUSTOMER.SITY в список "Критерий порядка", для этого выделите его и нажмите кнопку "Добавить". И установите флажок "По возрастанию".
Рис. 2.4 Как упорядочить поля в запросе
Для возвращения в окно запроса нажмите кнопку "ОK". Обратите внимание, что в списке "Поля результата" рядом с CITY появились символы 1 и стрелка вверх. Цифра 1 означает, что CITY имеет первый приоритет при упорядочении данных, а стрелка вверх означает, что данные отображаются в порядке возрастания.
Нажмите кнопку "Выполнить". Данные можно упорядочить любым способом. Например, можно упорядочить данные по штатам и по городам внутри штата.
Как упорядочить по нескольким полям
Закройте окно просмотра. Установите флажок "Порядок". Поместите CUSTOMER.STATE в список "Критерий порядка". Установите порядок полей, для этого мышью переместите кнопку слева от STATE так, чтобы поле STATE было выше поля CITY. Нажмите кнопку "Оk". Теперь перед STATE стоит цифра 1, а перед CITY - 2, что означает приоритет по упорядочению данных. И нажмите кнопку "Выполнить".
До сих пор в таблице CUSTOMER просматривались все записи. Но предположим, что нужно просмотреть только те компании, которые расположены в штате Огайо. Используя область "Критерий отбора" окна запроса, можно выполнить такой запрос почти сразу же.
Задание условий отбора
Как задать условия отбора.
Закройте окно просмотра. В окне запроса щелкните на прямоугольнике ниже "Имя поля", чтобы вывести список "Имя поля". Выделите CUSTOMER.STATE
Рис. 2.5 Как задать условия отбора
В списке вариантов сравнения по умолчанию устанавливается "похоже на". Наберите OH (Ohio) в текстовом поле ниже надписи "Образец". Так создано условие отбора для просмотра записей только о компаниях в штате Огайо. Таким же образом можно задать несколько условий отбора. Введенное условие отбора требует, чтобы поле STATE было похоже на OH. STATE - это поле, "похоже на" - это вариант сравнения, а OH - значение, с которым сравнивается содержимое поля. Вариант сравнения "похоже на" указывает, что поле STATE должно иметь значение OH для того, чтобы запись удовлетворяла требованиям запроса. Результат выполнения запроса показан на
Рис. 2.6 Результат выполнения запроса
Другие варианты условия отбора
Попробуем вывести компании, расположенные в штате Огайо или Мичиган. Закройте окно просмотра. Щелкните на поле ввода вариантов сравнения и выберите значение "в списке". В поле "Образец" наберите MI (Michigan) после OH. Не забудьте поставить запятую.
Нажмите кнопку "Выполнить". Появится окно просмотра, в котором будут выведены все компании, расположенные в штатах Огайо и Мичиган, потому что "в списке" означает, что для включения в результат STATE должно содержать один из элементов, указанных в текстовом поле "Образец".
Другие условия отбора: равно, больше, меньше, в пределах; работа- ют аналогично. Для более подробного ознакомления обратитесь к справочнику: "Руководство пользователя. FoxPro. Система управления реляционными базами данных для Windows".