Russian Qt Forum

Qt => Печать => Тема начата: minigo от Сентябрь 10, 2009, 11:53



Название: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 10, 2009, 11:53
Подскажите новичку, как собрать exaro из сорцов под виндой + visual studio 2005 ? У меня вылетает ошибка

Код:
Error	188	error C2491: 'Report::ReportInterface::staticMetaObject' : definition of dllimport static data member not allowed	d:\WORK_Files\exaro_2.0.0\libs\report\exaro\GeneratedFiles\Debug\moc_reportinterface.cpp	65

может на будущее оставить эту ветку для вопросов по работе с eXaro, уже кто-то просил об этом, ну и я планирую его использовать  :)


Название: Re: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 11, 2009, 09:40
Сам разобрался. Вообщем всё оказалось очень просто, создал проект QT dll закинул туда сорцы и ресурсы и всё собралось. Надо ещё не забыть собрать все плагины, они обязательны для eXaro.


Название: Re: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 15, 2009, 15:56
В процессе работы с eXaro возникла ещё одна проблема, создал шаблон, в процессе выполнения загружаю в него запрос, потом выполняю, на что мне eXaro ругается "Field ... not found" . Подскажите, в чём загвоздка ? Соединение с базой нормальное, поля точно есть, шаблон делал в дизайнере на основе примера musicReport


Название: Re: eXaro сборка, вообще работа
Отправлено: f0x от Сентябрь 15, 2009, 18:24
в процессе выполнения загружаю в него запрос
что под этим имеется ввиду?
не забыл в скрипте сделать query.exec()?


Название: Re: eXaro сборка, вообще работа
Отправлено: maxi от Сентябрь 15, 2009, 21:21
Тоже работаю с eXaro. Столько граблей всяких разных встретил уже, даже к разработчикам писал, багу правили  :)
А вообще молодцы они, реально функционалистый репген написали (еще и LGPL  ;) ).
Проблема может быть, как отмечено выше, в скрипте ( query.exec(); ) или же не указан запрос в Detail Band.

PS: тоже предлагаю оставить ветку для вопросов по eXaro.
PS2: кстати, их свн (на всякий случай):
Код:
svn checkout http://exaro.googlecode.com/svn/trunk/ exaro-read-only


Название: Re: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 16, 2009, 09:44
Спс, точно забыл вызвать скрипт  ::), теперь не пишется что Field ... not found, теперь просто пустые поля, хотя запрос возвращает данные. У меня возникла масса таких проблем, потому что я сам ручками наклепал шаблон. Подскажите, как в дизайнере подключиться к существующему ODBC подключению, что-то не выходит "каменный цветок"  :'( Если подключусь наклепаю шаблон в дизайнере


Название: Re: eXaro сборка, вообще работа
Отправлено: f0x от Сентябрь 16, 2009, 11:57
Дизайнер создает свое подключение через драйвера Qt. Будет драйвер - будет подключение ;).
Я правильо понял, что ты ручками пишешь XML-файл шаблона?  :o.
А зачем такие сложности когда есть дизайнер?


Название: Re: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 16, 2009, 13:19
С дизайнером разобрался. Мелочь, но всё таки в блоке detailcontainer тоже необходимо поставить имя запроса  :)


Название: Re: eXaro сборка, вообще работа
Отправлено: f0x от Сентябрь 16, 2009, 13:51
блоке detailcontainer тоже необходимо поставить имя запроса  :)
Во 2.0 версии это обязательно, потому что движок при итерациях с SQL запросом  работает только с detailContainer. Его дочерние элементы просто берут значение поля текущей строки. В 3 версии detailContainer выброшен. Итерации выполняются движком над группой бандов которые имеют одинаковый Dataset.


Название: Re: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 16, 2009, 14:27
А можно в eXaro при генерации отчёта не лету вылавливать те данные что вставляются в отчёт и подменять их, т.е. например запрос у меня возвращает некие Int а во время составления отчёта мне необходимо в зависимости от этого инта поставить туда строку ?

Возможно ли создавать переменные ? Например для названия отчёта ?


Название: Re: eXaro сборка, вообще работа
Отправлено: maxi от Сентябрь 16, 2009, 15:29
Через скрипты все можно.


Название: Re: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 16, 2009, 16:43
Через скрипты все можно.

Я новичёк в Qt, пару недель только разбираюсь  ::) Не подскажешь в общих чертах, как это сделать, например элементарный пример


Название: Re: eXaro сборка, вообще работа
Отправлено: f0x от Сентябрь 16, 2009, 16:56
Код
Javascript
function somethingSet()
{
   if (ds_0.value('sp')==1)
       memo_SP.text = '☑'
   else
       memo_SP.text = '☐';
}
 
detailheader.beforePrint.connect(somethingSet());
 
например так.
Перехватываешь сигнал от нужного объекта и обрабатываешь его по своему усмотрению


Название: Re: eXaro сборка, вообще работа
Отправлено: minigo от Сентябрь 17, 2009, 13:16
Извиняюсь за занудство, а можно поподробней  ::) Просто все объекты находятся в private области, т.е. мне подкорректировать библиотеку ? И если честно я не понял, скрипт писать в самом шаблоне отчёта или коде ?


Название: Re: eXaro сборка, вообще работа
Отправлено: f0x от Сентябрь 17, 2009, 15:09
библиотеку коректировать не нужно. все манипуляции со свойствами объектов можно делать прямо в скрипте. Скриптовому движку доступны все объекты отчета


Название: Re: eXaro сборка, вообще работа
Отправлено: Alex7902 от Апрель 12, 2010, 18:22
Народ, а может кто-нибудь выложить простой исходник примера приложения с отчетом eXaro. А то я чет не совсем понимаю как прикрутить отчет к приложению. Сождается файл с .*bdrt и дальше что? Как сделать так, чтоб по нажатию кнопки в приложении открывался отчет?


Название: Re: eXaro сборка, вообще работа
Отправлено: kolob от Апрель 21, 2010, 22:40
Добрый вечер! А есть какая нибудь документация по работе с eXaro? что то не могу в ней разобрать. Мог бы кто нибудь сорцы выложить с самым самым простым примером , с простым отчетом. Плизз, очень надо!!


Название: Re: eXaro сборка, вообще работа
Отправлено: sergun1604 от Ноябрь 30, 2010, 15:39
как установить Exaro в Kubuntu?


Название: Re: eXaro сборка, вообще работа
Отправлено: BlackTass от Ноябрь 30, 2010, 16:32
собрать из сорцов


Название: Re: eXaro сборка, вообще работа
Отправлено: sergun1604 от Ноябрь 30, 2010, 16:53
какой командой


Название: Re: eXaro сборка, вообще работа
Отправлено: BlackTass от Ноябрь 30, 2010, 19:55
mkdir build && cd build && cmake ../CMakeLists.txt
make


Название: Re: eXaro сборка, вообще работа
Отправлено: domr от Январь 25, 2011, 22:39
Прошу, обратить внимание  eXaro Wiki (http://www.prog.org.ru/topic_16484_0.html)


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июнь 24, 2011, 12:30
не могли бы достопочтенные доны написать как сабж ставится на Win, рецепт на первой странице не помог :(


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июль 01, 2011, 11:59
виноват. взялся в очередной раз за сборку eXaro, поскармливал QtCreator-у CMakeLists.txt файлы, удовлетворил все зависимости и всё собралось :)


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июль 06, 2011, 11:28
начал делать проект с использованием eXaro и получил ошибку
Цитировать
exaro :-1: ошибка: cannot find -lReport


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июль 07, 2011, 12:33
можно сказать добил установку eXaro с mingw под Win7_32bit
1. cd каталог eXaro
2. mkdir build
3. cd build
4. cmake .. -G "MinGW Makefiles"
5. mingw32-make
запускаем терминал от админа
6. mingw32-make install
собственно сборка закончена, далее чтобы в проекте библитека увидилась прописываем в про файле
LIBS += -L"c:/Program Files/exaro-package/lib" -lReport


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июль 18, 2011, 01:22
как диагностировать почему не открывается отчёт?
делаю по аналогии с демо кодом
Код:
    Report::ReportInterface* report = 0;
    Report::ReportEngine reportEngine;
    report = reportEngine.loadReport("current.bdrt");
    if (!report)
    {
            qCritical()<<"Error: Can't open the report";
            return;
    }
при том , что loadReport файл видит, типа читает его, но в итоге возвращает "0"
ниже представляю код загрузки отчёта
Код:
ReportInterface* ReportEngine::loadReport(const QString & fileName)
{
ReportInterface* report = 0;
QFile file(fileName);

if (file.open(QIODevice::ReadOnly))
{
report = dynamic_cast<ReportInterface*>(loadReport(&file));
file.close();
}

return report;
}

ReportInterface* ReportEngine::loadReport(QIODevice * device)
{
QDomDocument doc("report");

if (!doc.setContent(device->readAll()))
return 0;

return dynamic_cast<Report::ReportInterface*>(objectFromDom(0, doc.firstChildElement()));
}


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июль 20, 2011, 08:58
 в сязи с вышеозначенной проблемой решил пересобрать сабж из репозитория, но на этапе сборки выдаётся предупреждение
Код:
-- Configuring done
WARNING: Target "Ods" requests linking to directory "C:/dev/quazip-package/lib".
  Targets may link only to libraries.  CMake is dropping the item.
WARNING: Target "exaro" requests linking to directory "C:/dev/propertyEditor-pac
kage/include".  Targets may link only to libraries.  CMake is dropping the item.

-- Generating done
-- Build files have been written to: C:/dev/exaro/build
соответственно mingw32-make затыкается на сборке плагина Ods
Код:
[ 37%] Building CXX object plugins/report/export/ods/CMakeFiles/Ods.dir/qrc_odsR
esource.cxx.obj
Linking CXX shared library libOds.dll
Creating library file: libOds.dll.a
CMakeFiles\Ods.dir/objects.a(ods.cpp.obj):C:/dev/exaro/plugins/report/export/ods
/ods.cpp:123: undefined reference to `QuaZip::QuaZip(QString const&)'
CMakeFiles\Ods.dir/objects.a(ods.cpp.obj):C:/dev/exaro/plugins/report/export/ods
/ods.cpp:124: undefined reference to `QuaZip::open(QuaZip::Mode, zlib_filefunc_d
ef_s*)'
на каком этапе нужно прилинковать вышеозначенные директории?


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июль 20, 2011, 20:40
ларчик просто открывался - в CMakeLists.txt не верно были прописаны пути к инклудам вместо
Цитировать
set( ZINT_INCLUDE_DIR C:/libs/zlib/include )
set( PROPERTYEDITOR_LIBRARY C:/dev/propertyEditor-package/include )
set( PROPERTYEDITOR_INCLUDE_DIR C:/dev/propertyEditor-package/lib )
set( QUAZIP_LIBRARY C:/dev/quazip-package/lib )
set( QUAZIP_INCLUDE_DIR C:/dev/quazip-package/include )
надо было
Цитировать
set( ZINT_INCLUDE C:/libs/zlib/include )
set( PROPERTYEDITOR_LIBRARY C:/dev/propertyEditor-package/include )
set( PROPERTYEDITOR_INCLUDE C:/dev/propertyEditor-package/lib )
set( QUAZIP_LIBRARY C:/dev/quazip-package/lib )
set( QUAZIP_INCLUDE C:/dev/quazip-package/include )
надо бы с нуля собрать всё и описать в деталях ... чисто , чтобы не забыть


Название: Re: eXaro сборка, вообще работа
Отправлено: andybeg от Июль 24, 2011, 18:06
проблема с загрузкой так и не решилась :( файл отчёта загружается, но
Код:
    report = reportEngine.loadReport("Report.bdrt");
возвращает "0"
этот ноль возвращает следующя функция
Код:
return dynamic_cast<Report::ReportInterface*>(objectFromDom(0, doc.firstChildElement()));
....................................

QObject * ReportEngine::objectFromDom(QObject * parent, const QDomElement & dom)
{
QObject * obj = 0;

for (int r = 0;r < m_reports.size();r++)
if (dom.tagName() == m_reports[r]->metaObject()->className())
{
obj = m_reports[r]->createInstance(parent);
setObjectPropertiesFromDom(obj, dom);
break;
}

if (!obj)
for (int p = 0;p < m_pages.size();p++)
if (dom.tagName() == m_pages[p]->metaObject()->className())
{
obj = m_pages[p]->createInstance(parent);
setObjectPropertiesFromDom(obj, dom);
break;
}

if (!obj)
for (int i = 0;i < m_items.size();i++)
if (dom.tagName() == m_items.values()[i]->metaObject()->className())
{
obj = m_items.values()[i]->createInstance(dynamic_cast<QGraphicsItem*>(parent), parent);

if (dynamic_cast<Report::PageInterface*>(parent))
dynamic_cast<Report::PageInterface*>(parent)->addItem(dynamic_cast<QGraphicsItem*>(obj));

setObjectPropertiesFromDom(obj, dom);

break;
}

if (obj)
for (QDomElement ch = dom.firstChildElement("children").firstChildElement();!ch.isNull();ch = ch.nextSiblingElement())
objectFromDom(obj, ch);
else
qWarning() << tr("Can't find %1").arg(dom.tagName());

return obj;
}
совсем голову поломал :(


Название: Re: eXaro сборка, вообще работа
Отправлено: PavelVX от Октябрь 28, 2011, 10:00

Дизайнер создает свое подключение через драйвера Qt. Будет драйвер - будет подключение .
Я правильо понял, что ты ручками пишешь XML-файл шаблона?  .
А зачем такие сложности когда есть дизайнер?

Я новичек! Таки непонятно куда подсовывать дрова самому дизайнеру? в папку с exaro положил папочку sqldrivers с дровами для odbc, но при открытии отчет-настройка БД ни одного драйвера недоступно, что нужно сделать, что бы одбц подхватилось?


Название: Re: eXaro сборка, вообще работа
Отправлено: kolob от Декабрь 10, 2011, 01:30
Цитировать
Таки непонятно куда подсовывать дрова самому дизайнеру? в папку с exaro положил папочку sqldrivers с дровами для odbc, но при открытии отчет-настройка БД ни одного драйвера недоступно, что нужно сделать, что бы одбц подхватилось?
Я что то не понял, eXaro работает только с SQLite
Код:
void SqlDatabaseDialog::on_drivers_currentIndexChanged ( int /*index*/ )
{
openButton->setEnabled(drivers->currentText().contains("QSQLITE"));
}


Название: Re: eXaro сборка, вообще работа
Отправлено: kolob от Декабрь 29, 2011, 15:16
Вроде все собрал. Добавляю строку в про файл как указано в wiki. Подключаю header в инклудах. Выдает ошибку, что не может найти файл заголовок reportengine.h Все сделал как в wiki. Но ни как не хочет работать. Помогите.