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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ActiveQt и Crystal Reports  (Прочитано 16232 раз)
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?
Записан
silart
Гость
« Ответ #1 : Апрель 20, 2008, 04:48 »

Товарищи, кто работал с ActiveQT, подскажите пожалуйста что я делаю неправильно. Ведь если код работает на VB, должен же работать с использованием ActiveQt.
Свойство "ParameterFields" является коллекцией. Может в этом дело?
Записан
silart
Гость
« Ответ #2 : Апрель 29, 2008, 06:08 »

Товарищи, ну помогите пожалуйста... Этот ActiveQt меня доканает
Записан
ArtemS2006
Гость
« Ответ #3 : Август 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
Записан
silart
Гость
« Ответ #4 : Сентябрь 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, а в самих компонентах. С кривыми компонентами она криво работает. вот.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #5 : Сентябрь 17, 2008, 16:48 »

жалко что с fastreport не получилось
у меня были большие надежды на него
сам отчеты хочу в html выводить
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #6 : Сентябрь 17, 2008, 17:07 »

Если юзать платные, может имеет смысл NCReport посмотреть?
Записан
ритт
Гость
« Ответ #7 : Сентябрь 17, 2008, 23:42 »

насколько я понял, NCReport можно и бесплатно юзать...но без сорцев и с проблемами лицензирования в открытых проектах...
Записан
Tonal
Гость
« Ответ #8 : Сентябрь 18, 2008, 07:52 »

Вообще-то FastReport довольно неплохая библиотека - по опыту использования его из Delphi.
С версией ActiveX не работал, но не должны они были сильно накосячить. Улыбающийся
Так что может таки следует обратиться в техподдержку ежели чего не понятно?

У него несколько минусов:
1. Платный (бесплатный только для delphi и на 2 версии отстаёт)
2. Плохо с кросплатформой
3. Написан на delphi. Улыбающийся
Записан
silart
Гость
« Ответ #9 : Сентябрь 24, 2008, 04:39 »

Вообще-то FastReport довольно неплохая библиотека - по опыту использования его из Delphi.
С версией ActiveX не работал, но не должны они были сильно накосячить. Улыбающийся
Так что может таки следует обратиться в техподдержку ежели чего не понятно?

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

Да я честно говоря, тоже надеялся на этот FastReports. Но он не оправдал надежд. Большая проблема еще его найти. Я пробовал 2 версии: 2.xx какую-то и предрелизную, скачанную с официального сайта и с "нормальными" отзывами. Обе ведут себя по-разному в плане глюков. Причем даже на VisualBasic возникают с ним глюки. Ну что поделаешь Делфи есть Делфи...
Записан
silart
Гость
« Ответ #10 : Сентябрь 24, 2008, 04:41 »

насколько я понял, NCReport можно и бесплатно юзать...но без сорцев и с проблемами лицензирования в открытых проектах...

Говорят вышел новый. Там даже можно произвольные источники данных использовать, что конечно очень здорово. Только вот где его взять? Ответ: "купить" явно не проканывает. Если все покупать, и денег никаких не хватит!  Подмигивающий
Записан
Tonal
Гость
« Ответ #11 : Сентябрь 26, 2008, 08:35 »

Блин, возми с офф-сайта демку.
Ограничение на количество страниц (не более 5) и надпись при печати.
Там же лежит русская дока.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Сентябрь 26, 2008, 10:04 »

2 silart, у буржуев не только хватает, но и прибавляется, а твоя мысль - наследствие СССР.
Если ты собираешся из этой покупки пользу извлекать, дак извлекай, если для колекции, то может лучше марки/значки.
Записан

Юра.
silart
Гость
« Ответ #13 : Сентябрь 26, 2008, 10:40 »

2 silart, у буржуев не только хватает, но и прибавляется, а твоя мысль - наследствие СССР.
Если ты собираешся из этой покупки пользу извлекать, дак извлекай, если для колекции, то может лучше марки/значки.
Возможно вы и правы. Но я пока не готов 600 долларов за нее платить. Вот если бы она мне бесплатно досталась, и я с помощью ее заработал бы нехило, то конечно, стоило бы купить новую версию...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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