LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: maxika on July 24, 2023, 09:49:29 am
-
Здравствуйте, подскажите пожалуйста.
В документации Lime Report сказано, что источником данных
для репорта может быть QAbstractDataModel.
И модель передается следующим образом:
report->dataManager()->addModel("abstract_model",model,true);
Вопрос в том, как Lime Report принимает эту модель в дизайнере.
Какие функции для подключения этой модели внутри самого дизайнера.
Подскажите пожалуйста.
-
ну у тебя в истониках данных появится твоя модель под именем "abstract_model"
это ж очевидно
;D
-
Для лучшего понимания принципов работы LimeReport, можно глянуть пример использования demo_r1, лежит в исходниках.
Для взаимодействия дизайнера с моделью - подключаете модель и вызываете дизайнер, эта модель становится доступной в дизайнере (В случае если дизайнер часть вашего ПО).
-
У меня дизайнер, это самостоятельная программа.
Моя программа, отдельна от дизайнера.
Я не могу понять, как в дизайнере подцепить-обозначить мою QAbstractDataModel.
В дизайнере, чтобы сформировать отчет, мне нужны поля из моей модели.
Дизайнер не может видеть поля, если модель не указать в дизайнере.
А как указать модель в дизайнере, никак не пойму.
-
Ну если дизайнер отдельно то он однозначно модель не увидит :)
Поэтому только руками прописывать $D{ИмяМодели.ИмяПоля}
Ну и никакого предварительного просмотра из дизайнера.
А что мешает впилить дизайнер в Ваше ПО?
-
Да вы правы.
Спасибо вам большое, за подсказку :)
-
Еще появился вопрос.
Открываю LimeReport Designer, который я вставил в свой проект.
Передаю QAbstractTableModel внутрь дизайнера.
m_report.dataManager()->addModel("abstract_model",model,true);
Абстрактная модель действительно появляется внутри дизайнера со всеми нужными полями.
Поля перекидываю в DataBand1, в бэнд где должны отображаться данные.
НО. При запуске репорта (режим просмотра) появляется только одна-первая строка
QAbstractTableModel.
И при вызове скомпилированного протокола, присутствует только одна-первая строка модели.
Вопрос, почему не показываются все строки модели ?
-
Проверьте, что в datasource у DataBand указана ваша абстрактная модель.
-
Спасибо вам большое, вы совершенно правы.
В datasorse данные были прописаны автоматом с названием первого поля,
сделал коррекцию на чистое указание модели, без всякого поля.
И все супер заработало.
Спасибо :)
-
Но возник еще один вопрос.
Относительно суммы двух столбцов в ReportFooter.
Когда передаю данные в LimeReport при помощи SQL запроса, то сумма
двух столбцов, вычисляется хорошо при помощи простого выражения:
$S{SUM($S{$D{table1.Tarif}+$D{table1.Nadbavka}},"SubDetailBand1")}
Но тоже самое выражение не работает при передаче в LimeReport абстрактной модели:
$S{SUM($S{$D{abstract_model.Тариф}+$D{abstract_model.Надбавка}},"SubDetailBand1")}
Выдает вообще непонятное числовое значение.
Скажите пожалуйста, в чем ошибка ?
-
Похоже я догадался.
Внутри моей модели все данные на вывод в таблицу имеют строковый тип данных.
// строки модели
QVector <QVector <QString> > dataRows;
А для вычисления должны иметь числовые значения.
Нужно модель переделывать.