Welcome, Guest. Please login or register.
Did you miss your activation email?

Recent Posts

Pages: 1 ... 3 4 [5] 6 7 ... 10
41
Hi. You have to set datasource property on the databand that will point to the data source
42
Hi!

QTableView dot't store any data it's own.
The data exists in the model.
This model You have been added to report.

Now You can just call
Code: [Select]
report->designReport() to show LRDesigner, and your model must be shown in datasources
thank you, I tried and succeeded , I saw the model in the data sources panel, and When I tried with columns, it shows only the first item of the model, how can I achieve this to show all items which I set with qt created app.
43
Subst, thank you, I tried and succeeded , I saw the model in the data sources panel, and When I tried with columns, it shows only the first item of the model, how can I achieve this to show all items which I set with qt created app.
44
Hi!

QTableView dot't store any data it's own.
The data exists in the model.
This model You have been added to report.

Now You can just call
Code: [Select]
report->designReport() to show LRDesigner, and your model must be shown in datasources
45
I want to set QTableView data to Lime report, I tried with this code void MainWindow::loadJsonData()
{
    QFile file(":/data/sample.json");
    if (!file.open(QIODevice::ReadOnly))
    {
        qWarning("Couldn't open the file.");
        return;
    }

    QByteArray data = file.readAll();
    QJsonDocument document = QJsonDocument::fromJson(data);
    QJsonArray jsonArray = document.array();

    model->setColumnCount(3);
    model->setHeaderData(0, Qt::Horizontal, "Name");
    model->setHeaderData(1, Qt::Horizontal, "Age");
    model->setHeaderData(2, Qt::Horizontal, "City");

    for (const QJsonValue & value : jsonArray)
    {
        QJsonObject obj = value.toObject();
        QList<QStandardItem *> items;
        items.append(new QStandardItem(obj["name"].toString()));
        items.append(new QStandardItem(QString::number(obj["age"].toInt())));
        items.append(new QStandardItem(obj["city"].toString()));
        model->appendRow(items);
    }
}

void MainWindow::on_generateReportButton_clicked()
{
    report->loadFromFile(":/reports/sample_report.lrxml");
    report->dataManager()->addModel("jsonData", model, true);
    report->previewReport();
}
but I don't know how to handle with limereport designer,
46
Спасибо.
47
если задача именно из кода сделать, то это вариант 1, через callbackDataSource
48
Я понимаю, что поставил условие "where id =", как раз один вопрос и состоит как модели связать программно(из кода), а не через дизайнер. Просто получается из дизайнера можно связать модели, а программно нет. 
Если использовать 2 вариант, как тогда из кода передать настройки подключения к БД, к сожалению не нашел как перенастроить. Потому что отчеты строиться из разных баз, но с одинаковой структурой. 
49
Хай!
Несколько неверно делаешь, смотри что происходит:
Ты сделал модели, отфильтровал (с помощью where id=..) твой customers и потом отдал модели в LR.
У тебя в отчете будут "замороженная" в моменте модель, с тем фильтром, который был применен на момент передачи ее (модели) в отчет.

Что нужно:
2 варианта:

1. использовать callBackDataSource - в docs/Руководство пользователя.pdf довольно подробно есть про это.
2. Твою customers модель полноценно создать в самом отчете LR, как subdetail. См. вкладку Datasources в дизайнере отчетов.
50
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.
Добавление данных происходит через внешний источник данных.

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 или есть другие варианты? 
Pages: 1 ... 3 4 [5] 6 7 ... 10