Создание отчетов

Наше приложение, можно сказать, почти готово, но не кажется ли тебе, что в нем явно чего-то не хватает? Правильно, пока у нас нет возможности получить распечатку! Я думаю, излишне говорить, для чего они нужны… Реальность такова, что со времен Древнего Египта люди (чуть не сказал пользователи), предпочитают хранить информацию на надежном, проверенном веками носителе — бумаге.

Их стремление к этому можно понять — жизнь полна сюрпризов, и кто знает, вдруг ты сойдешь с ума, изучая программирование по этой книге, или в твой компьютер влетит шаровая молния… Как в таком случае потомки узнают о наших с тобой подвигах на ниве программирования? Конечно, все это шутка, но в ней есть доля правды — делопроизводство еще не отменили и отчеты находят широчайшее применение в нашей деловой и повседневной жизни.

В Visual FoxPro имеются довольно мощные средства для создания разных отчетов — от мастера отчетов Report Wizard до конструктора отчетов Report Designer.

Создать сложный отчет при помощи мастера отчетов вряд ли удастся и, хотя отчет, который мы будем делать для нашей программы, никак нельзя отнести к “сложным”, все равно изучение этой темы мы начнем со знакомства с конструктором отчетов Report Designer.

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

Открыть окно конструктора отчетов можно различными способами:
– выбрать в пункте File (Файл) системного меню команду New (Новый) и в открывшемся диалоговом окне New (Новый) нажать кнопку New File (Новый файл), предварительно указав опцию Report (Отчет);
– нажать кнопку New (Новый) на стандартной панели инструментов. Дальнейшие действия как в предыдущем пункте;
– нажать кнопку New (Новый) в окне Project Manager (Диспетчер проекта), отметив пункт Reports (Отчеты) на вкладке Documents (Документы).

После этого откроется диалоговое окно New Report (Новый отчет).
Выберем кнопку New Report (Новый отчет), a Report Wizard оставим “на десерт”. Появится окно конструктора отчетов Report Designer.

Для работы могут быть использованы следующие панели инструментов:
• Report Controls (Элементы управления отчетом);
• Color Palette (Палитра);
• Layout (Расположение).

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

“Главной” панелью, конечно, является панель Report Controls — именно с ее помощью мы будем размещать в отчете те или иные объекты. На панели имеется восемь кнопок, рассмотрим их назначение.

Кнопки панели Report Controls

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

Итак, приступим. Для отчета, как и для экранной формы, необходимо определить среду данных. Для этого можно воспользоваться пунктом контекстного меню, вызываемого нажатием правой кнопки мыши, или воспользоваться командой Data Environment (Среда данных) из пункта View (Вид) системного меню. Откроется уже знакомое диалоговое окно Data Environment. Все действия по добавлению в среду окружения отчета таблиц или видов полностью аналогичны тем, которые мы выполняли для создания среды данных для экранной формы.

Размещение в отчете элементов управления

Начнем с размещения простого текста. Для этого на панели инструментов Report Controls (Элементы управления отчетом) выберем кнопку Label (Текст) и, указав предполагаемое место расположения объекта, нажмем левую кнопку мыши. Все, объект вставлен в отчет, и теперь можно набрать текст с клавиатуры.

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

Мы разместили текст в отчете

Теперь мы можем изменить размер шрифта, сам шрифт и цвет объекта. Для этого выберем его, щелкнув мышью, и воспользуемся пунктом Font (Шрифт) из меню Format (Формат).

Но здесь нужно учесть следующее обстоятельство: не рекомендуется ставить экзотические” шрифты — на машине пользователя их может не оказаться, и в результате вместо красивого отчета может получиться набор непонятных закорючек”. Лучше ограничиться стандартным “джентльменским” набором Шрифтов — Times New Roman, Courier, Arial — они установлены практически у всех.

А вот при двойном щелчке на тексте открывается диалоговое окно Text (Текст).

В данном окне можно разместить комментарии для объекта и задать условия печати (кнопка Print When), а группа переключателей Object position| (Позиция объекта) позволяет определить расположение объектов:
• Float — при изменении размеров или положения соседних объектов положение данного объекта также изменится;
• Fix relative to top of band — объект “прикрепляется” к верхней границе полосы;
• Fix relative to bottom of band — объект “прикрепляется” к нижней границе полосы.

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

Теперь будем размещать объекты в полосе Detail (Детали). Именно здесь нам необходимо разместить поля из нашей таблицы (ты не забыл добавить ее в среду данных?). Поля можно просто перетаскивать в любую полосу из среды данных, а можно опять же воспользоваться панелью инструментов Report Designer.

Выберем кнопку Field (Поле) и щелкнем мышью в полосе Detail (Детали).

Диалоговое окно Report Expression

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

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

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

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

Смело потому, что мы в принципе не могли ошибиться, ведь выражение как таковое отсутствует, мы просто занесли сюда имя поля, здесь и проверять нечего. А вот при формировании какого-нибудь сложного выражения будет весьма полезно сначала нажать кнопку Verify (Проверка). Если в выражение что-то неверно, будет выведено сообщение об ошибке.

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

Чтобы определить, при выполнении каких условий данные будут выведен» на печать, используется диалоговое окно Print When.

Диалоговое окно Print When

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

Область Also print (А также печатать) содержит следующие флажки:
• In first whole band of new page/column — печать на первой полосе следующей страницы или колонки;
• When this group changes — поле будет печататься при изменении указанной группы. Группа указывается в раскрывающемся списке;
• When detail overflows to new page/column — печать при переходе полосы Detail (Детали) на новую страницу/колонку.
При установке флажка Remove line if blank из отчета будут удалены пустые строки.

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

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

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

•эким образом, научившись размещать в отчете некоторые объекты.

Поля таблицы добавлены в отчет

Любое поле можно редактировать с помощью диалогового окна Report Expression, дважды щелкнув мышью на этом поле.

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

Для размещения в отчете таких объектов, как линии и контуры, также используется панель инструментов Report Controls (Элементы управления отчета).

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

В случае размещения в форме объектов в виде прямоугольников действия аналогичные: указав начальную точку, “рисуем” контур.

Заголовок отчета и итоговые значения

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

Диалоговое окно Title/Summary

Появится диалоговое окно Title/Summary, в котором для размещения в отчете полосы заголовка Title отметим флажок Title band, а для размещения полосы итоговых значений, соответственно, Summary band.
Зададим для нашего отчета заголовок и разместим в нем объект в виде прямоугольного контура.

Полоса Title

Используя команду Fill (Заливка) из меню Format (Формат), мы можем выбрать стиль заполнения объекта. Но при этом может получиться, что наш текст или другие объекты будут скрыты за контуром. Исправить это “безобразие” можно, воспользовавшись командой Send To Back (Поместить на задний план) все того же меню Format.

За атрибуты контуров и линий отвечают параметры, определяемые при вызове меню Реп (Перо).

Параметры атрибутов контуров и линий

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

Итоговые значения мы разместим в полосе Summary, хотя для этого можно использовать любую полосу отчета. Воспользовавшись командами копирования (Сору) и вставки (Paste), скопируем в буфер обмена любое поле из области Detail и вставим его в полосу Summary. Дважды щелкнув мышью на вставленном объекте, откроем уже знакомое диалоговое окно Report Expression и нажмем кнопку Calculations (Вычисления), после чего появится диалоговое окно Calculate Field (Вычисляемое поле).

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

  • Nothing (Ничего) – Никакие вычисления не производятся
  • Count (Количество) – Вычисляется количество обращений Visual FoxPro к данному объекту при формировании отчета 1
  • Sum (Сумма) – Сумма значений элемента
  • Averange (Среднее значение) – Среднее значение
  • Lowest (Минимальное значение) – Минимальное значение из всех
  • Highest (Максимальное значение) – Максимальное значение из всех
  • Standard deviation (Стандартное отклонение) – Страшно даже сказать: это “квадратный корень из дисперсии значений”
  • Variance (Дисперсия) – Статистическая величина отклонений значений от среднего значения

Для подсчета количества уравнений установим опцию Count (Количество).
Раскрывающийся список Reset (Сброс) позволяет определить, когда произойдет обнуление итоговых значений:
• End of Report (Конец отчета) — именно ее и выберем;
• End of Page (Конец страницы).

Изменение цвета объектов в отчете

Для изменения цвета объекта можно использовать уже встречавшуюся нам панель инструментов Color Palette (Палитра цветов).

Действия здесь точно такие же, как при “раскраске” объектов экранной формы, поэтому мы не будем подробно останавливаться на этом пункте. Да и вообще, прежде чем этим заниматься, неплохо бы поинтересоваться: а есть ли у заказчика цветной принтер?

Размещение в отчете изображений

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

Источник данных указывается в области Picture from (Откуда картинка? Из Файла, вестимо…).

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

Диалоговое окно Report Picture

Параметры, устанавливаемые в разделе If picture and frame are different sizes (Если картинка и рамка имеют различные размеры) имеют следующие значения:

• Clip picture (Обрезать изображение) — рисунок сохраняет первоначальные размеры;
• Scale picture, retain shape (Изменить масштаб, сохраняя форму) — рисунок заполнит всю рамку, сохраняя свои пропорции;
• Scale picture, fit the frame (Изменить масштаб, сохраняя рамку) — рисунок заполнит всю рамку, но при этом может быть искажен.

Просмотр отчета

Для просмотра отчета используется команда Preview (Просмотр) из контекстного меню или одноименная кнопка на стандартной панели инструментов. При выборе данной команды отчет открывается для предварительного просмотра.

Готовый отчет в окне конструктора отчетов

Когда отчет открывается в режиме просмотра, на экране автоматически появляется еще одна панель Print Preview (Предварительный просмотр отчета).

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

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

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

• Команда Print (Печать) из системного меню File (Файл). П Команда Print (Печать) из контекстного меню.
• Команда Run Report (Запуск отчета) из меню Report (Отчет).
• Кнопка Print One Copy (Печать одной копии) на стандартной панели инструментов.
• Комбинация клавиш <Ctrl>+<P>.

Диалоговое окно Print

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

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

Расположенный в верхней части диалогового окна раскрывающийся список Name (Имя) содержит имена всех доступных принтеров.

Установка переключателя в области Print range (Область печати) в положение All (Все) приведет к тому, что будут распечатаны все страницы отчета, Я вот выбор Pages (Страницы) позволяет задать номера печатаемых страниц-from (от), to (до).

Используя счетчик Number of copies (Количество копий), можно задать количество печатаемых экземпляров.

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

Впрочем, принтер можно настроить и заранее, используя Панель управления Windows.

Кнопка Options (Параметры) из окна Print позволяет выполнить дополнительную настройку принтера.

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

Флажки имеют следующее назначение:

• Line numbers (Номера строк) — используется для печати в отчете нумерации строк. Доступен при печати содержимого командного окна или файла;

Диалоговое окно Print Options

• Page eject before (Прогон страницы перед печатью) — перед печатью отчета дает принтеру команду перехода на новую страницу;
• Page eject after (Прогон страницы после печати) — осуществляет перенос на новую страницу после окончания печати;
• Restore environment (Восстановить среду данных) — эта “фишка” используется для совместимости со старыми версиями FoxPro.

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

• Scope (Диапазон значений) — в этом списке выбирается диапазон печатаемых записей;
• For (Для) — запускается построитель выражений, в котором можно задать логическое выражение. При этом будут печататься только те записи, для которых значение этого выражение будет равным .Т. (Истина);
• While (Пока) — все, как в предыдущем пункте, но в отличие от него печать отчета будет прекращена как только встретится первая запись, ДЛЯ которой значение этого выражения будет равным .F. (Ложь).

с использованием мастера Report Wizard

Для запуска Report Wizard (Мастер отчетов) также имеется несколько способов — все они аналогичны тем, которые мы использовали при запуске Form Wizard (Мастер экранных форм).

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

В этом окне опять, как и при использовании мастера форм, предлагается сделать выбор мастера:

• One-to-Many Report Wizard — этот мастер создает отчет для связанных таблиц;
• Report Wizard — простой отчет для одной таблицы.

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

На втором шаге работы мастера можно задать поля, по которым будет производиться группировка данных в отчете. Поддерживается от одной до трех групп данных. Параметры группировки задаются так: в раскрывающемся списке указываем имя поля, а затем, нажимая кнопку Grouping options (Параметры группировки), задаем интервал группировки в диалоговом окне Grouping Intervals.

В раскрывающемся списке Grouping intervals (Интервал группировки) можно выбрать следующие значения:

• Entire Field — полностью значение поля;
• 1st Letter — по первой букве;
• 2, 3, 4, 5 Initial Letters — по первым двум, трем и т.д. буквам.

Кнопка Summary Options (Итоговые значения) вызывает диалоговое окно Summary Options, в котором можно сформировать итоговые значения ДЛЯ каждого поля.

В расположенной в этом окне таблице выбираем имя поля и ставим “птичку” в нужном столбце.

Значения столбцов:

• Field — имя поля;
• Sum — сумма значений;
• Avg — среднее значение;
• Count — число строк;
• Min — минимальное значение;
• Мах — максимальное значение.

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

На третьем шаге выбирается стиль отчета.

Шаг четвертый — указывается положение страницы:
• Portrait — книжное расположение страницы на экране;
• Landscape — альбомное расположение страницы.

Также здесь указывается порядок размещения полей с помощью группы переключателей Field Layout (Расположение поля).

Шестой и последний шаг мастера отчетов аналогичен такому же шагу мастера экранных форм.

Откроем предварительный просмотр, нажав кнопку Preview (Просмотр).

Отчет, созданный мастером отчетов

Ну и что получилось? Применительно к нашей задаче — ничего хорошего но зато мы познакомились с работой мастера отчетов, использование которого в других приложениях может стать более чем оправданным. Мы еще вернемся к этому инструменту при работе с базой данных.

Использование дополнительных инструментов для создания отчетов, так же как AutoReport Wizard и Quik Report, также будет изучено при создании нашего следующего приложения.

Вызов отчета из формы

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

Откроем окно конструктора форм и определим действия, происходящие при наступлении события click для кнопки Печать.

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

1
REPORT FORM (Путь) Имя_Отчета ТО PRINTER

Но при этом вывод информации может происходить как на принтер, так и в окно экранной формы. Чтобы запретить вывод на экран, следует в данной команде указать параметр NOCONSOLE:

1
REPORT FORM C:\EXAMPLES\REPORTl ТО PRINTER NOCONSOLE

Для открытия окна предварительного просмотра можно применить такую конструкцию:

1
REPORT FORM C:\EXAMPLES\REPORTl PREVIEW

А еще можно поместить наш отчет в текстовом файле:

1
REPORT FORM C:\EXAMPLES\REPORTl ТО FILE TXT1.TXT ASCII

Но при этом все графические элементы отчета будут проигнорированы.

Преимуществом является то, что отчет в виде файла можно просматривать в любом текстовом редакторе, например, используя даже встроенный редактор текста в Norton Comander или Блокнот Windows.

Просмотр отчета в виде текстового файла в Блокноте

А вот результат работы нашей кнопки Печать, в которой использована команда

1
REPORT FORM C:\EXAMPLES\REPORTI PREVIEW

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

о конструкции REPORT FORM… можно также задать условия для выборки записей. Например, для того чтобы просмотреть или распечатать только те Уравнения, которые имеют два корня, достаточно ввести следующую команду:

1
REPORT FORM REPORTI PREVIEW FOR D>O

Режим просмотра включается из нашей формы

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100