diff --git a/src/plugins/reports/krscriptfunctions.cpp b/src/plugins/reports/krscriptfunctions.cpp --- a/src/plugins/reports/krscriptfunctions.cpp +++ b/src/plugins/reports/krscriptfunctions.cpp @@ -21,16 +21,25 @@ #include #include +#include #include -KRScriptFunctions::KRScriptFunctions(const KReportDataSource* kodata, KDbConnection* conn) +KRScriptFunctions::KRScriptFunctions(const KReportDataSource* datasource, KDbConnection* conn) { - m_cursor = kodata; + m_cursor = datasource; m_connection = conn; - if (kodata) { - m_source = kodata->sourceName(); + if (datasource) { + if (m_connection->tableSchema(datasource->sourceName())) { + m_source = datasource->sourceName(); + } else if (m_connection->querySchema(datasource->sourceName())) { + KDbNativeStatementBuilder builder(conn); + KDbEscapedString source; + if (builder.generateSelectStatement(&source, m_connection->querySchema(datasource->sourceName()))) { + m_source = source.toByteArray(); + } + } } }