LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: maxika on July 24, 2023, 09:49:29 AM

Title: Источник QAbstractDataModel
Post by: maxika on July 24, 2023, 09:49:29 AM
Здравствуйте, подскажите пожалуйста.
В документации Lime Report сказано, что источником данных
для репорта может быть QAbstractDataModel.
И модель передается следующим образом:
report->dataManager()->addModel("abstract_model",model,true);
Вопрос в том, как Lime Report принимает эту модель в дизайнере.
Какие функции для подключения этой модели внутри самого дизайнера.
Подскажите пожалуйста.
Title: Re: Источник QAbstractDataModel
Post by: Subst on July 24, 2023, 10:16:38 AM
ну у тебя в истониках данных появится твоя модель под именем "abstract_model"
это ж очевидно
 ;D
Title: Re: Источник QAbstractDataModel
Post by: Arin Alex on July 24, 2023, 11:33:22 AM
Для лучшего понимания принципов работы LimeReport, можно глянуть пример использования demo_r1, лежит в исходниках.
Для взаимодействия дизайнера с моделью - подключаете модель и вызываете дизайнер, эта модель становится доступной в дизайнере (В случае если дизайнер часть вашего ПО).   
Title: Re: Источник QAbstractDataModel
Post by: maxika on July 24, 2023, 11:50:32 AM
У меня дизайнер, это самостоятельная программа.
Моя программа, отдельна от дизайнера.
Я не могу понять, как в дизайнере подцепить-обозначить мою QAbstractDataModel.
В дизайнере, чтобы сформировать отчет, мне нужны поля из моей модели.
Дизайнер не может видеть поля, если модель не указать в дизайнере.
А как указать модель в дизайнере, никак не пойму.
Title: Re: Источник QAbstractDataModel
Post by: Arin Alex on July 24, 2023, 12:12:36 PM
Ну если дизайнер отдельно то он однозначно модель не увидит :)
Поэтому только руками прописывать $D{ИмяМодели.ИмяПоля}
Ну и никакого предварительного просмотра из дизайнера.
А что мешает впилить дизайнер в Ваше ПО?
Title: Re: Источник QAbstractDataModel
Post by: maxika on July 25, 2023, 12:39:18 PM
Да вы правы.
Спасибо вам большое, за подсказку  :)
Title: Re: Источник QAbstractDataModel
Post by: maxika on July 28, 2023, 07:30:03 PM
Еще появился вопрос.
Открываю LimeReport Designer, который я вставил в свой проект.
Передаю QAbstractTableModel внутрь дизайнера.
m_report.dataManager()->addModel("abstract_model",model,true);

Абстрактная модель действительно появляется внутри дизайнера со всеми нужными полями.
Поля перекидываю в DataBand1, в бэнд где должны отображаться данные.
НО. При запуске репорта (режим просмотра) появляется только одна-первая строка
QAbstractTableModel.
И при вызове скомпилированного протокола, присутствует только одна-первая строка модели.
Вопрос, почему не показываются все строки модели ?

Title: Re: Источник QAbstractDataModel
Post by: Arin Alex on July 29, 2023, 01:18:00 AM
Проверьте, что в datasource у DataBand указана ваша абстрактная модель.
Title: Re: Источник QAbstractDataModel
Post by: maxika on July 29, 2023, 08:23:40 PM
Спасибо вам большое, вы совершенно правы.
В datasorse данные были прописаны автоматом с названием первого поля,
сделал коррекцию на чистое указание модели, без всякого поля.
И все супер заработало.
Спасибо  :)
Title: Re: Источник QAbstractDataModel
Post by: maxika on July 30, 2023, 08:31:30 PM
Но возник еще один вопрос.
Относительно суммы двух столбцов в ReportFooter.
Когда передаю данные в LimeReport при помощи SQL запроса, то сумма
двух столбцов, вычисляется хорошо при помощи простого выражения:
$S{SUM($S{$D{table1.Tarif}+$D{table1.Nadbavka}},"SubDetailBand1")}

Но тоже самое выражение не работает при передаче в LimeReport абстрактной модели:
$S{SUM($S{$D{abstract_model.Тариф}+$D{abstract_model.Надбавка}},"SubDetailBand1")}
Выдает вообще непонятное числовое значение.

Скажите пожалуйста, в чем ошибка ?
Title: Re: Источник QAbstractDataModel
Post by: maxika on July 30, 2023, 08:49:52 PM
Похоже я догадался.
Внутри моей модели все данные на вывод в таблицу имеют строковый тип данных.
// строки модели
QVector <QVector <QString> > dataRows;
А для вычисления должны иметь числовые значения.
Нужно модель переделывать.