Нехитрые советы для пользователей ПК

Не все пользователи ГИС MapInfo знают, что в комплект поставки этой программы входит генератор отчётов Crystal Reports. Возможности его настолько широки, что с ним  можно создавать отчёты практически любой сложности. Конечно, для распечатки вашего списка можно воспользоваться созданием макета (Layouts), поместив на него фрейм с вашей таблицей. Но это спасёт лишь в простейшем случае. Настоящие возможности по созданию сложных отчётов открываются лишь при использовании Crystal Reports.

Строго говоря, можно подбить какие-то результаты, используя инструмент SQL-запросов, создав новую таблицу для Отчета. Но, опять-таки, гораздо проще переложить эту работу на Crystal Reports.

В качестве учебного примера возьмём карту сельхозугодий на административный район со следующей структурой:

screen1-1993590

На рисунке выше приведена структура «учебной» карты со следующими полями: FARM_ID — код хозяйства, FARM_NAME — наименование хозяйства, FLP_ID — код участка, Area — его площадь.

Для построения простейшего отчёта идём в меню Программы>Crystal Reports>Новый отчёт и видим следующий макет отчёта:

screen2-7351472

Как видим, в секцию отчёта Details помещены поля из нашей учебной таблицы, а в «шапку» отчёта(секция Page Header) — наименования полей. Настройка вида полей (выравнивание, длина, фонт, округление числовых величин и т.д.)  доступны по правой кнопке из контекстного меню Format Fields:

screen3-2876237

Здесь размещены основные опции отображения поля:

Suppress — подавление(скрытие) поля, Horizontal Aligment — горизонтальное выравнивание поля, Keep Object Together — если эта опция будет сброшена, то не поместившуюся часть поля будет перенесена на сл. строку, Close Border ob Page Break— исключает разрыв поля при переходе на сл. страницу отчёта

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

screen4-7373591

Назначение опций: Suppress if Zero — не показывать поле при нулевом значении, Deсimal Separator — знак разделителя целой и дробной части, Thousands Separator — разделение разрядов тысяч, Leading Zero — печать/не печать ведущих нулей

Жмём на кнопку предварительного просмотра отчёта и видим следующий результат:

screen5-9568827

Таак … Простейший отчёт создали. Теперь немного усложним задачу- пусть необходимо, скажем, подавить контура с площадью менее 10 гектар. Для выполнения этой задачи идём на вкладку Design, становимся на секцию отчёта Details и по правой кнопке выбираем контекстное меню Format и жмём на пимпочку аккурат напротив Suppress:

В появившемся редакторе выражений набираем следующую формулу:

screen10-9336429

Теперь наш отчёт будет выглядеть так:

screen11-6907302

Как видим, контура с площадью менее 10 гектар в отчёт не вошли.

Усложним задачу дальше. Допустим, у шефа возникло желание выделить контура с площадью более 50 гектар красным цветом. Нет проблем! Становимся на поле отчёта Area, жмём на правую кнопку и выбираем в контекстном меню пункт Border and Colors:

screen27-6242521

Жмём на кнопку напротив Background  и в редакторе формул набираем следующее выражение:

screen28-1124832

Получаем отчёт в следующем виде:

screen14-5566978

Вышло немного совсем не то, что надо … Ничего, щас подавим чёрные поля. Опять идём в редактор формул и слегка подправляем наше выражение:

screen15-3636827

и получаем результат:

Вот теперь всё правильно. Значения площади более 50 гектар подкрашены красным цветом.

Идём дальше. Теперь хотелось бы сгруппировать наши записи в отчёте по хозяйствам. Для этого в  отчёт необходимо добавить группировку по коду хозяйства (поле FARM_ID). Идём в меню Insert>Group:

screen17-2096070

Немного ретушируем отчёт и теперь он может выглядеть так (c учётом включенной группировки):

screen18-3471713

Далее хотелось бы подбивать сумму площадей контуров в разрезе хозяйств. Для этого идём Insert>Summary и вставляем в отчёт указанный промежуточный итог:

screen26-6577106

Так же хотелось бы избежать повторений названия хозяйств в отчёте ( ну так, чтобы вместо повторяющихся названий были прочерки). Здесь нам придётся создать формулу. Для этого опять идём в меню Insert>Field Object, выбираем в появившейся форме пункт Formula Fields:

screen19-5382545

Далее жмём на правую кнопку и создаём новую формулу с именем NoReply со следующим выражением и вставляем её в отчет взамен поля FARM_NAME(Название хозяйства):

screen20-8153738

Здесь функция Previous возвращает значение поля в предыдущей записи.

После всех этих манипуляций конструктор нашего отчёта может выглядеть так:

screen25-3441627

А отчёт в окончательном виде так:

screen23-2349666

Здесь в конце отчёта мы вставили конечный результат по сумме площадей всех участков. Делается это так: меню Insert>Grand Total:

screen29-2882310

… и вcтавляем  это поле в секцию отчёта Report Footer.

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

Кстати, если вы будете в дальнейшем писать программы с использованием MS Visual Studio 2008/2010 (платформа .NET), вам пригодиться знание Crystal Reports. Этот генератор отчётов в этой инструментальной среде является штатным. Да и в ArcGIS’ е этот генератор тоже используется. Так что, изучив Crystal Reports, в любом случае не проиграете …

Еще об использовании Crystal Reports  для создания отчетов можно посмотреть на нашем сайте в этой статье

© Simashkov.2011

19.02.2011 г.

Назад