61
Discussion | Обсуждение / Вопрос по работе с SubDetailBand
« Last post by KorSA on April 05, 2024, 09:51:21 am »Добрый день.
Мне необходимо отобразить данные из двух таблиц, одна и которой является подчиненной.
Одна таблица содержит поле "id"(уникальный ключ) и какой набор данных, вторая таблица поле "id"(не уникальный ключ).
Пример:
tab1
id Fiel_1 Fiel_2
1 "поле1" "поле2"
2 "поле3" "поле4"
tab2
id Fiel_1
1 "значение1"
1 "значение2"
2 "значение3"
В результате должен получиться отчет
"поле1" "поле2"
"значение1"
"значение2"
"поле3" "поле4"
"значение3"
В дизайнере отчета поместил DataBand и к нему SubDetailBand. В DataBand поместил модель tab1, в SubDetailBand поместил tab2.
Добавление данных происходит через внешний источник данных.
В результате в готовом отчете
"поле1" "поле2"
"поле3" "поле4"
Как программно у модели tab2 сделать subdetail или есть другие варианты?
Мне необходимо отобразить данные из двух таблиц, одна и которой является подчиненной.
Одна таблица содержит поле "id"(уникальный ключ) и какой набор данных, вторая таблица поле "id"(не уникальный ключ).
Пример:
tab1
id Fiel_1 Fiel_2
1 "поле1" "поле2"
2 "поле3" "поле4"
tab2
id Fiel_1
1 "значение1"
1 "значение2"
2 "значение3"
В результате должен получиться отчет
"поле1" "поле2"
"значение1"
"значение2"
"поле3" "поле4"
"значение3"
В дизайнере отчета поместил DataBand и к нему SubDetailBand. В DataBand поместил модель tab1, в SubDetailBand поместил tab2.
Добавление данных происходит через внешний источник данных.
Quote
------
std::unique_ptr<QSqlQuery> _query;
std::unique_ptr<QSqlQuery> _query_sub;
QSqlDatabase _db;
------
_query = std::make_unique<QSqlQuery>( _db );
_query->prepare( "select * from tab1");
_query->exec();
QSqlQueryModel* customersModel = new QSqlQueryModel();
customersModel->setQuery( *_query );
_reportEngine->dataManager()->addModel( "tab1", customersModel, true );
_query_sub = std::make_unique<QSqlQuery>(_db);
_query_sub->prepare( "select * from tab2 where tab2.id == "$D{tab1.id}");
_query_sub->exec();
QSqlQueryModel* customersModelSub = new QSqlQueryModel();
customersModelSub->setQuery(*_query_sub);
_reportEngine->dataManager()->addModel("tab2", customersModelSub, false);
В результате в готовом отчете
"поле1" "поле2"
"поле3" "поле4"
Как программно у модели tab2 сделать subdetail или есть другие варианты?