Russian Qt Forum
Апрель 19, 2024, 21:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Генерация отчётов средствами Qt  (Прочитано 40998 раз)
Cyrax
Гость
« : Август 17, 2006, 23:56 »

Мне необходимо написать большое клиентское приложение с возможностью генерации новых отчётов в runtim'е. Нужно выбрать инструментарий из [C++ Qt] и [C# .NET]. Сам я сторонник Qt, хотя явных (крупных) преимуществ... [Сравнению C++, Qt и C# скоро быдет посвящена отдельная тема.] Всё бы хорошо, но есть одно НО: у Qt нет развитых средств для генерации отчётов. :cry:

По генерации отчётов средствами Qt в инете информации очень мало. В основном, предлагают использовать внешние генераторы отчётов. Но мне необходимо, чтобы генератор работал вместе с Qt и под Win'ду, и под Linux (и др.), т.е. был таким же кроссплатформенным. Но таких нет! (буду рад, если ошибаюсь...)

Вот одно из сообщений, которое я нашёл:
Цитировать

Посмотри http://hardclub.donntu.edu.ua/projects/qt/pages/index.htm
FastRepot'а в QT нет, но возможность формирования отчетов есть, не
делал, но читал. По ссылке ты найдешь книгу на русском, там указано
более внятно, чем я смогу объяснить. Печать и генерация отчетов в QT
почти одна и та же тема.

Здесь ссылаются на книгу по Qt, где рассматривают средства печати отчётов в Qt. Довольно интересный материал, но тем не менее: если других средств нет, то получается, что фактически придётся самому писать генератор. В первую очередь это касается некоторой оболочки типа FastReport'а, которая позволит визуально "лепить" форму (шаблон) отчёта (обязательное требование - в runtime'е).

Что касается C#, то там много всяких генераторов, наиболее развитые и эффективные - FastReport Studio, Report Sharp-Shooter и StimulaReport .NET. Хоть они и платные, но всё же можно найти кряки.

Получается, что в отношении генерации runtime-отчётов у C# есть явное преимущество (буду рад, если меня переубедят...).

Так вот, хотелось бы иметь объективную картину по этому вопросу, узнать мнение специалистов. Что препятствует разработке Qt-генератора отчётов?

Может быть, в последних 4-х версиях что-то появилось?
И вообще интересно, что по этому поводу считает сама Trolltech, ведь этот вопрос возник давно.

Помню, на каких-то форумах люди рассуждали о деталях разработки генератора отчёта под Qt - похоже, собирались его написать. Так вот, может быть сейчас уже что-то есть, что можно использовать?

Даже в худшем случае, если ничего и нет, неплохо было бы услышать убедительные доводы в пользу Qt (против C#), несмотря на отсутствие развитых средств генерации runtime-отчётов...
Записан
Hordi
Гость
« Ответ #1 : Август 18, 2006, 09:23 »

Что-то не пойму я... Qt - это GUI библиотека, ну может чуть больше.  С# - это язык, ну тоже чуть больше. При чем здесь отчеты? Вы от MFC тоже отчетов требуете?
    Проблема в том, на каком языке написаны генераторы отчетов, т.к. от этого зависит интеграция в программный продукт, также имеет значение, предусматривалась ли возможность в генераторе интерграция в произвольные программные продукты.
    На данный момент можно ОДНОЗНАЧНО сказать - под Линукс развитых (типа FastReport) генераторов отчетов НЕТ! Есть всякие jasper'ы и т.п., с которыми можно делать, в общем-то многое, и все как бы и хорошо, но это если человек никогда ранее не работал на виндовых тулзах.
    Делаем вывод: если у тебя программа серьезно ориентирована именно на отчеты, то не парь себе мозги, если отчеты - это просто показ в табличном виде данных + шапки-сноски, то под Линукс этих тулзовин достаточно, и из Qt их заюзать очень даже можно.

Собственно, мое ИМХО...
Записан
SLK
Гость
« Ответ #2 : Август 18, 2006, 22:04 »

есть неплохие генераторы, которых вполне достаточно для простеньких отчётов  ....  http://sourceforge.net/projects/ncreport ,  http://www.openrpt.org

сам сейчас использую ncreport.
до ncreport пользовал только QTextDocument::print для отчётов ..... правда пришлось подредактировать в исходниках QT функцию print, чтоб уменьшить отступы по краям, а то 2 см больно много по дефолту.

А так, хорошо развитых генераторов типа FastReport Studio и иже с ним, чтоб под windows\linux да под QT4 были ..... действительно нету пока.  
Зато есть над чем работать Улыбающийся
Записан
Cyrax
Гость
« Ответ #3 : Август 19, 2006, 00:59 »

:? Что Qt - прежде всего GUI библиотека, это конечно так. Что "чуть больше" - тоже верно. И возможно (и даже скорее всего) требовать от неё генератора отчётов как составную часть библиотеки будет излишним. Достаточно QtDesiner'а как необходимого средства для визуального построения интерфейса.
Что касается MFC, то в отличие от Qt это чистая GUI-библиотека, не содержащая "чего-то большего", даже визуального построителя интерфейса. Она не претендует ни на что, кроме графической библиотеки. Поэтому, от MFC требовать генератора отчётов, естественно, глупо. Есть, конечно, расширения библиотеки MFC, вплоть до визуального построителя диаграмм и таблиц (может быть и генератора отчётов - не уточнял), но всё это - результат работы сторонних фирм и не имеет непосредственного отношения к Microsoft'овской MFC.

Теперь вернёмся к Qt. Qt - это не просто графическая библиотека. Это кроссплатформенная графическая библиотека. И даже не только графическая, а кроссплатформенная библиотека, ориентированная на разработку приложений различной сложности (сочетание "любой сложности" будет звучать неоправданно громко) (конечно, о комбайнах типа C++ Builder'а речь не идёт). Поэтому, с одной стороны, для разработки полноценных программ дополнительные требования к библиотеке предъявляет реальная кроссплатформенность (в отличие от ложной в случае с .NET), с другой стороны - ориентация на широкий спектр приложений. В результате мы имеем средства для работы с: базами данных, таймером, потоками, XML, принтером, звуком. Даже контейнеры, входящие в STL, были переписаны в Qt. Тем, кто сомневается,предлагаю ответить на вопрос "Зачем графической библиотеке нужно работать с сетью?" Здесь я имею ввиду естественную необходимость, а не причины искусственного характера.
Таким образом, Qt уверенно выходит за рамки простой GUI-библиотеки.
Следовательно, предположение о возможности существования генератора отчётов в составе Qt не бессмысленно...

Наиболее вероятными решениями (по крайней мере, на данный момент) задачи генерации отчётов в Qt являются:
1. Разработка генератора отчётов исключительно средствами Qt. Это может сделать кто угодно, только займёт это много времени.
2. Разработка сторонними компаниями совместимого с Qt генератора отчётов, написанного тоже на С++, такого же кроссплатформенного. Здесь можно привести пример генератора отчётов StimulaReport .NET для C#, полностью с ним совместимого, также под платформу .NET.

Все вышеизложенные рассуждения выражают моё личное мнение. Многие могут со мной не согласиться. Крутой

Теперь конкретно по теме.
Что имелось ввиду под словами "не парь себе мозги"? Насчёт самостоятельной разработки небольшого генератора под Qt (средствами Qt)? Или на счёт того, стобы остановиться на С#?

Отчёты в моей программе довольно простые (без группировки и без графики). Главное требование - генерация новых шаблонов (форм) в runtim'е. Так вот, основной вопрос заключается в том, есть ли какие-нибудь средства генерации отчётов (runtime-отчётов!), которые не свели бы на нет все преимущества кроссплатформенности библиотеки Qt.   Крутой Крутой Крутой
_____________________________________________
Всё вышеизложенное относится к сообщению Hordi.
SLK, спасибо за ссылки, но пока твоё сообщение не переварил - спать охота... Улыбающийся
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Август 19, 2006, 01:58 »

все таки хотелось бы сказать

кроссплатформенных отчетов нет, пока нет, может в QT5 появится Улыбающийся

в винде я с переменным успехом пользовал FastReport3, они только начинали писать COM обвязку для C++. Потом забросил.

Всех лучше с отчетами у Builder с его VCL.
Записан
Hordi
Гость
« Ответ #5 : Август 19, 2006, 10:07 »

Попробуй jasper.
Если отчеты простые и есть время - напиши сам, для простых случаев - это месяц работы для 1-2 программистов.
Записан
Cyrax
Гость
« Ответ #6 : Август 19, 2006, 21:37 »

Почему я не рассматриваю вариант использования FastReport'а - по некоторым причинам я против C++ Builder'а. Что касается переносимости, то и с CLX, и с Kylix есть определённые проблемы.
Кстати, с C# тоже имеются проблемы с переносимостью - Microsoft'овских Framework'ов для других ОС нет, только сторонних производителей. А их Framework'и полностью и без глюков оригинальную функциональность не обеспечивают... :?

Отчёты, конечно, у меня простые. И я бы с удовольствием написал Qt-ный генератор, но со временем у меня довольно туго. Поэтому вынужден искать готовые решения. Как варианты - OpenRPT, NCReport и Jasper. С ними я пока ознакамливаюсь, поэтому сейчас ничего конкретного написать не могу. Думаю, завтра ситуация прояснится... Крутой
Записан
Cyrax
Гость
« Ответ #7 : Август 20, 2006, 19:07 »

Насколько я понял, OpenRPT написан на Qt. Но в OpenRPT нельзя создавать отчётные шаблоны в runtim'е (нет runtime-дизайнера). Кроме того, он ориентирован прежде всего на PostgreeeSQL. Работа с другими БД возможна только после установки Qt-драйверов для этих БД и модификации каких-то исходников... :?

Что касается NCReport, то с БД у него попроще - работа с ними идёт через Qt. Улыбающийся
Но может ли он генерировать новые шаблоны отчётов в runtim'е?
На каком Qt написан дизайнер?
И как быть с header'ами и footer'ами в дизайнере? Ставить программно?
Допустимы ли вертикальные надписи?

И где найти доки по NCReport?

Какие объективные преимущества у NCReport'а по сравнению с OpenRPT?

Что касается jasper'ов, то, как я понял, там динамически формировать шаблоны отчётов нельзя (только до компиляции). Да и написаны они на Java...

P.S.: как расшифровывается "jasper"? Крутой
Записан
SLK
Гость
« Ответ #8 : Август 21, 2006, 12:25 »

Цитировать
Но может ли он генерировать новые шаблоны отчётов в runtim'е?

Не может (не представляю, зачем такое может понадобится), хотя ничего не мешает сделать генерацию шаблонова самому .... там не слишком сложная XML структура. Если имеется в виду как-то зашивать XML шаблон в exe, а не держать его отдельно в файле (чтоб юзеры не добрались) .... так это делается запросто через ресурсы, пробовал сам - работает.
Цитировать
На каком Qt написан дизайнер?

на QT3, изначально делался, как я понимаю, под linux. Но я его прекрасно скомпилил и под win32 (mingw).
Цитировать
И как быть с header'ами и footer'ами в дизайнере? Ставить программно?

header-ы и footer-ы задаются в шаблоне своими тегами .... естественно в дизайнере это сделать можно. Можно сделать для листа и\или для секций (группировка details по признаку) нельзя только сделать Header и footer для всего отчёта, это минус, но он мне не слишком мешает.  (теоритически если у всего details один признак, то для Report Header\Footer можно воспользоватся Section header\footer .... но я так делать не пробовал пока)
Цитировать
Допустимы ли вертикальные надписи?

Да, в том числе и так называемые водяные знаки\надписи
... для любого объекта в шаблоне можно задать Rotation angle
Цитировать
И где найти доки по NCReport?

таких нет .... есть примеры шаблонов и пример кода
Цитировать
Какие объективные преимущества у NCReport'а по сравнению с OpenRPT?

OpenRPT вроде как мощнее и старше .... но мне их дизайнер не очень понравился ... к примеру нельзя выдилить группу обьектов на шаблоне и переместить ..... всё надо таскать по одному ..... в ncreport  это можно .... и не нашел я примеров встраивания в код генератора openRPT ... может плохо искал?
Ncreport моложе, а дизайнер вообще только недавно вышел в бета версии и пока компилится только под QT3. Но зато генератор легко встраивается в код и есть в полноценной QT4 версии (без использования Qt3Support4)
Записан
Gryz
Гость
« Ответ #9 : Август 22, 2006, 08:22 »

Цитата: "Cyrax"
На каком Qt написан дизайнер?

На том же, что устанавливалось вместе с дизайнером
Записан
Cyrax
Гость
« Ответ #10 : Август 22, 2006, 11:49 »

Designer я ещё не поставил. У меня Qt4...
Вопрос к Gryz: какой ещё Qt ставится вместе с дизайнером Непонимающий

...
Записан
SLK
Гость
« Ответ #11 : Август 22, 2006, 11:52 »

Цитата: "Gryz"
Цитата: "Cyrax"
На каком Qt написан дизайнер?

На том же, что устанавливалось вместе с дизайнером

Надо читать с начала Улыбающийся ... речь шла о дизайнере отчётов для NcReport, а не про дизайнер форм QT
Записан
Cyrax
Гость
« Ответ #12 : Август 22, 2006, 12:49 »

Цитата: "SLK"
Цитата: "Gryz"
Цитата: "Cyrax"
На каком Qt написан дизайнер?

На том же, что устанавливалось вместе с дизайнером

Надо читать с начала Улыбающийся ... речь шла о дизайнере отчётов для NcReport, а не про дизайнер форм QT


Я так и понял. Вопрос остаётся: какой Qt ставится вместе с дизайнером отчётов NCReport Непонимающий
Записан
SLK
Гость
« Ответ #13 : Август 22, 2006, 13:35 »

Цитата: "Cyrax"

Вопрос остаётся: какой Qt ставится вместе с дизайнером отчётов NCReport Непонимающий

шутка?   :?
Написал вверху уже ... для компиляции дизайнера NcReport нужен QT3 !!!
Если собиралось под win32(mingw) то в папку к полученному exe, добавляем qt-mt3.dll и mingwm10.dll
всё, дизайнером можно пользоваться.

Могу поделится уже готовым, но не куда выложить .......
Записан
Cyrax
Гость
« Ответ #14 : Август 22, 2006, 18:11 »

Да я понял, что Qt3 нужен!..

Цитировать
Могу поделится уже готовым, но не куда выложить .......

Было бы неплохо ...  можно на мыло:  cyrax-temp@nm.ru.

А нельзя скомпилить статически?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 22.