<< На Главную     <В меню Советы по MapInfo

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© Simashkov.2011

19.02.2011 г.

Назад