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

Author Topic: Источник QAbstractDataModel  (Read 4598 times)

maxika

  • Newbie
  • *
  • Posts: 15
    • View Profile
Источник QAbstractDataModel
« on: July 24, 2023, 09:49:29 am »
Здравствуйте, подскажите пожалуйста.
В документации Lime Report сказано, что источником данных
для репорта может быть QAbstractDataModel.
И модель передается следующим образом:
report->dataManager()->addModel("abstract_model",model,true);
Вопрос в том, как Lime Report принимает эту модель в дизайнере.
Какие функции для подключения этой модели внутри самого дизайнера.
Подскажите пожалуйста.

Subst

  • Sr. Member
  • ****
  • Posts: 450
    • View Profile
Re: Источник QAbstractDataModel
« Reply #1 on: July 24, 2023, 10:16:38 am »
ну у тебя в истониках данных появится твоя модель под именем "abstract_model"
это ж очевидно
 ;D

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Источник QAbstractDataModel
« Reply #2 on: July 24, 2023, 11:33:22 am »
Для лучшего понимания принципов работы LimeReport, можно глянуть пример использования demo_r1, лежит в исходниках.
Для взаимодействия дизайнера с моделью - подключаете модель и вызываете дизайнер, эта модель становится доступной в дизайнере (В случае если дизайнер часть вашего ПО).   

maxika

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Источник QAbstractDataModel
« Reply #3 on: July 24, 2023, 11:50:32 am »
У меня дизайнер, это самостоятельная программа.
Моя программа, отдельна от дизайнера.
Я не могу понять, как в дизайнере подцепить-обозначить мою QAbstractDataModel.
В дизайнере, чтобы сформировать отчет, мне нужны поля из моей модели.
Дизайнер не может видеть поля, если модель не указать в дизайнере.
А как указать модель в дизайнере, никак не пойму.

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Источник QAbstractDataModel
« Reply #4 on: July 24, 2023, 12:12:36 pm »
Ну если дизайнер отдельно то он однозначно модель не увидит :)
Поэтому только руками прописывать $D{ИмяМодели.ИмяПоля}
Ну и никакого предварительного просмотра из дизайнера.
А что мешает впилить дизайнер в Ваше ПО?

maxika

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Источник QAbstractDataModel
« Reply #5 on: July 25, 2023, 12:39:18 pm »
Да вы правы.
Спасибо вам большое, за подсказку  :)

maxika

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Источник QAbstractDataModel
« Reply #6 on: July 28, 2023, 07:30:03 pm »
Еще появился вопрос.
Открываю LimeReport Designer, который я вставил в свой проект.
Передаю QAbstractTableModel внутрь дизайнера.
m_report.dataManager()->addModel("abstract_model",model,true);

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


Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Источник QAbstractDataModel
« Reply #7 on: July 29, 2023, 01:18:00 am »
Проверьте, что в datasource у DataBand указана ваша абстрактная модель.

maxika

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Источник QAbstractDataModel
« Reply #8 on: July 29, 2023, 08:23:40 pm »
Спасибо вам большое, вы совершенно правы.
В datasorse данные были прописаны автоматом с названием первого поля,
сделал коррекцию на чистое указание модели, без всякого поля.
И все супер заработало.
Спасибо  :)

maxika

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Источник QAbstractDataModel
« Reply #9 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")}
Выдает вообще непонятное числовое значение.

Скажите пожалуйста, в чем ошибка ?

maxika

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Источник QAbstractDataModel
« Reply #10 on: July 30, 2023, 08:49:52 pm »
Похоже я догадался.
Внутри моей модели все данные на вывод в таблицу имеют строковый тип данных.
// строки модели
QVector <QVector <QString> > dataRows;
А для вычисления должны иметь числовые значения.
Нужно модель переделывать.