FoxPro8

         

Что такое отчет


В предыдущих двух главах вы познакомились с инструментами Visual FoxPro, предназначенными для создания форм. Не менее мощные средства предоставляются в распоряжение разработчика для создания отчетов.

Прочитав эту главу, вы узнаете, что такое отчет, и познакомитесь со средствами создания и печати отчетов в Visual FoxPro.

Отчет — форматированное представление данных, выводимое на экран, принтер или в файл. Отчет, создаваемый в Visual FoxPro, может быть представлен в табличном виде или в свободной форме.

Табличный отчет — это напечатанная таблица, в которой строка представляет собой запись, а каждый из элементов строки содержит поле исходной таблицы или вычисляемое поле. Данные в таблице упорядочены. Табличные отчеты используются для печати данных, представленных в виде списка.

При подготовке писем, почтовых этикеток поля используемых в отчете таблиц должны располагаться в специально выделенных для них местах. В этом случае табличный отчет не подходит и используются отчеты в свободной форме. При создании такого отчета вы можете воспользоваться стандартным форматом, автоматически создаваемым Visual FoxPro для каждой таблицы, в котором поля исходной таблицы располагаются вертикально. Используя конструктор отчетов, вы можете разрабатывать собственные форматы отчета, где поля исходной таблицы будут расположены там, где вам нужно.



Использование мастера для создания однотабличного отчета


Для создания отчета с помощью мастера вам необходимо его запустить, а затем в открывающихся диалоговых окнах выбрать таблицы, входящие в отчет, определить список полей отчета и порядок их размещения, указать тип упорядочения данных.

Для запуска мастера отчетов выполните одно из следующих действий:

выберите в меню Tools (Сервис) команду Wizards (Мастера), а затем в открывшемся меню значение Report (Отчет);

нажмите кнопку Report Wizard (Мастер отчета) в диалоговом окне New Report (Новый отчет), открываемом при создании нового отчета из окна проекта;

нажмите кнопку Wizard (Мастер) диалогового окна New (Новый), открываемого при нажатии кнопки New (Новый) на стандартной панели инструментов или выборе команды New (Новый) из меню File (Файл) и установке опции Report (Отчет).

Рассмотрим создание однотабличного отчета с помощью мастера.

Откройте создаваемый вами проект, например sales.

Откройте базу данных проекта. Для этого на вкладке Data (Данные) установите курсор на ее название и нажмите кнопку Open (Открыть) окна проекта. При этом на стандартной панели инструментов в списке Databases (Базы данных) появится название открытой базы данных.

Перейдите на вкладку Documents (Документы) и выберите группу Reports (Отчеты).

Нажмите кнопку New (Новый) окна проекта (рис. 7.1).

В открывшемся диалоговом окне New Report (Новый отчет) (рис. 7.2) выберите опцию Report Wizard (Мастер отчета).

Рис. 7.1. Группа Reports в окне создания проекта

Рис. 7.2. Диалоговое окно New Report

После запуска мастера для построения отчета на экране открывается диалоговое окно (рис. 7.3), в котором вы должны указать тип создаваемого отчета (табл. 7.1).

Таблица 7.1. Типы отчетов

Тип отчета Описание
One-to-Many Report Wizard (Мастер отчетов с отношением один-ко-многим) Создает отчет для таблиц с отношением "один-ко-многим"
Report Wizard (Мастер отчетов) Создает простой однотабличный отчет

Для создания простого однотабличного отчета выберите значение Report Wizard и нажмите кнопку ОК.




Рис. 7.3. Диалоговое окно для выбора типа создаваемого отчета

Открывается первое диалоговое окно мастера (рис. 7.4), в котором необходимо указать таблицу, для которой вы создаете отчет, и выбрать размещаемые в отчете поля. В области Databases and tables (Базы данных и таблицы) расположены два списка. Верхний список содержит открытые базы данных, а нижний — таблицы выбранной из верхнего списка базы. Выберите из верхнего списка необходимую базу данных, а из нижнего — таблицу, для которой создаете отчет.



Рис. 7.4. Окно создания однотабличного отчета с помощью мастера

Замечание

Может оказаться, что в диалоговом окне мастера списки области Databases and tables (Базы данных и таблицы) пусты или содержат не те данные, которые вы предполагаете использовать для построения отчета. Такая ситуация возникает в том случае, если предварительно вы не открыли необходимую базу данных. Ничего страшного. Для выбора базы данных и входящих в нее таблиц нажмите кнопку, расположенную рядом со списком баз данных. На экране откроется диалоговое окно Open (Открыть), позволяющее найти таблицу, которая будет использоваться в отчете.

После выбора таблицы, для которой создается отчет, список Available fields (Имеющиеся поля) будет содержать перечень всех полей таблицы. Вам необходимо из данного перечня перенести в список Selected fields (Выбранные поля) поля, которые вы хотите разместить в создаваемом отчете. Для переноса полей используйте располагающиеся между списками кнопки. После формирования списка отображаемых в отчете полей нажмите кнопку Next (Далее) для перехода к следующему шагу в создании отчета.

В следующем диалоговом окне мастера создания отчета необходимо указать поля, по которым будет осуществляться группировка данных в отчете (рис. 7.5).



Рис. 7.5. Определение полей для группировки данных в отчете

В центре диалогового окна расположены три раскрывающихся списка, позволяющих задать до трех группировок данных в отчете. Эти списки содержат все поля таблицы. Для осуществления группировки данных в отчете выберите нужное поле из раскрывающегося списка 1. При создании второй и третьей группировки используются, соответственно, списки 2 и 3.

Для задания интервала группировки нажмите кнопку Grouping options (Опции группировки). Открывается диалоговое окно Grouping Intervals (Интервалы группировки) (рис. 7.6). Раскрывающийся список Grouping intervals этого окна содержит значения, описанные в табл. 7.2.



Таблица 7.2. Описание интервалов группировки раскрывающегося списка Grouping intervals

Интервал группировки Описание
Entire Field (Полное поле) Интервал группировки задается исходя из полного значения поля таблицы
1st Letter (1 буква) Группировка осуществляется по первой букве значения поля таблицы
2, 3,4, 5 Initial Letters (2, 3, 4, 5 начальных букв)

Группировка осуществляется по 2, 3, 4 или 5 первым буквам значения поля таблицы соответственно
Установите необходимое значение и нажмите кнопку ОК.



Рис. 7.6. Диалоговое окно Grouping Intervals

Для формирования в отчете итоговых значений воспользуйтесь диалоговым окном Summary Options (Итоговые опции) (рис. 7.7), открываемым при нажатии кнопки Summary Options (Итоговые опции). В нем содержится таблица, строками которой являются поля таблицы, а столбцами — возможные итоговые значения отчета (табл. 7.3).

Таблица 7.3. Итоговые значения отчета

Столбец Назначение
Field Наименование поля таблицы, по которому будет вычисляться итоговое значение в отчете
Sum При установке флажка в отчет будет помещена итоговая сумма по данному полю
Avg При установке флажка в отчет будет помещено итоговое среднее значение по данному полю
Count При установке флажка в отчет будет помещено итоговое количество строк
Min При установке флажка в отчет будет помещено минимальное значение поля таблицы
Max При установке флажка в отчет будет помещено максимальное значение поля таблицы
Установите флажки для тех итоговых значений, которые хотите разместить в отчете.



Рис. 7.7. Диалоговое окно Summary Options

В диалоговом окне Summary Options (Итоговые опции) под таблицей расположен переключатель, управляющий отображением в отчете областей данных (табл. 7.4).

Таблица 7.4. Назначение опций переключателя окна Summary Options

В правом нижнем углу диалогового окна Summary Options (Итоговые опции) расположен флажок Calculate percent of total for sums (Вычислить процент итоговых сумм), позволяющий в качестве итогового значения печатать процент промежуточного итогового суммарного значения от конечного итогового суммарного значения по отчету.



Завершив в диалоговом окне Summary Options (Итоговые опции) все необходимые установки, нажмите кнопку ОК.

В следующем диалоговом окне мастера задается стиль отображения объектов в отчете (рис. 7.8).



Рис. 7.8. Выбор стиля отображения объектов отчета

Список Style (Стиль) содержит несколько вариантов отображения объектов (полей, линий, заголовков и т. д.) в отчете. При выборе стиля мастер позволяет просмотреть, как будут выглядеть элементы отчета. Для этого используется область просмотра в верхнем левом углу диалогового окна. Выбрав стиль, нажмите кнопку Next (Далее), чтобы перейти к следующему шагу.

На четвертом шаге создания отчета необходимо указать порядок размещения объектов в отчете (рис. 7.9) и ориентацию страницы отчета. После того как вы установили требуемые опции, нажмите кнопку Next (Далее).



Рис. 7.9. Установка порядка размещения объектов в отчете

На пятом шаге создания отчета с помощью мастера задаются поля, по которым требуется упорядочение данных в отчете (рис. 7.10). Для формирования списка полей, по которым будет осуществляться сортировка, из списка Available fields or index tag (Выбранные поля и индексы), содержащего список всех полей отчета и индексов таблицы, перенесите в список Selected fields (Выбранные поля) требуемые поля в том порядке, в каком будут упорядочиваться данные. Для переноса полей используйте кнопку Add (Добавить) или двойной щелчок мыши на наименовании поля.

Используя опции Ascending (По возрастанию) и Descending (По убыванию), укажите тип сортировки выбранного поля: по возрастанию или по убыванию соответственно.

Сформировав список полей и указав тип сортировки, нажмите кнопку Next (Далее) для перехода к следующему шагу.



Рис. 7.10. Установка критерия упорядочения данных

На шестом шаге вы можете задать заголовок отчета, используя для этого поле ввода Type a title for your report (Введите имя заголовка отчета). В этом же диалоговом окне вы можете указать один из трех вариантов дальнейшей работы с отчетом (рис. 7.11) (табл. 7.5).



Таблица 7.5. Опции переключателей окна Report Wizard - Step 6

Опция Действие
Save report for later use (Сохранить отчет) Созданный отчет сохраняется на диске
Save report and modify it in the Report Designer (Сохранить и открыть в конструкторе для модификации) Созданный отчет сохраняется на диске и открывается в конструкторе отчетов для модификации
Save and print report (Сохранить и распечатать отчет) Созданный отчет сохраняется на диске и печатается
В правом нижнем углу диалогового окна находится кнопка Preview (Просмотр), позволяющая просмотреть созданный отчет. Если созданный отчет не удовлетворяет вашим требованиям, с помощью кнопки Back (Назад) вы можете вернуться к предыдущим шагам построения отчета и изменить установленные там параметры.

Введя заголовок и установив требуемую опцию, для завершения создания отчета с помощью мастера нажмите кнопку Finish (Готово). Открывается диалоговое окно Save As (Сохранить как), в котором введите имя созданного файла.



Рис. 7.11. Заключительный этап создания отчета



Рис. 7.12. Отчет, созданный с помощью мастера

На рис. 7.12 представлен отчет, созданный с помощью мастера. Если он вас полностью устраивает, вы можете его распечатать. Но скорее всего, вам захочется в нем что-то изменить. В этом случае откройте созданный отчет в конструкторе отчетов и модифицируйте его.

Замечание

При создании отчета с помощью мастера надписи к полям отчета создаются на основе информации, введенной в поле Caption (Надпись) конструктора таблиц Table Designer (Конструктор таблиц). Если это поле пусто, надписи совпадают с именами полей таблицы.


Панель инструментов, используемая для просмотра отчета


При открытии отчета в окне предварительного просмотра на экране появляется панель инструментов Print Preview (Предварительный просмотр) (рис. 7.13), позволяющая перемещаться между страницами отчета и распечатать его. Назначение кнопок этой панели инструментов приведено в табл. 7.6.

Рис. 7.13. Панель инструментов, используемая в окне предварительного просмотра отчета

Таблица 7.6. Кнопки панели инструментов Print Preview

Кнопка Назначение
Открывает первую страницу отчета
Открывает предыдущую страницу отчета
Открывает диалоговое окно Go to Page (Переход на страницу) для перехода к заданной странице отчета
Открывает следующую страницу отчета
Открывает последнюю страницу отчета
Изменяет масштаб отображения отчета
Закрывает окно просмотра отчета
Печатает отчет



Печать отчета


Вы подготовили отчет, просмотрели его в окне предварительного просмотра и убедились, что он выглядит так, как вы хотите. Теперь можно распечатать отчет на принтере, воспользовавшись одним из следующих способов:

выберите команду Print (Печать) из меню File (Файл);

выберите команду Run Report (Запустить отчет) из меню Report (Отчет);

выберите команду Print (Печать) контекстного меню;

нажмите кнопку Print One Copy (Печать одной копии) или Run (Запустить) на стандартной панели инструментов Visual FoxPro;

нажмите комбинацию клавиш <Ctrl>+<P>.

Открывается диалоговое окно Print (Печать) (рис. 7.14), позволяющее указать имя используемого для печати принтера, изменить, в случае необходимости, его настройки и установить параметры печати.

В верхней части диалогового окна Print (Печать) расположен раскрывающийся список Name (Наименование), позволяющий выбрать тип подключаемого принтера. Эта возможность особенно важна при работе в сети, когда у вас имеется несколько сетевых принтеров.

Рис. 7.14. Диалоговое окно Print

Опции области Print range (Печатать) позволяют указать печатаемые страницы и имеют следующее назначение:

All (Все) — печатаются все страницы отчета;

Pages (Страницы) — печатаются страницы, номера которых заданы в полях ввода from: (от) и to: (до);

Счетчик области Copies (Копии) позволяет указать количество печатаемых копий отчета.

В случае, если требуется дополнительная настройка параметров принтера, нажмите кнопку Options (Опции). В результате откроется диалоговое окно Print Options (Параметры печати) (рис. 7.15).

Рис. 7.15. Диалоговое окно Print Options

Поле Туре (Тип) области Print what (Что печатать) позволяет указать тип выводимой на печать информации. Поле File (Файл) содержит наименование и расположение печатаемого файла.

В области Options (Опции) расположены флажки, имеющие назначения, описанные в табл. 7.7.

Таблица 7.7. Назначение флажков окна Print Options

Флажок Назначение
Line numbers (Линии нумерации) Печатает в левой части отчета номера строк. Данный флажок используется только при печати содержимого окна команд и временного буфера Windows
Page eject before (Новая страница перед отчетом) Выдает принтеру команду перехода на новую страницу перед печатью отчета
Page eject after (Новая страница после отчета) Выдает принтеру команду перехода на новую страницу после печати отчета
Restore environment (Восстановить окружение)

Используется для совместимости с отчетами FoxPro версий 2.x
<
При нажатии кнопки Options (Параметры) диалогового окна Print Options открывается диалоговое окно Report and Label Print Options (Параметры печати отчета и этикетки) (рис. 7.16).



Рис. 7.16. Диалоговое окно Report and Label Print Options позволяет указать критерий для выбора записей

В диалоговом окне Report and Label Print Options (Параметры печати отчета и этикетки) вы можете указать критерии для выбора записей, печатаемых в отчете (табл. 7.8).

Таблица 7.8. Критерии выбора записей

Критерий Назначение
Scope (Печатаемые записи) Содержит раскрывающийся список Scope (Печатаемые записи), в котором указывается область печатаемых записей
For (Пока) Вызывает построитель выражений, в котором вы создаете логическое выражение, равное True (Истина) для всех печатаемых записей отчета
While (При условии) Вызывает построитель выражений, в котором вы создаете логическое выражение для выбора записей отчета. В отличие от критерия For, печать отчета прекращается при первом же значении выражения, равном False (Ложь)
Для настройки дополнительных параметров печати отчета можно использовать диалоговое окно Свойства (рис. 7.17), открываемое при нажатии кнопки Properties (Свойства) в окне Print (Печать) (см. рис. 7.14).

На вкладке Бумага/Качество данного диалогового окна можно задать тип подачи бумаги в принтер. Вкладка Расположение позволяет указать расположение бумаги (книжная или альбомная), порядок печати страниц. Для того чтобы изменить размер используемой при печати бумаги, качество печати, используйте диалоговое окно Дополнительные возможности, открываемое при нажатии кнопки Дополнительно.



Рис. 7.17. Диалоговое окно Свойства


Просмотр подготовленного отчета


Если вы хотите посмотреть, как ваш отчет выглядит, совсем не обязательно его распечатывать. Достаточно открыть его в окне предварительного просмотра, воспользовавшись любым из следующих средств, предоставляемых в ваше распоряжение программой Visual FoxPro:

команда Print Preview (Просмотр печати) из меню File (Файл);

команда Preview (Просмотр) из меню View (Вид);

команда Preview (Просмотр) контекстного меню;

кнопка Print Preview (Предварительный просмотр) на стандартной панели инструментов Visual FoxPro;

кнопка Preview (Просмотр) окна проекта.



Рекомендации по созданию отчета


Если вам требуется создать простой табличный отчет, в котором используются поля из одной таблицы, то трудностей, скорее всего, у вас не возникнет. При разработке более сложного отчета, прежде чем приступить к его созданию, вы должны четко представлять, что же хотите получить в результате. Поэтому продумайте приведенные ниже вопросы.

С какой целью создается настоящий отчет?

Отчет какого вида вы создаете (табличный, в свободной форме или наклейки)?

Информация из каких таблиц должна быть представлена в отчете?

Из используемых в отчете таблиц какая таблица будет главной, а какая — подчиненной?

По каким параметрам будет упорядочиваться информация в отчете?

Будет ли при создании отчета использоваться группировка данных и по каким параметрам?

Получив четкие ответы на поставленные вопросы, вы облегчите свою работу при создании отчета.

Создавая первые отчеты, прежде чем приступить к работе с конструктором отчетов, прорисуйте формат отчета на бумаге. Это избавит вас от ошибок и сократит время, затрачиваемое на разработку отчета.

При создании сложных отчетов, использующих данные из нескольких таблиц с отношением "один-ко-многим", желательно идти последовательными шагами от простого к сложному. Сначала добавить в среду окружения главную таблицу и расположить в отчете ее поля. После этого просмотреть отчет в окне предварительного просмотра и убедиться, что он формируется верно. Затем добавить в окружение вторую таблицу, связать ее с главной, задать тип используемого между таблицами отношения и расположить в отчете ее поля. И опять убедиться, что отчет печатает те данные, какие вы хотите получить. При таком подходе к созданию отчета вам будет значительно легче разобраться в появляющихся ошибках или вообще их избежать.



Средства создания отчетов


В Visual FoxPro для создания отчетов можно использовать следующие средства.

Report Wizard (Мастер отчета). Позволяет достаточно быстро создать отчет, применяя сортировку, группировку данных и заданный вами стиль оформления. Для создания готового отчета с помощью мастера достаточно ответить на ряд вопросов Report Wizard (Мастер отчета) Visual FoxPro.

Report Designer (Конструктор отчета). В конструкторе отчетов вы можете разрабатывать собственные или модифицировать отчеты, созданные с помощью мастера.

Quick Report (Быстрый отчет). Данное средство предназначено для размещения в конструкторе отчета полей и задания среды окружения. Разработчику на выбор предлагается два варианта размещения полей.

При создании отчета можно использовать любые средства, предлагаемые Visual FoxPro, какие вам кажутся более удобными. Конечно, больше возможностей предоставляет конструктор отчетов, позволяющий создавать отчеты как в табличном виде, так и в свободной форме. Разработке отчетов средствами конструктора будет посвящена следующая глава.



Добавление в отчет областей заголовка и итогов


Как правило, все отчеты содержат заголовок и итоговую часть отчета. Для их формирования необходимо добавить в отчет полосы Summary (Итоги) и Title (Титул), используя команду Title/Summary (Титул/Итоги) из меню Report (Отчет). В результате выполнения этой команды открывается диалоговое окно Title/Summary (Титул/Итоги) (рис. 8.10), содержащее флажки, описанные в табл. 8.4.

Таблица 8.4. Флажки диалогового окна Title/Summary

Флажок Назначение
Title band (Полоса титула) Добавляет в отчет полосу Title (Титул) для размещения заголовка в отчете
New page (Новая страница) области Report title (Титул отчета) Размещает заголовок отчета на отдельной странице
Summary band (Полоса итогов) Добавляет в отчет полосу Summary (Итоги) для размещения в отчете итоговой части
New page области Report summary (Итоги отчета) Размещает итоговую часть отчета на отдельной странице
Page header (Верхний колонтитул) Размещает итоговую часть отчета в верхнем колонтитуле
Page footer (Нижний колонтитул) Размещает итоговую часть отчета в нижнем колонтитуле

Установите необходимые флажки и нажмите ОК. В отчете появятся указанные вами полосы. В полосе Title (Титул) разместите объекты заголовка отчета, в качестве которых может выступать текст, поля и рисунки.

Рис. 8.10. Диалоговое окно Title/Summary

В полосе Summary (Итоги) могут размещаться итоговые значения полей отчета, а также объекты оформления отчета, такие как текст и рисунки.



Формирование выражения поля


Чтобы сформировать выражение лля поля, размещаемою и отчете, выполните следующие действия:

Дважды щелкните мышью на размешенном в отчете поле. Открывается диалоговое окно Report Expression (Выражение отчета) (см. рис. 8.12).

Введите необходимое выражение в поле Expression (Выражение). Для задания выражения поля вы можете воспользоваться построителем, нажав расположенную справа от поля кнопку. При лом па экране открывается диалоговое окно Expression Builder (Построитель выражения), в ноле Expression for Field on Report (Выражение для поля отчета) которою необходимо задать требуемое выражение.

Список Fields (Поля) диалогового окна Expression Builder (Построитель выражения) содержит поля помещенных в окружение отчета таблиц, список Variables (Переменные) — системные переменные Visual FoxPro. В области Functions (Функции) размещены строковые, логические, математические функции, а также функции даты и времени. Используя значения из этих списков, сформируйте необходимое выражение лля создаваемого поля.

Совет

Для формирования выражения нет необходимости вводить информацию в поле Expression for Field on Report (Выражение для поля отчета) вручную. Достаточно выбирать требуемое значение из любого списка и щелчком мыши переносить его в это поле.

Рис. 8.13. Определение вычисляемого поля

При создании вычисляемых полей сформируйте выражение и проверьте его правильность с помощью кнопки Verify (Проверить). Например, вы можете отобразить в отчете вместо двух полей, содержащих город и адрес клиента, одно вычисляемое поле, которое содержит полный адрес. Выражение для этого поля имеет следующий вид (рис. 8.13):

ALLTRIM(Customer.cCity)+", "+ ALLTRIM(Customer.cAddress)

Завершив формирование выражения, нажмите кнопку ОК для закрытия диалогового окна Expression Builder (Построитель выражения).

Закройте диалоговое окно Report Expression (Выражение отчета), также нажав кнопку ОК.



Группировка данных в отчете


Посмотрите на отчет, представленный на рис. 8.25. Видно, что клиент может приобрести разные товары. Напрашивается вопрос: а нельзя ли объединить данные в отчете таким образом, чтобы иметь краткую информацию о том, какие товары приобрел тот или иной клиент.

Для группировки данных в отчете используется команда Data Grouping (Группировка данных) меню Report (Отчет) и команда Data Grouping (Группировка данных) контекстного меню, которые позволяют создавать до 20 уровней вложенности групп и выполнять нал ними следующие операции:

печатать текст, идентифицирующий конкретные группы:

печатать каждую группу отчета с новой страницы:

при печати каждой группы начинать новую нумерацию страниц.

При выполнении данных команд открывается диалоговое окно Data Grouping (Группировка данных) (рис. 8.26). содержащее список созданных в отчете групп. Используя расположенные в окне кнопки, можно редактировать или удалять имеющиеся в отчете группы, добавлять новые.

Для формирования выражения, по которому будут группироваться данные в отчете, можно использовать построитель выражения или ввести требуемое выражение непосредственно в поле Group expressions (Выражение группировки).

Рис. 8.26. Диалоговое окно Data Grouping

В диалоговом окне Data Grouping (Группировка данных) вы можете установить следующие параметры группировки данных (табл. 8.15).

Таблица 8.15. Параметры группировки данных окна Data Grouping

Флажок Назначение
Start group on new column (Каждая группа в новой колонке) Если флажок установлен, то при каждом изменении группы происходит формирование новой колонки
Start each group on a new page (Каждая группа на новой странице)

При установке флажка каждая группа отчета размещается на новой странице
Reset page number to 1 for each group (Сброс нумерации страниц для каждой группы) При установке флажка каждая группа отчета размещается на новой странице. Нумерация страниц группы начинается с 1
Reprint group header on each page (Верхняя полоса группы для каждой страницы) Если группа занимает несколько страниц, то при установке флажка верхняя полоса группы размещается после верхнего колонтитула страницы
Start group on new page when less than (Печатать группу с новой страницы, если) Если под заголовком группы остается расстояние меньше указанного в данном поле, то информация группы будет перенесена на новую страницу

С помощью кнопки Insert (Вставить) диалогового окна Data Grouping (Группировка данных) можно добавить в отчет новую группу. Для удаления полосы группы используется кнопка Delete (Удалить).



Использование группировки в отчете


Модифицируем отчет, созданный в предыдущем примере. Добавим в него группировку по клиентам и разместим в полосах группы наименование клиента и итоговую сумму приобретенных им товаров.

Откройте отчет, созданный в предыдущем примере.

Для группировки данных в отчете по полю icdcustomer в меню Report (Отчет) выберите команду Data Grouping (Группировка данных).

В поле Group expressions (Выражения группировки) открывшегося диалогового окна Data Grouping (Группировка данных) нажмите кнопку вызова построителя выражения.

В окне построителя сформируйте выражение группировки. Для этого в списке Fields (Поля) дважды щелкните мышью на поле icdcustomer таблицы Ordsalem.

Закройте окно построителя выражения. В поле Group expressions (Выражение группировки) диалогового окна Data Grouping (Группировка данных) появилось выбранное нами поле icdcustomer.

Закройте диалоговое окно, нажав кнопку ОК.

В отчет добавились полосы группировки. Расширьте полосу Group Header (Группа сверху). Для этого установите курсор в нижнюю часть полосы и, когда он примет вид двунаправленной стрелки, переместите вниз.

Перенесите в образовавшуюся область поле с наименованием клиента, а также его заголовок.

Расширьте полосу Group Footer (Группа снизу) и создайте в ней итоговое поле, которое будет показывать сумму продаж по каждому клиенту. При формировании поля укажите суммирование по следующему выражению:

OrdSaled.nQuant * OrdSaled.nUnitPrice

Отчет в окне конструктора отчетов будет иметь вид, представленный на рис. 8.27.

Просмотрите внешний вид отчета в окне предварительного просмотра (рис. 8.28).

Сохраните созданный отчет.

Рис. 8.27. Группировка данных в отчете по коду клиента

Рис. 8.28. Просмотр отчета с группировкой данных



Использование команды Quick Report для размещения полей


В процессе создания отчета выполняются все или часть из приведенных ниже процедур.

Определение среды окружения.

Размещение объектов в отчете: текста, полей, линий, прямоугольников и рисунков.

Группирование данных в отчете.

Сохранение отчета.

Просмотр созданного отчета в окне предварительного просмотра.

Печать отчета.

Ускорить размещение данных в отчете можно с помощью команды Quick Report (Быстрый отчет) из меню Report (Отчет). Отчет, получаемый в результате выполнения этой команды, называется быстрым или стандартным отчетом. Иными словами, Quick Report (Быстрый отчет) — это средство конструктора отчетов, которое автоматически помещает выбранные поля и надписи к ним в окно конструктора отчета. После этого вы можете модифицировать полученный отчет, изменив текст надписей, порядок расположения полей, добавить в отчет группирование данных, заголовок и т. д.

Для создания отчета с использованием команды Quick Report (Быстрый отчет) необходимо выполнить следующие действия:

Откройте базу данных проекта. Для этого на вкладке Data (Данные) установите курсор на ее название и нажмите кнопку Open (Открыть) окна проекта. При этом на стандартной панели инструментов в списке Databases (Базы данных) появится название открытой базы данных.

Откройте любым удобным для вас способом окно конструктора отчетов.

Находясь в окне конструктора отчета, выберите в меню Report (Отчет) команду Quick Report (Быстрый отчет).

В открывшемся диалоговом окне Open (Открыть) содержится список всех таблиц открытой в проекте базы данных (рис. 8.2). Выберите таблицу, для которой создается стандартный отчет, и нажмите кнопку ОК.

Рис. 8.2. Диалоговое окно Open

Замечание

Если перед созданием отчета вы не откроете базу данных, то на экране появится диалоговое окно Open (Открыть), отличающееся от представленного на рис. 8.2. Оно будет содержать не список таблиц базы данных, а окно, открывающееся в программе FoxPro для поиска на диске необходимого файла.

После выбора таблицы открывается диалоговое окно Quick Report (Быстрый отчет) (рис. 8.3), в котором предлагаются варианты расположения полей в отчете — в столбец или в строку (две кнопки). Выберите один из предложенных вариантов:


при нажатии левой кнопки поля будут размещены в полосе Detail (Детали) слева направо по всей странице;

если вы нажмете правую кнопку, поля будут размещены в полосе Detail (Детали) друг под другом.

Диалоговое окно Quick Report (Быстрый отчет) содержит флажки, описанные в табл. 8.3.

Таблица 8.3. Флажки диалогового окна Quick Report

Флажок Назначение
Titles (Заголовки) При установке флажка в отчет помещаются поля и надписи к ним
Add alias (Добавить псевдоним) Флажок определяет, указывать ли псевдоним таблицы в именах полей в окне конструктора отчета
Add table to data environment (Добавить таблицу в среду окружения)

При установке флажка используемая в отчете таблица помещается в среду окружения


Рис. 8.3. Диалоговое окно Quick Report

Если вы хотите разместить в отчете все поля исходной таблицы, то этот шаг пропустите и сразу нажмите кнопку ОК, чтобы закрыть диалоговое окно Quick Report (Быстрый отчет). Для выбора полей, размещаемых в отчете, нажмите кнопку Fields (Поля). Откроется диалоговое окно Field Picker (Выбор поля) (рис. 8.4). Выберите поля, которые вы собираетесь поместить в отчет, используя для этого кнопку Move (Переместить). Если в отчет нужно поместить все поля, воспользуйтесь кнопкой All (Все).



Рис. 8.4. Диалоговое окно Field Picker

Совет

Если вам нужно разместить в отчете все поля за исключением нескольких, сначала выберите все поля, а затем удалите лишние, воспользовавшись кнопкой Remove (Удалить).

Завершив выбор полей, нажмите кнопку ОК для закрытия диалогового окна Field Picker. Нажмите также кнопку ОК в окне Quick Report (Быстрый отчет). Теперь отчет содержит все необходимые поля. Кроме того, в полосе Page Footer (Нижний колонтитул) расположено поле с функцией date о и поле с системной переменной _pageno, указывающие дату и текущий номер страницы отчета соответственно.

Фрагмент отчета, сформированного с помощью команды Quick Report (Быстрый отчет), представлен на рис. 8.5.



Рис. 8.5. Фрагмент отчета, созданного с помощью команды Quick Report

Если текст и наименования полей в отчете представлены некорректно, необходимо изменить шрифт этих объектов. Для этого выполните следующие действия:

Выделите все объекты отчета, воспользовавшись командой Select All (Выбрать все) из меню Edit (Правка).

Откройте диалоговое окно Шрифт (рис. 8.6). Для этого в меню Format (Формат) выберите команду Font (Шрифт).



Рис. 8.6. Диалоговое окно Шрифт

Используя список Шрифт диалогового окна Шрифт, установите необходимый шрифт.

Задайте начертание, стиль, цвет и размер символов выделенных объектов.

Завершив установку параметров, нажмите кнопку ОК для закрытия диалогового окна.

Щелкните мышью в любом месте отчета вне выделенной области.


Использование в отчете переменных


В отчете вы можете использовать переменные из программы, доступные в момент вызова отчета, а также переменные, определенные в конструкторе отчетов м используемые для хранения результатов вычислении, выполняемых во время печати отчета.

Переменные отчета определяются в диалоговом окне Report Variables (Переменные отчета) (рис. 8.29), для открытия которого используется команда Variables (Переменные) из меню Report (Отчет). Кнопки Insert (Вставить) и Delete (Удалить) позволяют добавлять в отчет новые переменные и удалять существующие.

Рис. 8.29. Диалоговое окно Report Variables

Диалоговое окно Report Variables (Переменные отчета) содержит три поля, описанных в табл. 8.16.

Таблица 8.16. Поля диалогового окна Report Variables

Наименование поля Назначение
Variables (Переменные) Содержит наименование переменной, которое может содержать только буквы, цифры и символ подчеркивания и не может начинаться с цифры
Value to store (Хранимое значение) Значение переменной
Initial value (Начальное значение) Начальное значение переменной

Замечание

Для формирования значений переменных, задаваемых в полях Value to store (Хранимое значение) и Initial value (Начальное значение), можно использовать диалоговое окно Expression Builder (Построитель выражения), открываемое при нажатии расположенных с правой стороны поля кнопок.

При установке флажка Release after report (Освободить после отчета) после завершения печати отчета переменная очищается из памяти. Список Reset at (Сброс) содержит три значения, указывающие момент сброса переменной в начальное значение: в конце отчета, в конце страницы или в конце группы.

Опции, расположенные в диалоговом окне Report Variables (Переменные отчета), позволяют задать выражения, выполняемые над переменной вычисления (табл. 8.17).

Таблица 8.17. Назначение опций диалогового окна Report Variables

Опция Назначение
Nothing (Ничего) Над переменной вычисления не производятся
Count (Количество) Вычисляется количество появлений переменной в группе, на странице, в колонке или отчете (значение переменной не используется)
Sum (Сумма) Вычисляется итоговая сумма значений переменной
Average (Среднее) Вычисляется среднее арифметическое значений переменной в группе, на странице, в колонке или отчете
Lowest (Минимальное)

Отображается наименьшее значение переменной в группе, на странице, в колонке или отчете
Highest (Максимальное)

Отображается наибольшее значение переменной в группе, на странице, в колонке или отчете
Std. Deviation (Стандартное отклонение)

Возвращается квадратный корень из дисперсии значений переменной в группе, на странице, в колонке или отчете
Variance (Дисперсия) Возвращается статистическая величина отклонения отдельных значений переменной от среднего в группе, на странице, в колонке или отчете

При использовании переменных в отчете необходимо иметь в виду следующее:

переменные в отчете могут использоваться в качестве полей или в выражениях, определяющих поля. Все созданные в диалоговом окне Report Variables (Переменные отчета) переменные отображаются в списке переменных в окне построителя выражения;

при запуске отчета переменной присваивается начальное значение, а затем в процессе формирования отчета ее значение изменяется в соответствии с выбранным выражением. При заданных для переменной условиях она принимает свое начатьное значение;

для определения начального или вычисляемого значения переменной могут использоваться другие переменные, но значения этих переменных должны вычисляться до момента их использования переменной.



Окно конструктора отчетов


В предыдущей главе мы рассмотрели создание отчета с помощью мастера. В процессе использования отчета практически всегда возникает необходимость его модификации. Создавать сложные отчеты с помощью мастера не удается. И в этих случаях вам не обойтись без конструктора отчетов.

Существует несколько различных вариантов открытия окна конструктора отчетов. Если вы хотите модифицировать ранее созданный отчет, то в окне проекта установите курсор на его названии и нажмите кнопку Modify (Модификация).

Для открытия окна конструктора отчетов при создании нового отчета выполните одно из следующих действий:

в меню File (Файл) выберите команду New (Новый). В открывшемся диалоговом окне New (Новый) выберите опцию Report (Отчет) и нажмите кнопку New file (Новый файл);

нажмите кнопку New (Новый) в окне проекта, предварительно выбрав группу Reports (Отчеты), и в открывшемся диалоговом окне New Report (Новый отчет) нажмите кнопку New Report (Новый отчет);

нажмите кнопку New (Новый) на стандартной панели инструментов; в открывшемся диалоговом окне New (Новый) установите опцию Report (Отчет) и нажмите кнопку New file (Новый файл).

Для работы в конструкторе отчетов используются панели инструментов Report Designer (Конструктор отчета) и Report Controls (Элементы управления отчета), а также команды пункта Report (Отчет) (рис. 8.1), появившегося в строке основного меню при открытии конструктора.

Рис. 8.1. Окно конструктора отчета

В табл. 8.1 приведено краткое описание кнопок панели инструментов Report Controls. Более подробно назначение кнопок этой панели будет рассмотрено в разделах, посвященных размещению в отчетах различных элементов управления.

Таблица 8.1. Кнопки панели инструментов Report Controls

Кнопка Наименование Назначение
Select Objects (Выбор объектов)

Является указателем выбора объектов отчета
Label (Метка) Размещает текст
Field (Поле) Размещает поля
Line (Линия) Рисует линии
Rectangle (Прямоугольник) Рисует прямоугольники
Rounded Rectangle (Скругленный прямоугольник)

Рисует прямоугольник со скругленными краями
Picture/ActiveX Bound Control (Изображение/ActiveX объект)

Помещает в отчет рисунок
Button Lock (Закрепитель кнопки)

Закрепляет выбор кнопки



Панель инструментов Color Palette


Visual FoxPro предоставляет в распоряжение разработчика средства для изменения цвета размешенных в отчете объектов. Печать такого отчета потребует наличия цветного принтера.

Для изменения в отчете цвета объекта выполните следующие действия:

Разместите на экране панель инструментов Color Palette (Цветовая naлитра) выполнив одно из следующих действий:

нажать кнопку Color Palette Toolbar (Панель инструментов Цветовая палитра) на панели инструментов Report Designer (Конструктор отчетов);

выбрать в меню View (Вил) команду Color Palette Tollbar (Панель инструментов Цветовая палитра).

Панель инструментов Color Palette (Цветовая палитра) (рис. 8.17) содержит шестнадцать кнопок с заданными цветами и три дополнительные кнопки (табл. 8.12.).

Таблица 8.12. Кнопки панели инструментов Color Palette

Кнопка Назначение
Задает цвет объекта
Задает цвет фона
Открывает диалоговое окно Цвет для задания цветов, отсутствующих на панели

Выберите в отчете объект, цвет которого вы хотите изменить.

Щелкните мышью на панели инструментов Color Palette (Цветовая палитра) кнопку Foreground Color (Цвет объекта) или Background Color (Цвет фона) в зависимости от того, что вы хотите поменять, — цвет объекта или его фон.

Щелкните мышью на панели инструментов любой понравившийся цвет.

При создании отчетов можно использовать более широкую цветовую гамму. Для этого необходимо щелкнуть мышью на кнопке Other Colors (Другие цвета) панели инструментов Color Palette (Цветовая палитра) и в открывшемся диалоговом окне Цвет (рис. 8.18) выбрать один из 48 цветов, предлагаемых программой Visual FoxPro, или использовать цвета, расположенные в области Дополнительные цвета.

Рис. 8.17. Панель инструментов Color Palette

Рис. 8.18. Диалоговое окно Цвет

Для создания пользовательского цвета, размещаемого в области Дополнительные цвета, выполните следующие действия:

В диалоговом окне Цвет нажмите кнопку Определить цвет. Открывается расширенное диалоговое окно Цвет (рис. 8.19).

Рис. 8.19. Диалоговое окно Цвет для создания собственного цвета

Выберите в правой части окна нужный цвет. Используя поля ввода, расположенные в правом нижнем углу, вы можете также задать параметры цвета с помощью чисел.

Если вы подобрали необходимый цвет, нажмите кнопку Добавить в набор. Выбранный цвет будет размещен в области Дополнительные цвета.

Нажмите кнопку ОК.



Расположение поля в полосе


Диалоговое окно Report Expression (см. рис. 8.12) содержит переключатель Field position (Положение поля), позволяющий управлять расположением поля в полосе (табл. 8.9).

Таблица 8.9. Опции диалогового окна Report Expression

Опция Характеристика
Float (Плавающее) Позиция поля в отчете может изменяться при изменении размеров окружающих его полей
Fix relative to top of band (Постоянное относительно верхней полосы)

Поле сохраняет постоянную позицию относительно верхней границы полосы
Fix relative to bottom of band (Постоянное относительно нижней полосы)

Поле сохраняет постоянную позицию относительно нижней границы полосы



Размещение итогового поля


В колонтитулах, полосах группы, в итоговой части отчета, а также в полосе Detail (Детали) можно размещать поля, содержащие статистические значения полей отчета.

Замечание

Итоговые поля, размещаемые в полосе Detail (Детали), предназначены для вывода значений нарастающих итогов.

Для определения поля в качестве итогового выполните следующие действия:

Откройте диалоговое окно Report Expression (Выражение отчета), дважды щелкнув мышью на поле.

Определите выражение для поля, введя необходимую информацию в поле Expression (Выражение).

Нажмите кнопку Calculations (Вычисления). При этом на экране открывается диалоговое окно Calculate Field (Вычисление поля) (рис. 8.16), в котором может быть выбрана математическая операция над значением выражения, определенного для данного поля.

Рис. 8.16. Диалоговое окно Calculate Field

Диалоговое окно Calculate Field (Вычисление поля) содержит опции (табл. 8.10).

Таблица 8.10. Опции диалогового окна Calculate Field

Опция Назначение
Nothing (Ничего) Над полем не производится вычислений
Count (Сосчитать) Вычисляется количество значений поля (сами значения поля не используются)
Sum (Сумма) Вычисляется итоговая сумма значений поля
Average (Среднее арифметическое) Вычисляется среднее арифметическое значение поля
Lowest (Наименьшее) Отображается наименьшее значение поля
Highest (Наибольшее) Отображается наибольшее значение поля
Standard deviation (Квадратный корень из дисперсии)

Возвращается квадратный корень из дисперсии
Variance (Отклонение от среднего)

Возвращается статистическая величина отклонения отдельных значений поля от среднего в группе

Установите требуемую опцию и нажмите кнопку ОК.

Замечание

В верхней части диалогового окна находится список Reset (Сброс), используя который, вы можете определить момент обнуления итогового поля.

Нажмите кнопку ОК для закрытия диалогового окна Report Expression (Выражение отчета).



Размещение объектов в отчете


Любой отчет состоит из объектов: пояснительного текста, полей отчета разделительных линий и рамок.



Размещение полей


Для размещения в отчете поля, которое может быть полем таблицы или вычисляемым полем, выполните следующие действия:

Нажмите кнопку Field (Поле) на панели инструментов Report Controls (Элементы управления отчета).

Щелкните мышью в месте предполагаемого размещения поля в окне конструктора отчета.

В открывшемся диалоговом окне Report Expression (Выражение отчета) (рис. 8.12) укажите для поля источник данных, формат, условие, при котором поле будет выводиться на печать.

Завершив установку параметров, нажмите кнопку ОК.

Рис. 8.12. Диалоговое окно Report Expression

Диалоговое окно Report Expression (Выражение отчета) позволяет:

определить выражение, результат вычисления которого будет выводиться в данное поле;

задать формат отображения данных в поле;

указать условие печати;

установить положение поля в отчете.

В поле ввода Expression (Выражение) можно задать поле таблицы или выражение, размещаемое в отчете, а в поле Format (Формат) — формат данных, выводимых на печать.

Используя опции диалогового окна Calculate Field (Вычисляемое поле), открываемого при нажатии кнопки Calculations (Вычисления), можно поместить в отчет статистические значения размещенных в полях данных. Поля данного типа размещаются в отчете, как правило, в колонтитулах, полосах группы и в итоговой части отчета.

Диалоговое окно, открываемое при нажатии кнопки Print When (Условия печати), позволяет задать условия, при которых информация данного поля будет выводиться на печать.



Размещение в отчете линий и прямоугольников


Для улучшения внешнего вида отчета и повышения читабельности можно использовать линии и прямоугольники.

Для проведения вертикальной или горизонтальной линии в отчете выполните следующие действия:

Нажмите кнопку Line (Линия) на панели Report Controls (Элементы управления отчета) конструктора отчетов.

Установите указатель в начальную точку линии.

Нажмите кнопку мыши и, удерживая ее, проведите линию необходимой длины.

Используя опции команды Реn (Перо) из меню Format (Формат), установите атрибуты линии (толщину и тип).

Для задания цвета размещенной в отчете линии щелкните мышью на понравившемся цвете цветовой палитры панели Color Palette (Цветовая палитра).

Для размещения в отчете прямоугольника и прямоугольника со скругленными углами используются кнопки Rectangle (Прямоугольник) и Rounded Rectangle (Прямоугольник со скругленными углами) на панели инструментов Report Controls (Элементы управления отчета) конструктора отчетов.

Нажмите необходимую кнопку на пане.ш ипарументов, установите указатель в какой-либо угол прямоугольника и перемещайте курсор в противоположный угол до получения прямоугольника нужного размера. Затем установите необходимые атрибуты прямоугольника, используя для этого следующие опции команды Реn (Перо) из меню Format (Формат) (табл. 8.11).

Таблица 8.11. Опции команды Реп из меню Format

Опция Атрибут объекта
Hairline (Тонкая линия) Контур шириной в один пиксел
1 Point (1 пункт) Контур шириной в один пункт
2 Point (2 пункта) Контур шириной в два пункта
4 Point (4 пункта) Контур шириной в четыре пункта
6 Point (6 пунктов) Контур шириной в шесть пунктов
None (Нет) Выделенный объект не имеет контура
Dotted (Пунктир) Пунктирный контур
Dashed (Штрих) Контур в виде коротких штрихов
Dash-dot (Штрих-точка) Контур в виде чередующихся штрихов и точек
Dash-dot-dot (Штрих-точка-точка) Контур в виде чередующихся штрихов и пар точек



Размещение в отчете рисунков


В отчеты, создаваемые в программе Visual FoxPro, можно включать растровые рисунки, которые улучшат внешний вид отчета. В письмах, рассылаемых клиентам, можно, например, поместить фирменный знак или эмблему фирмы. Для подготовки изображения можно использовать графические редакторы или сканер для считывания изображения.

Для размещения в отчете рисунка используется кнопка Picture/ActiveX Bound Control (Изображение/АctiveХ-объект) панели инструментов Report Controls (Элементы управления отчета) конструктора отчетов. Нажмите данную кнопку, а затем установите курсор в один из углов области, в которой должен находиться рисунок, и переместите курсор в противоположный угол до образования рамки необходимого размера. При этом открывается диалоговое окно Report Picture (Изображение отчета) (рис. 8.20), в котором вы определяете источник данных рисунка и его параметры. Источником данных может быть файл, содержащий рисунок, или поле таблицы типа General. Для указания источника данных используются опции области Picture from (Изображение из) диалогового окна.

Рис. 8.20. Диалоговое окно Report Picture

При размещении в отчете графического изображения в диалоговом окне Report Picture (Изображение отчета) установите опцию File (Файл). Затем нажмите кнопку выбора файла, расположенную с правой стороны поля. В открывшемся диалоговом окне Open (Открыть) выберите требуемый графический файл. Если вы знаете полное имя файла, то можете ввести его непосредственно в поле ввода File (Файл) без использования диалогового окна Open (Открыть).

В том случае, если вы хотите печатать в отчете изображения, размещенные в поле таблицы (в Visual FoxPro для хранения графических изображений используются поля типа General), в диалоговом окне Report Picture (Изображение отчета) установите опцию Field (Поле). Затем нажмите расположенную с правой стороны поля кнопку и в открывшемся диалоговом окне Choose Field/Variable (Выбор поля/переменной) выберите необходимое поле таблицы.

Если размер выделенной для размещения июбражения области и размер самого изображения не совпадают, воспользуйтесь опциями раздела If picture and frame are different sizes (Если рашый размер) (табл. 8.13).


Таблица 8.13. Опции раздела If picture and frame are different sizes

Опция Режим отображения
Clip picture (Обрезать изображение) Рисунок фиксируется в левой верхней части рамки, сохраняя первоначальный размер
Scale picture, retain shape (Масштабировать, сохраняя форму)

Рисунок полностью заполняет отведенное ему поле, сохраняя относительные пропорции растрового изображения
Scale picture, fill the frame (Масштабировать, заполняя рамку)

Рисунок полностью заполняет отведенное ему поле, в случае необходимости подвергаясь вертикальному или горизонтальному искажению
Переключатель Object Position (Положение объекта) диалогового окна Report Picture (Изображение отчета) позволяет задать положение графического изображения в полосе при изменении размеров окружающих его полей (табл. 8.14).

Таблица 8.14. Опции переключателя Object Position

Опция Характеристика
Float (Плавающее) Расположение изображения в отчете может изменяться при изменении размеров окружающих его полей
Fixed relative to top of band (Постоянное относительно верхней полосы)

Изображение сохраняет свое положение относительно верхней границы полосы
Fixed relative to bottom of band (Постоянное относительно нижней полосы)

Изображение сохраняет свое положение относительно нижней границы полосы

Размещение в отчете текстовой информации


Размещаемый в отчете текст является объектом, который можно выделять, перемещать, изменять его размеры, используя для этого маркеры выделения, сохранять во временном буфере Windows, копировать из буфера или удалять.

Для ввода или редактирования текста в отчете выполните следующие действия:

Нажмите кнопку Label (Метка) на панели инструментов Report Controls (Элементы управления отчета).

Щелкните мышью в том месте окна конструктора отчета, где необходимо разместить или исправить текст.

Внесите необходимые добавления или изменения.

Нажмите кнопку Select Objects (Выбор объектов) на панели инструментов Report Controls (Элементы управления отчета).

Совет

Текст может состоять из нескольких строк. Для переноса части текста на новую строку используйте клавишу <Enter>.

Для размещенного в отчете текста можно изменять параметры используемого шрифта и цвет, выполнив следующие действия:

Используя мышь, выделите текстовый объект.

В меню Format (Формат) выберите команду Font (Шрифт).

В открывшемся диалоговом окне Шрифт установите начертание, стиль, цвет и размер символов выделенного текста. Вид выбранного шрифта просмотрите в области Образец этого же диалогового окна.

Завершив установку параметров, нажмите кнопку ОК.

Если дважды щелкнуть на текстовом объекте, откроется диалоговое окно Text (Текст) (рис. 8.9), в котором можно определить условия печати текста, его расположение в полосе, а также разместить комментарии.

Рис. 8.9. Диалоговое окно Text



Разметка страницы отчета


Для разметки страницы отчета используется диалоговое окно Page Setup (Разметка страницы) (рис. 8.30), открываемое при выборе в меню File (Файл) команды Page Setup (Разметка страницы). Оно позволяет определить количество колонок в отчете, порядок вывода записей, ширину левого поля отчета, ширину колонок и расстояние между ними, единицу измерения координат отчета и выбор режима печати.

Рис. 8.30. Диалоговое окно Page Setup

В области Columns (Колонки) этого диалогового окна определяются размеры колонок и их количество на странице (табл. 8.18).

Таблица 8.18. Назначение полей области Columns диалогового окна Page Setup

Поле Назначение
Number (Число) Определяет число колонок на странице
Width (Ширина) Определяет ширину колонок в сантиметрах или дюймах
Spacing (Расстояние) Определяет расстояние между колонками

Опции переключателя Print area (Область печати) описаны в табл. 8.19.

Таблица 8.19. Назначение опций переключателя Print area

Опция Назначение
Printable page (Печатаемая страница)

Устанавливает режим печати с полями страницы, определяемыми в соответствии с требованиями текущего драйвера печати
Whole page (Страница в целом)

Устанавливает режим печати с минимальными полями

Для задания порядка вывода записей в многоколоночных отчетах используется переключатель Print order (Порядок печати). Расположенный ниже счетчик Left margin (Левая граница) задает ширину левого поля отчета.



Создание многоколоночного отчета


Мы рассмотрели создание отчета для рассылки информации потенциальным клиентам. Используя многоколоночный отчет, подготовим данные для печати адресов, наклеиваемых на конверты для отправки клиентам.

Откройте конструктор отчета.

Добавьте в среду окружения отчета таблицу customer, содержащую адреса клиентов.

Расположите в отчете требуемые для формирования адреса поля и обратный адрес. Отчет будет иметь вид, показанный на рис. 8.31.

В меню File (Файл) выберите команду Page Setup (Разметка страницы).

В поле Number (Число) открывшегося диалогового окна Page Setup (Разметка страницы) введите число 2, определяющее количество колонок в отчете, и нажмите кнопку ОК.

Просмотрите внешний вид отчета в окне предварительного просмотра с помощью команды контекстного меню Preview (Предварительный просмотр) (рис. 8.32).

Сохраните отчет.

Рис. 8.31. Многоколоночный отчет

Рис. 8.32. Многоколоночный отчет в окне предварительного просмотра



Создание отчета в свободной форме


Мы рассмотрели основные этапы работ для создания отчета в конструкторе отчетов. Приступим к созданию отчета и свободной форме для рассылки прайс-листов потенциальным клиентам.

Откройте проект sales.

Откройте базу данных проекта. Для этого на вкладке Data (Данные) установите курсор на ее название и нажмите кнопку Open (Открыть) окна проекта. При лом на стандартной панели инструментов в списке Databases (Базы данных) появляется название открытой базы данных.

Перейдите на вкладку Documents (Документы), выберите группу Reports (Отчеты) и нажмите кнопку New (Новый). В открывшемся диалоговом окне New Report (Новый отчет) выберите опцию New Report (Новый отчет). Открывается окно конструктора отчетов.

Откройте среду окружения отчета Data Environment (Среда окружения). выберите команду Data Environment (Среда окружения) в меню View (Вид) или из контекстного меню.

Для размещения таблицы в среде окружения в меню DataEnvironment (Среда окружения) выберите команду Add (Добавить). Затем в открывшемся диалоговом окне Add Table or View (Добавить таблицу или представление данных) выберите таблицу customer и нажмите кнопку ОК. Закройте среду окружения.

Расположите в отчете поля, воспользовавшись командой Quick Report (Быстрый отчет) из меню Report (Отчет). При создании быстрого отчета выберите размещение полей по строкам и поля с наименованием предприятия, индекса и страны. Остальную информацию вы сформируете с помощью вычисляемых полей.

Рис. 8.21. Отчет в свободной форме

Добавьте в полосу Detail (Детати) отчета вычисляемое поле для отображения имени представителя клиента, содержащее следующее выражение:

ALLTRIM(Customer.cFirstName) + " "+ ALLTRIM(Customer.cSecondName)

Добавьте в отчет вычисляемое поле для вывода адреса, которое содержит следующее выражение:

ALLTRIM(Customer.cCity)+ " " +ALLTRIM(Customer.cAddress)

Разместите в отчете текст и поля, как показано на рис. 8.21.

Просмотрите внешний вид отчета с помощью команды контекстного меню Preview (Просмотр). Экран будет иметь вид, представленный на рис. 8.22.

Сохраните отчет.

Рис. 8.22. Отчет в свободной форме



Создание простого отчета


Мы рассмотрели основные действия, необходимые для создания простого отчета с помощью конструктора отчетов. Теперь, подводя итоги, рассмотрим последовательность действий по созданию отчета для таблицы Customer. содержащей список клиентов.

Откройте проект sales.

Откройте базу данных проекта. Для этого на вкладке Data (Данные) установите курсор на названии базы данных и нажмите кнопку Open (Открыть) окна проекта. При этом на стандартной панели инструментов в списке Databases (Базы данных) появляется название открытой базы данных.

Перейдите на вкладку Documents (Документы), выберите группу Reports (Отчеты) и нажмите кнопку New (Новый).

В открывшемся диалоговом окне New Report (Новый отчет) выберите опцию New Report (Новый отчет). Открывается окно конструктора, предназначенное для создания нового отчета.

Для задания среды окружения отчета откройте диалоговое окно Data Environment (Среда окружения), выбрав команду Data Environment (Среда окружения) в меню View (Вид) или из контекстного меню.

Для добавления таблицы в окружение отчета в меню DataEnvironment (Среда окружения) выберите команду Add (Добавить).

В открывшемся диалоговом окне Add Table or View (Добавить таблицу или представление) выберите таблицу customer и нажмите кнопку Add (Добавить). Закройте окно Add Table or View (Добавить таблицу или представление) с помощью кнопки Close (Закрыть). В окне Data Environment (Среда окружения) будет отображена выбранная таблица.

Откройте окно свойств таблицы. Для этого установите курсор на ее название, нажмите правую кнопку мыши и выберите из контекстного меню команду Properties (Свойства).

Выделите свойство order (Порядок). Для упорядочения данных в отчете по кодам клиентов в поле коррекции свойства нажмите кнопку раскрытия списка и из списка индексов таблицы выберите icdCustomer.

Закройте окно Data Environment (Среда окружения).

Для размещения полей таблицы в отчете воспользуйтесь командой Quick Report (Быстрый отчет) в меню Report (Отчет). Открывается диалоговое окно Quick Report (Быстрый отчет).


Выберите вариант размещения полей по столбцам и нажмите кнопку Fields (Поля).

В диалоговом окне Field Picker (Выбор поля) выберите поля, помещаемые в отчет, и перенесите их в список Selected fields (Выбранные поля), используя кнопку Move (Перенести). Нажмите кнопку ОК.

Возвратившись в диалоговое окно Quick Report (Быстрый отчет), нажмите кнопку ОК для завершения процедуры размещения полей в отчете.

Используя кнопку Label (Метка) панели инструментов Report Controls (Элементы управления отчета), скорректируйте заголовки полей.

Для того чтобы придать отчету законченный вид, добавьте область заголовка отчета, выбрав в меню Report (Отчет) команду Title/Summary (Титул/Итоги).

В открывшемся диалоговом окне Title/Summary (Титул/Итоги) установите флажок Title band (Полоса титула) и нажмите ОК. В отчете появляется полоса Title. Разместите в ней текст заголовка отчета с помощью кнопки Label (Метка) панели инструментов Report Controls (Элементы управления отчета).



Рис. 8.11. Список клиентов

Просмотрите внешний вид отчета (рис. 8.11), воспользовавшись командой контекстного меню Preview (Просмотр).

Сохраните отчет.


Создание табличного отчета


Создадим в конструкторе отчетов табличный отчет, содержащий список заказов. При создании отчета будем использовать три таблицы. Таблица rdsaiem содержит сведения о заказе на товары — это главная таблица,

на основании которой строится отчет. Остальные две таблицы являются вспомогательными. Таблица ordsaied содержит сведения о товарах, входящих в заданный заказ (количество купленных товаров и цена товара), а таблица customer — информацию о клиентах. Приступим к созданию отчета.

Откройте новое окно в конструкторе отчетов.

В среду окружения отчета Data Environment (Среда окружения) добавьте поочередно таблицы ordsaiem, customer и ordsaied. При создании связей между таблицами для данного отчета необходимо учитывать следующее:

таблица ordsaiem является родительской по отношению к таблицам Ordsaied И Customer;

связь между таблицами ordsaiem и Customer осуществляется по коду клиента;

связь между таблицами ordsaiem и ordsaied осуществляется по коду заказа;

данные в таблице ordsaiem должны быть упорядочены по коду заказа, в таблице customer — по коду клиента, в таблице ordsaied — по коду заказа

Установив связи между таблицами и упорядочив данные (рис. 8.23), закройте окно Data Environment (Среда окружения).

Рис. 8.23. Диалоговое окно Data Environment

Используя команду Quick Report (быстрый отчет) из меню Report (Отчет), разместите в отчете следующие моли:

сСomраnуС наименованием компании из таблицы Customer;

dDoc, содержащее дату продажи из таблицы crdsalem;

nQuant с количеством проданного товара из таблицы Ordsaled;

nUnitpriceC с ценой товара из таблцы Grdsale

Создайте вычисляемое поле, которое содержит выражение для подсчета стоимости проданного товара:

OrdSaled.nQuant * OrdSaled.nUnitPrive

Добавьте в полосу Page Header (Верхним колонтитул) заголовки для размешенных полей.

Добавьте в отчет заголовок и итоговую часть отчета, выполнив команду Title/Summary (Титул/Итоги) из меню Report (Отчет).

В заголовке отчета введите Список заказов.

В итоговой части отчета создайте поле, которое вычислит стоимость всех заказов, просуммировав стоимость проданного товара.

Отчет в окне конструктора отчетов будет иметь вид, представленный на рис. 8.24. Просмотрите внешний вид отчета в окне предварительного просмотра (рис. 8.25).

Сохраните отчет.

Рис. 8.24. Созданный отчет в окне конструктора отчетов

Рис. 8.25. Просмотр табличного отчета



Типы полос окна конструктора отчета


Вся рабочая область конструктора отчетов по умолчанию разделена на три полосы, ограничиваемые разделительными строками (см. рис. 8.1). Наименование полосы отображается на разделительной строке, находящейся непосредственно под этой полосой. При использовании в отчете группирования данных, добавлении в него титульной страницы и итоговых данных появляются дополнительные полосы. Каждая полоса может содержать элементы управления отчета, такие как текст, табличные и вычисляемые поля, линии, прямоугольники, рисунки.

Типы возможных в отчете полос приведены в табл. 8.2. Основное назначение полосы — определять, когда и где будут печататься размещенные в полосе объекты.

Таблица 8.2. Типы полос отчета

Полоса Назначение
Title (Титул) В этой полосе размещается информация, появляющаяся перед основным отчетом и называемая титульной. Это может быть имя отчета, сопроводительное письмо или любые данные, которые необходимо поместить на первой странице отчета
Page Header (Верхний колонтитул)

Эта полоса в отчете называется верхним колонтитулом. Данные, помещенные в полосу, печатаются в начале каждой страницы. Примерами элементов управления могут быть название отчета, текущая дата, номер страницы и т. д.
Group Header (Группа сверху)

В этой полосе печатается информация, используемая при группировке. При группировке данных группа может иметь верхние полосы, печатаемые до нее. Они помогают идентифицировать информацию, содержащуюся на каждом уровне группировки
Detail (Детали) Эта полоса содержит данные полей из таблицы или результат вычислений над ними
Group Footer (Группа снизу)

В полосе размещается итоговая информация по группе
Page Footer (Нижний колонтитул)

В нижнем колонтитуле печатается название отчета, дата, номер страницы и итоговые значения по данным текущей страницы
Summary (Итоги) В итоговой части отчета содержится информация, появляющаяся один раз после основного отчета и содержащая итоговые значения или заключительный текст



Установка среды окружения отчета


Для отчета, созданного мастером или с помощью команды Quick Report (Быстрый отчет), среда окружения отчета уже определена. Разработчику, создающему отчет с помощью конструктора отчетов, среду окружения необходимо сформировать, выполнив для этого следующие действия:

разместить в окружении используемые в отчете таблицы;

установить для таблиц необходимые индексы;

установить отношения между таблицами.

Вся относящаяся к среде окружения информация хранится в файле описания отчета.

Для формирования среды окружения отчета используется окно Data Environment (Среда окружения) (рис. 8.7), для открытия которого можно воспользоваться одним из следующих способов:

в меню View (Вид) выбрать команду Data Environment (Среда окружения);

выбрать пункт Data Environment (Среда окружения) контекстного меню;

в среде окружения необходимо разместить все таблицы, используемые в отчете. Для добавления таблицы в окружение используется команда Add контекстного меню или команда Add (Добавить) из меню DataEnvironment (Среда окружения). Связанные таблицы базы данных переносятся в Data Environment (Среда окружения) с сохранением связей, установленных между ними.

Как и в формах, при создании отчетов можно использовать адаптер курсора. Для этого в контекстном меню расположены две новые команды. Add CursorAdapter (Добавить адаптер курсора) добавляет в среду окружения отчета адаптер курсора. Команда Builder (Построитель) запускает построитель, позволяющий добавить в среду окружения адаптер курсора и настроить его.

Рис. 8.7. Диалоговое окно Data Environment

После размещения таблиц в среде окружения отчета вам необходимо упорядочить данные, находящиеся в таблицах. Дли этого выполните следующие действия:

Выделите таблицу, в которой хотите упорядочить данные.

Откройте окно свойств таблицы. Для этого установите на нее курсор, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства).

Выделите свойство order (Порядок) (рис. 8.8).

Рис. 8.8. Свойство Order используется для упорядочения записей в таблице

В поле коррекции свойства нажмите кнопку раскрытия списка. Из списка индексов таблицы выберите тот, по которому хотите упорядочить данные в отчете.

Если в отчете используется несколько связанных таблиц, то вам необходимо убедиться, что связи установлены так, как требуется для создания правильного отчета. Для этого выполните следующие действия:

Выделите линию, соединяющую таблицы. При этом в окне свойств Properties (Свойства) будут отображаться свойства, характеризующие установленную между таблицами связь.

Проверьте, какая из таблиц является родительской, а какая дочерней но отношению к ней. Для этого просмотрите свойства chiidAiias (Дочерняя таблица) и ParentAiias (Родительская таблица).

Посмотрите выражение, по которому связаны таблицы. Для этого воспользуйтесь свойством ReiationaiExpr (Выражение отношения).

После размещения в окне Data Environment (Среда окружения) всех испопь-зуемых в отчете таблиц, закройте его, после чего Visual FoxPro сохранит созданную вами среду окружения.



Задание формата данных


Диалоговое окно Report Expression (Выражение отчета) позволяет задать формат отображения поля при печати, допуская использование тех же функций форматирования, которые применяются при форматировании полей формы. С помощью форматирования вы можете:

преобразовать весь символьный вывод в прописные буквы;

выравнивать информацию;

показывать в числах пробелы и десятичные запятые;

переводить дату из американского формата в европейский и многое другое.

Рис. 8.14. Диалоговое окно Format

Для задания формата поля нажмите кнопку вызова построителя поля Format (Формат). Откроется диалоговое окно Format (Формат) (рис. 8.14), содержащее опции и флажки, позволяющие задать тип данных поля.

Замечание

Кнопки вызова построителя всегда располагаются справа от поля ввода.

Перечень параметров настройки поля определяется выбором соответствующей опции для форматирования полей символьного, числового типов, а также полей дат. Список этих параметров представлен в табл. 8.5—8.7.

Таблица 8.5. Параметры настройки символьных полей

Параметр Назначение
То upper case (Верхний регистр)

Символы преобразуются в прописные
Ignore input mask (Игнорировать маску ввода)

Отображает на экране, но не сохраняет в заданном формате в таблице
SET DATE format (В виде даты) Данные отображаются в виде даты в формате, установленном командой SET DATE
British date (Европейская дата) Данные отображаются в виде даты в европейском формате
Left justify (Сдвинуть влево) Данные выравниваются по левому краю поля
Right justify (Сдвинуть вправо) Данные выравниваются по правому краю поля
Center justify (По центру) Данные в поле центрируются

Таблица 8.6. Параметры настройки числовых полей

Параметр Назначение
Left justify (Сдвинуть влево) Число выравнивается по левому краю поля
Blank if zero (Пусто, если нуль) Нуль не печатается
(Negative) (Отрицательное) Отрицательные числа заключаются в круглые скобки
SET DATE format (В виде даты) Данные отображаются в виде даты в формате, установленном КОМаНДОЙ SET DATE
British date (Европейская дата) Данные отображаются в виде даты в европейском формате
CR if positive (CR, если положительно)

Если число положительное, после него ставится CR (кредит)
DB if negative (DB, если отрицательно)

Если число отрицательное, после него ставится DB (дебет)
Leading zeros (Ведущие нули) Печатаются все ведущие нули
Currency (Денежная единица) Данные отображаются в формате денежной единицы, который задается командой set currency
Scientific (Экспоненциально) Отображает число в экспоненциальном формате

Таблица 8.7. Параметры настройки полей типа дата

Параметр Назначение
SET DATE format (В виде даты) Дата отображается в формате, установленном командой set date
British date (Европейская дата) Дата отображается в европейском формате



Задание условий печати


Для задания условий печати данных отчета используется диалоговое окно Print When (Условие печати) (рис. S.15), открываемое из диалогового окна Report Expression (Выражение отчета) нажатием кнопки Print When (Условие печати). С помощью параметров этого окна вы можете удалить из отчета пустые строки, определить условия печати значений полей при переходе на следующую страницу пли при изменении выражения группы и т. п.

Рис. 8.15. Диалоговое окно Print When

Для подавления печати повторяющихся значений полей используется значение No (Нет) переключателя Print repeated values (Печатать повторяющиеся значения). При устаноатенном значении Yes (Да) печатаются все значения поля.

Область Also print (Печатать) содержит флажки (табл. 8.8).

Таблица 8.8. Флажки области Also print

Флажок

Назначение

In first whole band of new page/column (Ha первой целой полосе новой страницы/колонки)

Поле печатается в первой полосе новой страницы или колонки
When this group changes (При изменении группы) Поле печатается при изменении группы, выбранной в списке групп
When detail overflows to new page/column (При переходе на новую страницу/колонку)

Поле печатается при переходе полосы Detail на новую страницу

При установке флажка Remove line if blank (Удалять пустые строки) пустые строки удаляются из отчета.

В иоле Print only when expression is true (Печатать, если истинно), используя построитель выражения, можно задать выражение, вычисляемое перед печатью данного поля. Если значение выражения ложно, то значение поля печататься не будет.



Формирование списка полей результирующей таблицы запроса


В результирующей таблице запроса поля формируются на основе полей исходных таблиц и вычисляемых полей. Для задания списка полей результирующей таблицы запроса предназначена вкладка Fields (Поля) конструктора запросов (рис. 9.3).

Вкладка Fields (Поля) содержит два списка: Available fields (Имеющиеся поля) и Selected fields (Выбранные поля). Список Available fields (Имеющиеся поля) содержит все поля размещенных в окне конструктора таблиц. Selected fields (Выбранные поля) отображает поля формируемого запроса.

Перенести поля из списка Available fields (Имеющиеся поля) в Selected fields (Выбранные поля) вы можете одним из перечисленных ниже способов.

Использовать для переноса кнопки Add (Добавить) и Add All (Добавить все), позволяющие перенести в список Selected fields (Выбранные поля) выделенные или все поля, соответственно. Используя кнопку Remove (Удалить), вы можете вернуть в список Available fields (Имеющиеся поля) ошибочно перенесенные поля.

Использовать механизм "перенести-и-оставить". Для этого на панели, содержащей образы используемых в запросе таблиц, выделите поля, которые вы собираетесь отобразить в запросе, нажмите кнопку мыши и, не отпуская ее. перенесите их в список Selected fields (Выбранные поля). Для выбора всех полей используется строка таблицы, содержащая звездочку. Этот же механизм можно использовать для удаления полей из списка Selected fields (Выбранные поля).

Для переноса поля из списка Available fields (Имеющиеся поля) в Selected fields (Выбранные поля) вы можете дважды щелкнуть мышью на поле в образе таблицы или в списке Available fields (Имеющиеся поля).

Рис. 9.3. Вкладка Fields предназначена для выбора полей запроса

Совет

Как и при работе с объектами в Windows, для выделения группы полей вы можете использовать мышь совместно с клавишами <Shift> и <Ctrl>. Сначала выделите первое из выбираемых полей и нажмите клавишу <Shift> или <Ctrl> в зависимости от того, расположены выбираемые поля рядом или вразброс. Затем, не отпуская клавишу, щелкните мышью крайнее поле из группы подряд выбираемых полей или каждое из отдельно расположенных полей.

Поля в результирующей таблице запроса будут следовать в том порядке, в котором они расположены в списке Selected fields (Выбранные поля). Для изменения расположения полей в этом списке можно использовать находящийся слева от поля маркер перемещения. Установите курсор на маркер и переместите поле в требуемую строку.



Формирование списка условий


Visual FoxPro позволяет при создании запросе» формировать несколько условий. В том случае, если все задаваемые условия накладываются на одно поле, их можно разместить в одной строке. В противном случае условия размещаются в разных строках вкладки Filter (Фильтр). Рассмотрим следующий пример. Выберем всех покупателей из Москвы, Новгорода и Киева.

Откройте окно конструктора запросов.

Поместите в него таблицу customer.

На вкладке Fields (Поля) разместите в списке Selected fields (Выбранные поля) требуемые поля.

Откройте вкладку Filter (Фильтр).

Из списка Field Name (Имя поля), содержащего все поля таблицы Customer, выберите поле ccity.

В списке Criteria (Критерии) выберите значение In (В).

В поле столбца Example (Пример) через запятую задайте в кавычках названия городов, покупатели которых вас интересуют (рис. 9.13).

Для просмотра результатов выборки нажмите кнопку Run (Выполнить) на стандартной панели инструментов

Рис. 9.13. Окно запроса со списком условий отбора



Группировка полей запроса


Группировка полей запроса позволяет получить информацию о подгруппах таблицы. Например, сгруппировав по коду заказа данные в таблице, содержащей сведения о заказах, можно получить сведения об итоговой сумме по каждому заказу.

Для группировки записей в запросе предназначена вкладка Group By (Группировка) (рис. 9.18), содержащая список Grouped fields (Поля группировки) с полями, по которым осуществляется группировка данных.

Рис. 9.18. Вкладка Group By окна конструктора запросов



Использование в запросе выражений и функций полей


В запрос можно включать статистические значения, вычисляемые по одному или нескольким полям исходной таблицы. Например, используя функцию counto, вы можете подсчитать количество клиентов, проживающих в том или ином городе.

Кроме того, Visual FoxPro позволяет выполнять итоговые операции над вычисляемыми в запросе полями. Например, в запросе, выбирающем данные

из таблиц ordsaiem и ordsaied. вы можете вычислить итоговую стоимость продажи каждого товара за интересующий вас интервал времени.

Для вычисления итоговых значений в запросе вы можете использовать функции, описанные в табл. 9.4.

Таблица 9.4. Функции для вычисления итоговых значений в запросе

Функция Результат вычисления
COUNT( ) Количество строк в итоговой таблице
МАХ Наибольшее значение в столбце
MIN Наименьшее значение в столбце
AVG( ) Среднее значение столбца численных данных
SUM( ) Сумма численных данных столбца

Для формирования в запросе выражения предназначено поле Functions and expressions (Функции и выражения) вкладки Fields (Поля) и расположенная справа от него кнопка открытия построителя выражения. Нажмите данную кнопку. Откроется диалоговое окно Expression Builder (Построитель выражения). В поле ввода Expression (Выражение) сформируйте итоговое значение (рис. 9.19), используя поля таблиц запроса, расположенные в списке Fields (Поля), и функции области Functions (Функции), сгруппированные по типам данных и представленные в виде четырех списков.

Рис. 9.19. Диалоговое окно Expression Builder позволяет включить в запрос функцию или выражение

При нажатии кнопки Options (Опции) открывается диалоговое окно Expression Builder Options (Опции построителя выражения) (рис. 9.20). Используя параметры этого окна, можно настроить список наиболее часто используемых в запросе функций, отображаемых в области Functions (Функции) диалогового окна Expression Builder (Построитель выражения).

Рис. 9.20. Диалоговое окно Expression Builder Options

Чтобы настроить список функций, выполните следующие действия:


В диалоговом окне Expression Builder Options (Опции построителя выражений) установите опцию типа настраиваемой функции.

Нажмите кнопку Clear (Очистить) для очистки списка функций.

Используя клавишу <Shift>, если выбираемые функции расположены подряд в списке, или клавишу <Ctrl>, выберите необходимые функции.

Нажмите кнопку ОК.

В нижней части диалогового окна Expression Builder Options (Опции построителя выражений) находится переключатель, содержащий опции, описанные в табл. 9.5.

Таблица 9.5. Назначение опций переключателя окна Expression Builder Options

Опция Назначение
Always add alias (Всегда добавлять псевдоним) Указывает, что имя таблицы или представления данных всегда включается в имя поля
Add non-selected alias only (Добавлять только не выбранные псевдонимы) Если открыто более одной таблицы или представления данных, Visual FoxPro включает имя таблицы или представления данных только в том случае, если они не содержатся в списке псевдонимов в окне Data Session
Never add alias (He добавлять псевдоним) Указывает, что имя таблицы или представления данных никогда не включается в имя поля
Флажок Show system memory variables (Показывать системные переменные) указывает, будут ли отображаться в окне построителя выражения системные переменные.

При формировании выражения вы можете использовать поля, константы и функции, связанные арифметическими операторами, список которых приведен в табл. 9.6.

Таблица 9.6. Арифметические операторы, используемые при формировании выражений

Оператор Функция
+ Сложение
- Вычитание
* Умножение
/ Деление
Для изменения порядка вычислений в формируемом выражении, а также для группировки данных можно использовать круглые скобки.


Изменение наименований полей в запросе


Visual FoxPro по умолчанию присваивает полям результирующей таблицы запроса наименования, которые имеют поля исходной таблицы. Вычисляемым и итоговым полям присваиваются наименования в соответствии с соглашением, принятым в Visual FoxPro.

Используя ключевое слово as, вы можете по своему усмотрению изменить наименования полей результирующей таблицы. При этом наименования полей изменятся только в результирующей таблице, а имена полей в исходной таблице останутся без изменения.

Для изменения наименования поля необходимо за именем поля или выражением, заданным для определения поля результирующей таблицы, поместить ключевое слово as, а за ним указать новое имя поля.

В предыдущем примере наименование итогового поля было определено Visual FoxPro по умолчанию. Результат запроса будет более читабельным, если вы измените наименования полей. Для этого выполните следующие действия:

Откройте окно запроса, созданного в предыдущем примере.

Добавьте в поле, содержащее номер заказа, ключевое слово as и наименование поля Заказ.

OrdSalem.icdorder AS Заказ

Аналогичным образом добавьте в итоговое поле вычисления итоговой стоимости заказа ключевое слово as и наименование поля Стоимость.

SUM(OrdSaled.nQuant * OrdSaled.nUnitPri.ee) AS Стоимость

Сохраните запрос. Для выполнения запроса нажмите кнопку Run (Выполнить), в результате на экране появится результирующая таблица, содержащая новые наименования полей (рис. 9.22).

Рис. 9.22. Изменение наименования полей



Команды, используемые при формировании запросов


Для работы в окне конструктора запроса можно использовать команды меню Query и панель инструментов Query Designer (Конструктор запроса). Назначение команд и кнопок на панели инструментов описано в табл. 9.2.

Таблица 9.2. Назначение команд меню Query и кнопок панели инструментов Query Designer

Команда меню Кнопка Назначение
Add Table (Добавить таблицу)

Добавляет в запрос новую таблицу
Remove Table (Удалить таблицу)

Удаляет выбранную таблицу из запроса
Remove Join Condition (Удалить условие объединения)

  Удаляет условие объединения таблиц
Output Fields (Результирующие поля)

  Открывает вкладку Fields для выбора полей результирующей таблицы
Join (Объединение)   Открывает вкладку Join для задания условия объединения таблиц
Filter (Фильтр)   Открывает вкладку Filter для задания фильтра
Order By (Упорядочение)   Открывает вкладку Order By для определения критерия упорядочения данных
Group By (Группировка)   Открывает вкладку Group By для определения условия группировки данных
Miscellaneous (Разное)   Открывает вкладку Miscellaneous для задания дополнительных параметров запроса
Query Destination (Результат запроса)

Открывает диалоговое окно Query Destination, в котором указывается, куда выводить результат запроса
View SQL (Показать SQL)
Открывает диалоговое окно, в котором отображается SQL-оператор, соответствующий созданному запросу
Maximize the table view (Максимизировать панель отображения)

Раскрывает панель отображения используемых в запросе таблиц на весь экран. Повторное нажатие на эту кнопку возвращает панели первоначальный размер
Add Join (Добавить условие объединения)
Открывает диалоговое окно Join Condition для задания условия объединения таблиц
Comments (Комментарии)   Открывает диалоговое окно, в котором вы можете ввести краткое описание создаваемого запроса
Run Query (Выполнить запрос)   Запускает запрос на выполнение

Совет

Для просмотра конструкции select, соответствующей выборке, предназначены команда View SQL и кнопка Show the SQL window панели инструментов. Сформировав запрос, вы можете скопировать конструкцию select во временный буфер Windows и использовать ее при написании программ.



Конструктор запросов


Для создания запроса в окне конструктора запросов выполните следующие действия:

На вкладке Data (Данные) конструктора проекта выберите группу Queries (Запросы).

Нажмите кнопку New (Новый).

В открывшемся диалоговом окне New Query (Новый запрос) нажмите кнопку New Query (Новый запрос). Открывается диалоговое окно выбора таблиц Add Table or View (Добавить таблицу или представление данных).

В этом диалоговом окне выберите таблицы, данные из которых хотите использовать в запросе, и с помощью кнопки Add (Добавить) перенесите их в окно конструктора запросов.

Завершив выбор таблиц, нажмите кнопку Close (Закрыть).

На экране появляется окно конструктора запросов (рис. 9.2). которое содержит названия выбранных таблиц, а в основном меню появляется пункт Query (Запрос). Можно приступать к формированию условий запроса.

Совет

Для открытия ранее созданного запроса в окне конструктора запросов на вкладке Data (Данные) окна проекта в группе Queries (Запросы) найдите модифицируемый запрос, установите на него курсор и нажмите кнопку Modify (Модифицировать).

Рис. 9.2. Окно конструктора запросов с выбранной таблицей клиентов

Далее, открывая в конструкторе запросов необходимые вкладки, вы выполняете следующие действия:

выбираете поля результирующей таблицы запроса;

формируете вычисляемые поля;

задаете критерии для выборки, группировки и упорядочения данных;

указываете, куда выводить результат выборки.

В верхней части окна конструктора запросов расположена панель, на которой отображаются используемые в запросе таблицы. Ниже находятся вкладки, предназначенные для выбора полей запроса и формирования условий выборки. Назначение этих вкладок приведено в табл. 9.1.

Таблица 9.1. Назначение вкладок окна конструктора запросов

Вкладка Назначение
Fields (Поля) Позволяет указать поля исходных таблиц, выбираемые в результирующий запрос
Join (Объединение) Позволяет задать условия объединения таблиц
Filter (Фильтр) Позволяет определить фильтры, накладываемые для выбора записей
Order By (Упорядочение) Позволяет задать критерии упорядочения данных
Group By (Группировка)

Позволяет задать условия группировки данных
Miscellaneous (Разное)

Позволяет задать дополнительные условия, такие как признак выборки повторяющихся значений, количество или процент выбора данных



Многотабличные запросы


Во всех рассмотренных ранее в этой главе примерах данные при формировании запроса выбирались из одной таблицы. На практике при формировании запросов часто используются выборки из нескольких таблиц, т. к. в реляционных базах данных информация содержится не в одной отдельной таблице, а в совокупности связанных таблиц.

При создании многотабличного запроса в окно конструктора запросов добавляются все участвующие в выборке таблицы и определяются условия их объединения. Если между участвующими в запросе таблицами в базе данных установлены постоянные отношения, то в окне конструктора запросов эта связь будет отображаться в виде линии, соединяющей таблицы, а на вкладке Join (Объединение) появится запись, содержащая условие объединения таблиц (рис. 9.14).

Рис. 9.14. Вкладка Join содержит условия объединения таблиц

Если таблица, добавляемая в конструктор запросов, не имеет установленных в базе данных связей с уже размещенными в конструкторе таблицами, на экране открывается диалоговое окно Join Condition (Условие объединения) (рис. 9.15), в котором необходимо задать условие объединения двух таблиц.

Рис. 9.15. Определение условия объединения таблиц в диалоговом окне Join Condition

В верхней части диалогового окна Join Condition (Условие объединения) размещены два раскрывающихся списка, содержащие поля, которые можно использовать для объединения таблиц. Ниже расположен переключатель Type of join (Тип объединения), содержащий опции, определяющие тип создаваемой между таблицами связи. Назначение опций описано в табл. 9.3.

Таблица 9.3. Назначение опций диалогового окна Join Condition

Опция Тип создаваемой связи
Inner join (Внутреннее объединение) Создает объединение, в котором выбираются только те записи, которые содержат совпадающие значения в полях связи
Left join (Объединение слева) Создает объединение, в котором выбираются все записи из левой таблицы, а также записи из правой таблицы, значения поля связи которого совпадают со значениями поля связи левой таблицы
Right join (Объединение справа) Создает объединение, в котором выбираются все записи из правой таблицы, а также записи из левой таблицы, значения поля связи которого совпадают со значениями поля связи правой таблицы
Full join (Полное объединение) Создает объединение, в котором выбираются все записи из правой и левой таблиц
<
Замечание

По умолчанию Visual FoxPro при объединении таблиц использует опцию Inner join (Внутреннее объединение), при которой из таблиц выбираются только те записи, которые содержат совпадающие значения в полях связи.

Замечание

В отличие от постоянных отношений, определяемых между таблицами в базе данных, при объединении таблиц в конструкторе запросов вы можете использовать любые поля таблиц.

Установленные между таблицами условия объединения можно изменять. Для этого необходимо использовать вкладку Join (Объединение) конструктора запросов.

Совет

Для установления связи между таблицами в конструкторе запросов, как и в базе данных, можно использовать механизм "перенести-и-оставить". Выберите поле одной из таблиц, нажмите кнопку мыши и, удерживая нажатой, перенесите поле на связываемое поле в другой таблице. После этого откройте вкладку Join (Объединение) и отредактируйте запись с установленным условием объединения таблиц.


Сохранение запроса


Сформировав в окне конструктора запросов условия выборки, вы можете их сохранить в файле с расширением QPR, что позволит сэкономить время при последующих запусках запроса.

Для сохранения условий выборки в меню File (Файл) выберите команду Save as (Сохранить как). В открывшемся диалоговом окне Save As (Сохранить как) откройте папку, в которой хотите сохранить файл, введите в поле ввода имя файла и нажмите кнопку Сохранить.

В окне проекта запросы размещаются в разделе Queries (Запросы) вкладки Data (Данные). Для открытия запроса необходимо установить на него курсор и нажать кнопку Modify (Модифицировать) окна проекта.



Упорядочение по нескольким полям


Теперь рассмотрим ситуацию, когда необходимо упорядочить данные по нескольким полям. В этом примере отобразим данные в результирующей таблице по городам клиентов в алфавитном порядке и по убыванию значений кредита. При формировании запроса воспользуемся запросом, созданным в предыдущем примере.

На вкладке Fields (Поля) добавьте в список Selected fields (Выбранные поля) Поле yCreditLimit.

Рис. 9.8. Использование запроса для упорядочения двух полей

В окне конструктора запросов перейдите на вкладку Order By (Упорядочение). В списке Ordering criteria (Критерии упорядочения) находите поле ccity, по значению которого были упорядочены данные в предыдущем запросе.

Выделите поле yCreditLimit и дважды щелкните его мышью. Поле будет перенесено в список Ordering criteria (Критерии упорядочения).

Установите для данного поля опцию Descending (По убыванию). Обратите внимание, как выглядит теперь окно конструктора запросов (рис. 9.8). В списке Ordering criteria (Критерии упорядочения) рядом с полем ccity расположена стрелка, направленная вверх, а рядом с полем yCreditLimit — стрелка, направленная вниз. Направленная вверх стрелка означает, что данные отображаются в порядке возрастания, а направленная вниз — что данные расположены в порядке убывания.



Вкладка Order By конструктора запросов


Вкладка Order By (Упорядочение) конструктора запросов (рис. 9.6) позволяет указать критерий упорядочения данных в результирующей таблице, используя одно или несколько полей исходной таблицы, перенесенных из списка Selected fields (Выбранные поля) в список Ordering criteria (Критерии упорядочения). Для каждого поля в списке Ordering criteria (Критерии упорядочения) вы можете указать критерии упорядочения, используя следующие опции переключателя Order options (Опции упорядочения):

Ascending — по возрастанию

Descending — по убыванию

Рис. 9.6. Вкладка Order By конструктора позволяет сформировать условия упорядочения данных в запросе

В списке Ordering criteria (Критерии упорядочения) с левой стороны поля, для которого установлена опция Ascending (По возрастанию), расположена направленная вверх стрелка. Для обозначения упорядочения по убыванию используется стрелка, направленная вниз.

Порядок сортировки записей результирующей таблицы определяется порядком следования полей в списке Ordering criteria (Критерии упорядочения) и критерием упорядочения отдельных полей. Для изменения порядка следования полей в списке Ordering criteria (Критерии упорядочения) предназначен маркер перемещения, расположенный слева от поля.

Рассмотрим создание запроса для таблицы customer, в котором упорядочим отображаемые в результирующей таблице данные по городам клиентов:

Откройте окно конструктора запросов.

В открывшемся диалоговом окне Add Table or View (Добавить таблицу или представление) выберите таблицу customer.

На вкладке Fields (Поля) перенесите в список Selected fields (Выбранные поля) поля cCompany и cCity.

Рис. 9.7. Результаты выборки запроса

Откройте вкладку Order By (Упорядочение).

Дважды щелкнув на поле ccity, перенесите его в список Ordering criteria (Критерии упорядочения). По умолчанию для него установлена опция Ascending, т. е. данные будут упорядочены в алфавитном порядке по возрастанию.

Нажмите кнопку Run (Выполнить) на стандартной панели инструментов и просмотрите результаты выполненного запроса (рис. 9.7).



Включение в запрос итоговых значений


В данном примере создадим запрос для таблиц ordsaiem и ordsaied об итоговой сумме по каждому заказу. Для этого:

Откройте окно запроса для таблиц Ordsaiem и Ordsaied.

На вкладке Fields (Поля) перенесите в список Selected fields (Выбранные поля) поле icdorder, содержащее код заказа.

Чтобы вычислить стоимость проданного товара по текущему заказу, воспользуйтесь функцией sum. Для этого нажмите кнопку открытия диалогового окна Expression Builder (Построитель выражения) поля Functions and expressions (Функции и выражения).

В поле ввода Expression (Выражение) открывшегося диалогового окна введите выражение, по которому стоимость каждого проданного товара будет просуммирована и помещена в соответствующее поле результирующей таблицы:

SUM(Ordsaied.nQuant * Ordsaied.nUnitPrice)

Нажмите кнопку OK для закрытия диалогового окна Expression Builder (Построитель выражения).

Для перемещения сформированного выражения в список Selected fields (Выбранные поля) нажмите кнопку Add (Добавить).

Для группировки записей результирующей таблицы по полю icdorder откройте вкладку Group By (Группировка) и перенесите поле icdorder в список Grouped fields (Поля группировки).

Сохраните запрос. Для выполнения запроса нажмите кнопку Run (Выполнить). На экране появится результирующая таблица, содержащая информацию об итоговой стоимости товаров по каждому заказу (рис. 9.21).

Рис. 9.21. Результат выборки



Выбор похожих значений


Список вариантов сравнения Criteria (Критерий) вкладки Filter (Фильтр) содержит значения, позволяющие задавать различные критерии выбираемых в результирующую таблицу записей. При работе с большими таблицами время от времени возникает необходимость найти записи, точное написание которых вы не знаете. Например, вы не знаете, верхний или нижний регистр был использован при вводе записей. В этом случае вы можете осуществить выбор записей по условию неточного совпадения значений.

Предположим, что в таблице customer требуется найти запись о фирме, представитель которой имеет фамилию, начинающуюся на "Ник". Для поиска необходимых записей выполните следующие действия:

Откройте окно конструктора запросов.

Поместите в него таблицу customer.

На вкладке Fields (Поля) выделите курсором поля, которые хотите отобразить в запросе, и с помощью кнопки Add (Добавить) перенесите их в список Selected fields (Выбранные поля).

Рис. 9.11. Задание условия неточного совпадения

Для задания условия на вкладке Filter (Фильтр) выберите поле clasName.

В списке вариантов сравнения выберите значение =.

В поле столбца Example (Образец) введите Ник (рис. 9.И). В результате выполнения запроса Visual FoxPro отобразит в результирующей таблице записи о фирмах, имеющих представителей с фамилиями Николаев и Никифоров.



Выбор полей, не удовлетворяющих заданному условию


Флажок Not (He), расположенный на вкладке Filter (Фильтр) окна конструктора запросов, позволяет выбрать из таблицы записи, не удовлетворяющие заданному условию. Например, в предыдущем примере мы осуществляли выбор клиентов, проживающих в Москве. Если в дополнение к заданному условию выборки мы установим флажок Not (He), то в результирующей таблице получим список клиентов, не проживающих в Москве.

В данном примере выберем из таблицы Customer все записи, за исключением записей со значением Казахстан в поле cccuntry.

Откройте запрос, созданный в предыдущем примере.

Перейдите на вкладку Filter (Фильтр).

В столбце Field Name (Имя поля) выберите из раскрывающегося списка поле ccountry.

Щелкните мышью в поле Not (He), установив тем самым флажок.

В списке вариантов сравнения Criteria (Критерий) выберите значение

В текстовом поле столбца Example (Образец) введите Казахстан (рис. 9.10).

Для выполнения запроса нажмите кнопку Run (Выполнить). На экране появится результирующая таблица, которая содержит записи о клиентах, проживающих вне Казахстана.

Рис. 9.10. Задание условия для выбора полой, не удовлетворяющих определенному критерию



Выбор записей, находящихся в заданном диапазоне значений


Для выбора записей, лежащих в заданном диапазоне значений, используются операторы > (больше), < (меньше) и Between (Между) из списка Criteria (Критерий) вкладки Filter (Фильтр). Операторы > (больше) и < (меньше) используются в том случае, если задана только нижняя или верхняя граница диапазона, a Between (Между) — когда известны обе границы. Предположим, что вам потребовался список заказов, итоговая сумма которых превышает 10 000 рублей. В другом случае вам нужно получить сведения о клиентах, воспользовавшихся услугами вашей фирмы в определенный интервал времени. В обоих случаях необходимо выбрать из таблицы записи, попадающие в диапазон значений.

Создадим запрос, формирующий список заказов, итоговая сумма которых превышает 10 000 рублей. Для этого:

Откройте новое окно конструктора запросов.

Добавьте в него таблицу ordsaiem.

В списке Selected fields (Выбранные поля) вкладки Fields (Поля) разместите поля с номером заказа, датой и итоговой суммой по заказу.

Для задания условия отбора на вкладке Filter (Фильтр) выберите поле nSumdoc.

В списке Criteria (Критерий) выберите оператор >.

В текстовом поле столбца Example (Пример) введите 10000

Нажмите кнопку Run (Выполнить) на стандартной панели инструментов.

На экране появляется результирующая таблица, содержащая заказы, итоговая сумма по которым превышает 10 000 рублей.

В  этом примере мы задавали только нижнюю границу диапазона. Очевидно, чго для получения списка продаж за определенный интервал времени необходимо задать начальную и конечную даты. Воспользуемся запросом, созданным в предыдущем примере, и изменим в нем заданные на вкладке Filter (Фильтр) условия выбора записей. Для этого выполните следующие действия:

Откройте запрос, созданный в предыдущем примере.

На вкладке Filter (Фильтр) из списка Field Name (Имя поля) выберите поле dDoc, содержащее дату заказа.

В списке Criteria (Критерий) выберите значение Between (Между).

В поле Example (Образец) введите начальную и конечную даты интервала (рис. 9.12) в следующем виде:


CTOD("01.04.2003") AND CTOD("15.04.2003")

Нажмите кнопку Run (Выполнить) на стандартной панели инструментов.



Рис. 9.12. Выбор записей по диапазону значений поля дат

Просмотрите данные в появившейся на экране результирующей таблице. Она содержит информацию о всех продажах за указанный в запросе интервал времени.

Замечание

При задании условий для выбора записей по диапазону значений можно использовать не только числовые поля, но и текстовые. В этом случае при выполнении запроса Visual FoxPro сравнивает коды символьных величин. Например, условие выбора "Л, М", помещенное в поле Example (Образец) для поля ccompany, позволит выбрать из таблицы Customer список предприятий, названия которых начинаются на буквы Л и М.


Выборка из четырех таблиц


Рассмотрим пример выборки товаров, приобретенных клиентами. Для решения этой Задачи нам Потребуются таблицы Customer, Ordsalem, Ordsaled и Goods. Таблица customer содержит информацию о клиентах, таблица ordsalem - сведения о заказе на товары, таблица ordsaled - сведения о товарах, входящих в заказ (количество купленных товаров и цена товара), а таблица Goods — наименования всех товаров. При создании базы данных между этими таблицами уже были определены постоянные отношения.

Откройте новое окно конструктора запросов.

Добавьте в конструктор запросов таблицы Customer, Ordsalem, Ordsaled и Goods. Между этими таблицами в базе данных установлены постоянные отношения. После их перенесения в запрос в окне конструктора запросов отобразятся установленные между таблицами связи, а на вкладку Join (Объединение) добавятся три строки с условиями объединения таблиц (рис. 9.16).

В список Selected fields (Выбранные поля) вкладки Fields (Поля) перенесите фамилию клиента, номер заказа, наименование товара и количество заказанного им товара.

Нажмите кнопку Run (Выполнить), и на экране появится результирующая таблица (рис. 9.17), содержащая информацию о заказах всех клиентов.

Рис. 9.16. Вкладка Join окна запроса для выборки из четырех таблиц

Рис. 9.17. Результаты запроса для выборки из четырех таблиц



Вычисляемые поля запроса


Visual FoxPro позволяет не только включать в результирующую таблицу запроса информацию из исходных таблиц, но и производить вычисления над ними, предоставляя, таким образом, возможность получить данные, отсутствующие в исходной таблице. Например, из базы данных, предназначенной для учета междугородных разговоров, вы можете выбрать поля таблиц с продолжительностью разговора и стоимостью одной минуты. На основании этой информации можно получить в запросе сведения о стоимости разговоров.

Кроме того, вы можете использовать вычисляемые поля для объединения нескольких полей исходной таблицы в одно результирующее поле. Например, таблица customer содержит фамилию, имя и отчество клиента. В результирующий запрос вы можете поместить одно поле, в котором будет размещена фамилия и инициалы клиента.

Для формирования выражения предназначено поле Functions and expressions (Функции и выражения) вкладки Fields (Поля). Нажмите расположенную справа от поля кнопку вызова построителя выражения и в диалоговом окне Expression Builder (Построитель выражения) создайте выражение для вычисляемого поля. После того как выражение в поле Functions and expressions (Функции и выражения) сформировано, нажатием кнопки Add (Добавить) перенесите его в список Selected fields (Выбранные поля).

Замечание

В окне Expression Builder (Построитель выражения) при создании выражения вы можете использовать поля исходных таблиц, константы, функции. Используя круглые скобки, можно изменить порядок вычисления или сгруппировать данные.

Используя данные из таблицы customer, создадим запрос, результирующая таблица которого будет содержать название предприятия и полный адрес клиента с учетом города. Для этого выполните следующие действия:

Откройте окно запроса для таблицы customer.

На вкладке Fields (Поля) перенесите в список Selected fields (Выбранные поля) поле ccompany, содержащее наименование предприятия.

Для объединения города и адреса клиента нажмите кнопку вызова построителя выражения поля Functions and expressions (Функции и выражения) и в диалоговом окне Expression Builder (Построитель выражений) создайте следующее выражение:

ALLTRIM(cCity)+ ", " +ALLTRIM(cAddress)

Закройте окно построителя выражения, нажав кнопку ОК.

Для размещения созданного выражения в списке Selected fields (Выбранные поля) нажмите кнопку Add (Добавить).

Рис. 9.4. Определение вычисляемого поля

Рис. 9.5. Результат выборки

На этом формирование запроса завершено (рис. 9.4). Нажмите кнопку Run (Выполнить) на стандартной панели инструментов, и на экране появится результирующая таблица (рис. У.5).



Задание условий для выбора записей


Во всех рассмотренных ранее примерах в запрос включались все или часть полей исходной таблицы, упорядоченных соответствующим образом. В большинстве случаев требуется получить отдельные записи исходной таблицы, удовлетворяющие определенным условиям.

Для формирования условий выбора определенных записей предназначена вкладка Filter (Фильтр) конструктора запросов.



Задание условия точного совпадения значений одного поля


На практике часто требуется выбрать из таблицы запись или группу записей, одно из полей которых содержит заданную величину. Например, вам требуется список всех клиентов, живущих в Москве. В этом случае необходимо на вкладке Filter (Фильтр) ввести требуемые значения в соответствующих полях, создав тем самым шаблон, с которым, прежде чем помешать записи в результирующую таблицу, Visual FoxPro будет сравнивать все записи исходной таблицы.

В этом примере выберем данные о клиентах из Москвы. Для этого:

Откройте окно конструктора запросов.

Поместите в него таблицу customer.

На вкладке Fields (Поля) перенесите в список Selected fields (Выбранные поля) наименование предприятия.

Перейдите на вкладку Filter (Фильтр) конструктора запросов.

В столбце Field Name (Имя поля) нажмите кнопку раскрытия списка и из всех полей исходной таблицы выберите cCity..

В списке Criteria (Критерии) выберите значение ==.

В поле Example (Образец) введите Москва (рис. 9.9).

Для выполнения запроса нажмите кнопку Run (Выполнить). На экране появится результирующая таблица, которая содержит записи о клиентах, чьи фирмы расположены в Москве.

Рис. 9.9. Задание условия точного совпадения значения одного поля



Запросы к базе данных


Одним из основных назначений разработанного приложения является быстрый поиск информации в базе данных и получение ответов на разнообразные вопросы. Для этих целей в Visual FoxPro используются средства, называемые запросами.

Например, вам необходимо выбрать из таблиц информацию о клиентах, проживающих в Москве и Московской области, или сформировать список клиентов, купивших в последний месяц товаров на сумму свыше 5 000 рублей, и упорядочить их в алфавитном порядке по полю, содержащему фамилии клиентов. Для решения таких задач предназначен конструктор запросов и команда select языка Visual FoxPro.

Рис. 9.1. Ввод условия выборки в мастере запросов

С помошыо констр\ктора запросов Visual FoxPro вы можете формировать различной сложности критерии для выбора записей из одной пли нескольких таблиц, указывая при этом, какие поля лолжны быть отображены в запросе. Нал полями, выбираемыми из таблиц с помощью запросов, можно выполнять различные вычисления.

Результатом запроса является таблица, которую вы можете сохранить в массиве, в создаваемой новой таблице, отобразить на экране в режиме Browse (Просмотр) или вывести в виде отчета.

Для создания запросов вы можете использовать мастер запросов, который последовательно запрашивает наименования таблиц, используемых в запросе, перечень полей таблиц, критерий упорядочения и условия фильтрации данных. На рис. 9.1 приведено диалоювое окно мастера, позволяющее сформировать условия фильтрации выбираемых из таблицы данных. Мы не будем рассматривать создание запросов с помошыо мастера, так как конструктор запросов достаточно прост и работа в нем у вас не вызовет затруднений.



Запуск запроса на выполнение


После задания условий для выбора записей и указания результирующих полей в окне конструктора вы можете просмотреть результаты выполнения запроса. Для этою выполните одно из следующих действий:

нажмите кнопку Run (Выполнить) на стандартной панели инструментов;

выберите команду контекстного меню Run Query (Выполнить запрос);

выберите в меню Query (Запрос) команду Run Query (Выполнить запрос);

нажмите комбинацию клавиш <Orl>+<Q>.

На экране появятся результаты запроса, представленные в табличном виде.

Для-просмотра результатов запроса, не открытого в окне конструктора запросов, необходимо в окне проекта установить курсор на имя запроса и нажать кнопку Run (Выполнить).