diff --git a/common.pri b/common.pri index 7fadeef..7d148ef 100644 --- a/common.pri +++ b/common.pri @@ -56,7 +56,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc LIMEREPORT_VERSION_MAJOR = 1 LIMEREPORT_VERSION_MINOR = 4 -LIMEREPORT_VERSION_RELEASE = 2 +LIMEREPORT_VERSION_RELEASE = 4 LIMEREPORT_VERSION = '\\"$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}\\"' DEFINES += LIMEREPORT_VERSION_STR=\"$${LIMEREPORT_VERSION}\" diff --git a/limereport/lrdatasourcemanager.cpp b/limereport/lrdatasourcemanager.cpp index cfbafab..dc2c32e 100644 --- a/limereport/lrdatasourcemanager.cpp +++ b/limereport/lrdatasourcemanager.cpp @@ -856,7 +856,7 @@ QList DataSourceManager::childDatasources(const QString &parentDatasour foreach(QString datasourceName, dataSourceNames()){ if (isSubQuery(datasourceName)){ SubQueryHolder* sh = dynamic_cast(dataSourceHolder(datasourceName)); - if (sh->masterDatasource().compare(parentDatasourceName,Qt::CaseInsensitive)==0){ + if (sh && sh->masterDatasource().compare(parentDatasourceName,Qt::CaseInsensitive)==0){ result.append(datasourceName); } } @@ -868,7 +868,8 @@ void DataSourceManager::invalidateChildren(const QString &parentDatasourceName) { foreach(QString datasourceName, childDatasources(parentDatasourceName)){ SubQueryHolder* sh = dynamic_cast(dataSourceHolder(datasourceName)); - sh->invalidate(designTime()?IDataSource::DESIGN_MODE:IDataSource::RENDER_MODE); + if (sh) + sh->invalidate(designTime()?IDataSource::DESIGN_MODE:IDataSource::RENDER_MODE); invalidateChildren(datasourceName); } } @@ -1110,7 +1111,12 @@ void DataSourceManager::collectionLoadFinished(const QString &collectionName) if (!m_datasources.contains(it.value()->queryName().toLower())){ connect(it.value(), SIGNAL(queryTextChanged(QString,QString)), this, SLOT(slotQueryTextChanged(QString,QString))); - putHolder(it.value()->queryName(),new QueryHolder(it.value()->queryText(), it.value()->connectionName(), this)); + putHolder(it.value()->queryName(),new SubQueryHolder( + it.value()->queryText(), + it.value()->connectionName(), + it.value()->master(), + this) + ); } else { delete it.value(); it.remove(); diff --git a/limereport/lrscriptenginemanager.cpp b/limereport/lrscriptenginemanager.cpp index dab7272..b975c03 100644 --- a/limereport/lrscriptenginemanager.cpp +++ b/limereport/lrscriptenginemanager.cpp @@ -566,8 +566,11 @@ QString ScriptEngineManager::expandDataFields(QString context, ExpandType expand context.replace(rx.cap(0),fieldValue); } else { - QString error = QString("Field %1 not found in %2 !!! ").arg(field).arg(reportItem->objectName()); - dataManager()->putError(error); + QString error; + if (reportItem){ + error = QString("Field %1 not found in %2 !!! ").arg(field).arg(reportItem->objectName()); + dataManager()->putError(error); + } varValue = QVariant(); if (!dataManager()->reportSettings() || !dataManager()->reportSettings()->suppressAbsentFieldsAndVarsWarnings()) context.replace(rx.cap(0),error);