Рекомендации Crystal Reports - PullRequest
0 голосов
/ 07 апреля 2009

У меня нет большого опыта в управлении отчетами, но я работаю над приложением, которое работает так:

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

В этих отчетах есть несколько общих параметров - это диапазоны или сортировка, поэтому пользователь может получить отчет обо всех виджетах с номерами от 200 до 4000, сгруппированных по Foo.

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

Это материально-техническая проблема, потому что нет отличного способа отследить, какие отчеты были развернуты на каких системах (просто потому, что они присутствуют, это не значит, что они обновляются, всего 4 системы, которые в идеале должны совпадать) и возможны несколько точек отказа:

1) Параметры в sproc не совпадают с параметрами в файле .rpt 2) Параметры в таблице отчетов не совпадают с параметрами в .rpt или sproc 3) Sproc обновляется, а файл .rpt не по какой-либо причине 4) Что происходит, когда новому отчету требуется параметр, который не был закодирован на странице параметров?

Все сводится к тому, что система недостаточно динамична. Как я уже сказал, я не знаю об отчетности, но у меня такое чувство, что парень, который делает отчеты, тоже не знает. Похоже, что должен быть лучший способ синхронизировать файлы sproc и .rpt и динамически запрашивать необходимые параметры через что-то вроде Reflection.

Как это обычно обрабатывается?

Ответы [ 2 ]

1 голос
/ 13 апреля 2009

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

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

0 голосов
/ 07 апреля 2009

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

Это делается в C ++ / MFC с использованием серийной сериализации MFC; Я уверен, что, как вы говорите, с отражением и сериализацией XML в среде C # / .NET было бы возможно даже более изящное решение.

...