Russian Qt Forum

Qt => ActiveX => Тема начата: silart от Апрель 16, 2008, 11:41



Название: ActiveQt и Crystal Reports
Отправлено: silart от Апрель 16, 2008, 11:41
Добрый день! Столкнулся с такой проблемой. Нужно реализовать в программе поддержку отчетов. Для этого используется Crystal Reports. У него есть вьювер, который кидается на форму и отображает сформированный отчет. Вот код на Visual Basic, который работает:

Код:
Private Sub Form_Load()
// создает главный объект
Set loApp = CreateObject("CrystalRuntime.Application")
// Загружаем файл отчета, получаем объект отчета
Set loReport = loApp.OpenReport("C:\Proects\CR_Viewer_vb\rtitle.rpt")
// Получаем объект параметра отчета "Title"
Set loTitle = loReport.ParameterFields.GetItemByName("Title")
// Задаем значение текстовому параметру
loTitle.SetCurrentValue ("Simple Text")
// Присваиваем вьюверу объект отчета и показываем отчет
CRViewer1.ReportSource = loReport
CRViewer1.ViewReport
End Sub

А вот аналогичный код на Qt с использованием ActiveQt:
Код:
pCRApplication = new QAxObject(this);
pCRApplication->setControl("CrystalRuntime.Application");
QAxObject* pCReport = pCRApplication->querySubObject("OpenReport(QString, QVariant)", "reports\\rtitle.rpt");
QAxObject* pParameterFieldDefinitions = pCReport->querySubObject("ParameterFields");
QAxObject* pTitle = pParameterFieldDefinitions->querySubObject("GetItemByName(QString, QVariant)", "Title");
pTitle->dynamicCall("SetCurrentValue(QVariant, QVariant)", "Simple Text");
ui.pCRViewer->dynamicCall("SetReportSource(IUnknown*)", pCReport->asVariant());
ui.pCRViewer->dynamicCall("ViewReport()");

Проблема в том, что при запросе войства "ParameterFields" вьювер перестает работать (он загружается. но отчет не отображает, на месте отчета все серое). Строка:
Код:
QAxObject* pParameterFieldDefinitions = pCReport->querySubObject("ParameterFields");
Даже если дальше ничего не делать, одна эта строка все портит. Если ее закомментировать, все будет работать: вьювер покажет отчет.
В чем проблема, может кто сталкивался? Раньше я не работал с ActiveQt.
Что интересно, функция Invoke() интерфейса IDispatch в глубине Qt возвращает везде S_OK, но при этом ничего не работает.
Может я как-то неправильно использую ActiveQt?


Название: Re: ActiveQt и Crystal Reports
Отправлено: silart от Апрель 20, 2008, 04:48
Товарищи, кто работал с ActiveQT, подскажите пожалуйста что я делаю неправильно. Ведь если код работает на VB, должен же работать с использованием ActiveQt.
Свойство "ParameterFields" является коллекцией. Может в этом дело?


Название: Re: ActiveQt и Crystal Reports
Отправлено: silart от Апрель 29, 2008, 06:08
Товарищи, ну помогите пожалуйста... Этот ActiveQt меня доканает


Название: Re: ActiveQt и Crystal Reports
Отправлено: ArtemS2006 от Август 29, 2008, 18:01
у меня возникла похожая проблемма. Надо было использовать эктив икс элемент представляющий собой стандартный performance monitor под винды. код на визуал бэйсике ошибок не вызывал, однако при использовании классов qt возникал такой глюк:
при вызове
QAxObject *counters = perfmon->QuerySubObject("Counters");
 и затем
counters->requestCall("Add(QString &)", QString("..путь к каунтеру.."));
в аутпут визуал студии выдавалось сообщение, точно не помню но чтото вроде "работа с перебором элементов не поддерживается"
и был еще один глюк при вызове
perfmon->requestCall("Paste()")
, которого в бэйсике также не наблюдалось. пришлось отказаться от использования activex в qt
да, я пользую qt 4.4.1 я думаю что это глюк непосредственно самих классов QAxObject


Название: Re: ActiveQt и Crystal Reports
Отправлено: silart от Сентябрь 17, 2008, 15:55
у меня возникла похожая проблемма. Надо было использовать эктив икс элемент представляющий собой стандартный performance monitor под винды. код на визуал бэйсике ошибок не вызывал, однако при использовании классов qt возникал такой глюк:
при вызове
QAxObject *counters = perfmon->QuerySubObject("Counters");
 и затем
counters->requestCall("Add(QString &)", QString("..путь к каунтеру.."));
в аутпут визуал студии выдавалось сообщение, точно не помню но чтото вроде "работа с перебором элементов не поддерживается"
и был еще один глюк при вызове
perfmon->requestCall("Paste()")
, которого в бэйсике также не наблюдалось. пришлось отказаться от использования activex в qt
да, я пользую qt 4.4.1 я думаю что это глюк непосредственно самих классов QAxObject

Тут дело скорее в самом ActiveX. С кристалом я долго долбался, используя сначала версии Qt 4.2.2, потом 4,4. Потом скачал новую версию самого кристала, в ней то место стало работать, но в другом месте начались проблемы. В версии 10 кристала при попытке обращения к коллекции параметров происходит внутренняя ошибка (в самом кристале, а не в Qt). В версии 11 этой ошибки уже нет, но там изменили объектную модель и вообще перестало быть ясно как передавать ему параметры. Короче кристал - это такая лажа, выбросить его на помойку надо. Потом я колупался с фастрепортом. Он оказался таким глючным, что неудивительно, ведь он сделан на Делфи. На Вижуал Басике тоже сыпались глюки, возникающие внутри фастрепорта, такие эже как и a Qt.
Потом я использовал ActiveX компоненты IoComp. Там все замечательно работает, все хорошо передается и забирается, просто одно удовольствие с ними работать. Хорошо продуманая объектная модель. Одна беда, они платные, и через  10 минут прекращают работать! )))))))
Так что, видите, дела здесь не в ActiveQt, а в самих компонентах. С кривыми компонентами она криво работает. вот.


Название: Re: ActiveQt и Crystal Reports
Отправлено: Admin от Сентябрь 17, 2008, 16:48
жалко что с fastreport не получилось
у меня были большие надежды на него
сам отчеты хочу в html выводить


Название: Re: ActiveQt и Crystal Reports
Отправлено: Sergey B. от Сентябрь 17, 2008, 17:07
Если юзать платные, может имеет смысл NCReport посмотреть?


Название: Re: ActiveQt и Crystal Reports
Отправлено: ритт от Сентябрь 17, 2008, 23:42
насколько я понял, NCReport можно и бесплатно юзать...но без сорцев и с проблемами лицензирования в открытых проектах...


Название: Re: ActiveQt и Crystal Reports
Отправлено: Tonal от Сентябрь 18, 2008, 07:52
Вообще-то FastReport довольно неплохая библиотека - по опыту использования его из Delphi.
С версией ActiveX не работал, но не должны они были сильно накосячить. :)
Так что может таки следует обратиться в техподдержку ежели чего не понятно?

У него несколько минусов:
1. Платный (бесплатный только для delphi и на 2 версии отстаёт)
2. Плохо с кросплатформой
3. Написан на delphi. :)


Название: Re: ActiveQt и Crystal Reports
Отправлено: silart от Сентябрь 24, 2008, 04:39
Вообще-то FastReport довольно неплохая библиотека - по опыту использования его из Delphi.
С версией ActiveX не работал, но не должны они были сильно накосячить. :)
Так что может таки следует обратиться в техподдержку ежели чего не понятно?

У него несколько минусов:
1. Платный (бесплатный только для delphi и на 2 версии отстаёт)
2. Плохо с кросплатформой
3. Написан на delphi. :)

Да я честно говоря, тоже надеялся на этот FastReports. Но он не оправдал надежд. Большая проблема еще его найти. Я пробовал 2 версии: 2.xx какую-то и предрелизную, скачанную с официального сайта и с "нормальными" отзывами. Обе ведут себя по-разному в плане глюков. Причем даже на VisualBasic возникают с ним глюки. Ну что поделаешь Делфи есть Делфи...


Название: Re: ActiveQt и Crystal Reports
Отправлено: silart от Сентябрь 24, 2008, 04:41
насколько я понял, NCReport можно и бесплатно юзать...но без сорцев и с проблемами лицензирования в открытых проектах...

Говорят вышел новый. Там даже можно произвольные источники данных использовать, что конечно очень здорово. Только вот где его взять? Ответ: "купить" явно не проканывает. Если все покупать, и денег никаких не хватит!  ;)


Название: Re: ActiveQt и Crystal Reports
Отправлено: Tonal от Сентябрь 26, 2008, 08:35
Блин, возми с офф-сайта демку (http://www.fast-report.com/ru/download/fast-report-studio-download.html).
Ограничение на количество страниц (не более 5) и надпись при печати.
Там же лежит русская дока.


Название: Re: ActiveQt и Crystal Reports
Отправлено: lit-uriy от Сентябрь 26, 2008, 10:04
2 silart, у буржуев не только хватает, но и прибавляется, а твоя мысль - наследствие СССР.
Если ты собираешся из этой покупки пользу извлекать, дак извлекай, если для колекции, то может лучше марки/значки.


Название: Re: ActiveQt и Crystal Reports
Отправлено: silart от Сентябрь 26, 2008, 10:40
2 silart, у буржуев не только хватает, но и прибавляется, а твоя мысль - наследствие СССР.
Если ты собираешся из этой покупки пользу извлекать, дак извлекай, если для колекции, то может лучше марки/значки.
Возможно вы и правы. Но я пока не готов 600 долларов за нее платить. Вот если бы она мне бесплатно досталась, и я с помощью ее заработал бы нехило, то конечно, стоило бы купить новую версию...