C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Создание отчетов, Создание отчетов
Zoth
Отправлено: 16.09.2005, 10:45


Не зарегистрирован







Вопрос чисто теоретически. Есть некий проект. Прога работает с БД.
Разумеется нужен набор отчетов. Практически у всех отчетов есть входящие параметры. Например, даты, сотрудники и т.д.
Теоретически набор входных параметров у всех разный. Конечно есть отчеты с одинаковыми входными параметрами. Все отчеты реализуются на основе хранимых процедур, которые выдают уже готовый датасет.

Теперь собственно сам вопрос. Как лучше реализовать вызов этих отчетов и занесение параметров. Если нет параметров, то я просто его формирую и выкидываю либо на печать либо экспортирую куда мне надо. А вот когда надо вводить параметры пользователю, тут думать приходится.. Делать отдельную форму для каждого отчета не гут. Делать какуюто универсальную форму... но это геморойно, и потом при добавлении отчетов как это реализовывать я не представляю. Тоесть представляю, но както смутно smile.gif. Подскажите, кто чем пользуется.

Может можно эти формы рисовать внутри самого отчета. Например ФастРепорт такое, вроде, позволяет, но там не удобно в том плане что нету компонентов типа DateEdit от Rx и т.д. Да и писать там свои оброботчики на встроенном Паскале тоже не хочется.

Ах да... Надо чтобы была возможность не просто вводить эти параметры (например код клиента) но и выбор из списка... тоесть подцепится к БД и получить его.

Подскажите, кто как это делал(делает);
AVC
Отправлено: 16.09.2005, 12:52


Ветеран

Группа: Модератор
Сообщений: 1583



Отчеты делаются не абстрактно а при помощи какого-то средства.

У Fastreport'а можно диалоги создать прямо в отчете. (Еще и за это я его сильно уважаю, так как можно делать самодостаточные отчеты и НЕ на этапе проектирования приложения)

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

Некоторые отчеты это просто "твердая копия" текущего состояния приложения — там ни чего спрашивать не надо, все и так уже известно (например наклядная для операции продажи, которую сейчас просматривает пользователь)
Zoth
Отправлено: 16.09.2005, 13:05


Ученик-кочегар

Группа: Участник
Сообщений: 14



QUOTE (AVC @ 16/09/2005, 12:52)
Универсальная формочка — опрашиватель так же имеет место быть. Да, она должна быть хорошо проработана, но это окупается сторицей.


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

Таблица 2
1. Параметр отчета
2. Тип параметра
3. Название полей для формы

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

может видел где подобную реализацию... может сталкивался с подводными камнями....
Doga
Отправлено: 16.09.2005, 17:52


Мастер участка

Группа: Участник
Сообщений: 575



Мне кажется Word тож хорошо подходит для создания отчетов. Все возможности для этого у него есть. Уже 3 года им пользуюсь — проблем нет.
** Admin
Отправлено: 16.09.2005, 20:04


Не зарегистрирован







QUOTE
Есть такая идея.. написать примерно сл. компонент.. ну может и не компонент, там видно будет.... смысл такой
В бд храню ...


Почему бы и нет, очень удобно.

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

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

Получилась достаточно универсальная программа (и база)
позволяющая динамически добавлять в нее новые типы приборов.
НЕ ПЕРЕКОМПИЛИРУЯ ВЕСЬ ПРОЕКТ.

1 создавая новую таблицу для нового прибора
2 создав лишь необходимую для данного прибора dll
и прописав ее имя/путь в таблице,
3 прописав название формы отчета для данного прибора


Вернуться в Вопросы программирования в C++Builder