diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index a2bae8c..57d28ed 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -168,6 +168,16 @@ void ReportRender::initDatasources(){ } } +void ReportRender::initDatasource(const QString& name){ + try{ + if (datasources()->containsDatasource(name)) + datasources()->dataSource(name)->first(); + } catch(ReportError &exception){ + QMessageBox::critical(0,tr("Error"),exception.what()); + return; + } +} + void ReportRender::renderPage(PageDesignIntf* patternPage) { m_curentNameIndex = 0; @@ -191,7 +201,7 @@ void ReportRender::renderPage(PageDesignIntf* patternPage) BandDesignIntf* lastRenderedBand = 0; for (int i=0;idataBandCount() && !m_renderCanceled;i++){ lastRenderedBand = m_patternPageItem->dataBandAt(i); - initDatasources(); + initDatasource(lastRenderedBand->datasourceName()); renderDataBand(lastRenderedBand); if (idataBandCount()-1) closeFooterGroup(lastRenderedBand); } diff --git a/limereport/lrreportrender.h b/limereport/lrreportrender.h index a5c7562..8ea6dc6 100644 --- a/limereport/lrreportrender.h +++ b/limereport/lrreportrender.h @@ -85,6 +85,7 @@ public slots: private: void renderPage(PageDesignIntf *patternPage); void initDatasources(); + void initDatasource(const QString &name); void initRenderPage(); void initVariables(); void clearPageMap(); @@ -169,6 +170,7 @@ private: QList m_ranges; QVector m_columnedBandItems; unsigned long long m_curentNameIndex; + }; } // namespace LimeReport #endif // LRREPORTRENDER_H