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

Author Topic: Вопросы новичка  (Read 83230 times)

eustace

  • Newbie
  • *
  • Posts: 9
    • View Profile
Re: Вопросы новичка
« Reply #450 on: October 27, 2022, 06:59:06 PM »
а from_date и to_date для полноты картины?
из программы задаются?
ага.
мимоходом...
для доступа к полю таблицы можно так делать
$D{table_name.field_name}

так короче и удобней



да просто у меня была функция на javascripte в одном из прошлых отчетов, и она должна была преобразовывать значения полей из БД, поэтому я использовал такую форму. А так как на основе того отчета, делал этот отчет, такой формат получения данных остался, хотя он здесь и не нужен.

eustace

  • Newbie
  • *
  • Posts: 9
    • View Profile
Re: Вопросы новичка
« Reply #451 on: October 28, 2022, 02:59:02 PM »
От части понял в чем проблема: при переходе (переносе данных отчета) на следующую страницу не учитывается информация о динамически изменившейся высоте элементов, как в заголовках, которые находятся в репорт хеадере, так и в основной таблице с данными в дата бэнде (которые в horizontal layout). Генератор отчетов, видимо, рассчитывает, сколько строк из таблицы уместится на одной странице, учитывая только заданные изначально размеры. Т.е. высота строки изначально была 5 mm в таблице с данными и 10 mm в заголовках таблицы. Но с реальными данными эта высота увеличивается в несколько раз. В итоге, генератор считает, что n-ое количество строк поместится на одной странице, но они, увеличившись по высоте, выходят за ее пределы. Временно решил эту проблему увеличением изначальных высот строк в шаблоне до максимальной возможной (какую они смогут принимать). Правда тогда строки, в которых объемных (в высоту) данных нет, занимают даром много места на странице отчета.
А вторую проблему с самопроизвольным перескакиванием столбцов пока не решил. Правда заметил, что столбцы поменялись местами только в шапке. Т.е. поменялись только заголовки (c2, c24, c1) вместо (c1, c2, c24), а столбцы в дата бэнде идут в правильном порядке (c1, c2, c24)
« Last Edit: October 28, 2022, 03:49:12 PM by eustace »

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 973
    • View Profile
Re: Вопросы новичка
« Reply #452 on: October 28, 2022, 04:10:22 PM »
eustace,
Quote
От части понял в чем проблема: при переходе (переносе данных отчета) на следующую страницу не учитывается информация о динамически изменившейся высоте элементов
Генератор заранее не вычисляет количество строк, а наполняет элементами до полного заполнения пространства. Единственный элемент, который вычисляется заранее это футер страницы, вот он не способен кардинально менять свой размер. Ваш случай надо исследовать отдельно. Если вы сможете подготовить тестовые данные и прислать мне на почту (Arin_a@bk.ru) я попробую найти время и глянуть. Ваша задача хорошо решается через кросс таблицы, но в лайме на данный момент такой элемент не реализован.

eustace

  • Newbie
  • *
  • Posts: 9
    • View Profile
Re: Вопросы новичка
« Reply #453 on: October 28, 2022, 05:12:38 PM »
Здравствуйте Arin Alex, спасибо, отправил вам на почту. Продублирую тут тоже.

mydb.db - файл БД SQLite с тестовыми данными.
template.lrxml - шаблон отчета.
test2.sql - файл дампа БД (на всякий случай).

Lex

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #454 on: January 17, 2023, 07:39:53 AM »
Arin Alex, форумчане, доброго времени!

Подскажите, я правильно понял, что limereport не воспринимает стандартный xml файл, только свой формат lrxml через loadFromFile()?

Перечитал форум еще раз, уже будучи зарегистрированным (смог смотреть вложения), показалось, что теперь более менее разобрался как работать с LimeReport...

Укажите, если не прав, пожалуйста:

1. Создаем модель

2. Заполняем модель данными (?)

3. Открываем дизайнер отчетов с подключенной моделью и делаем шаблон отчета, сохраняем его
Code: [Select]
report->dataManager()->addModel("test123", model, true);
report->designReport();

4. Теперь можно без открытия дизайнера, сразу вызывать превью (при условии подключенной модели и загруженного шаблона)
Code: [Select]
report->dataManager()->addModel("test123", model, true);
report->loadFromFile("D:/projects/test_rpt_lemon/build-test_rpt_lemon-Desktop_Qt_5_12_10_MinGW_64_bit-Debug/123.lrxml");
report->previewReport();

« Last Edit: January 18, 2023, 06:08:42 AM by Lex »

Lex

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #455 on: January 17, 2023, 02:08:37 PM »
И, еще один вопрос)
Пытаюсь сформировать в дизайнере шаблон отчета для таблицы, нужно получить что-то очень похожее на то, что изображено на скрине (прикрепил)
У меня не получается сделать такой формат заливок фона, я нашел не весь функционал, или действительно нельзя так сделать?

Помимо заливок фона интересует в целом вывод таблицы со всем вытекающим: настройка толщины границ ячеек и прочее. Видимо нельзя?
« Last Edit: January 18, 2023, 01:59:58 PM by Lex »

Lex

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #456 on: January 18, 2023, 10:14:52 AM »
Снова вопросы. Можно ли добавленную модель данных QStringListModel вывести в отчете не по вертикали, а по горизонтали? Мне нужно список данных вывести по горизонтали, не могу разобраться, возможно ли это...
« Last Edit: January 18, 2023, 01:59:46 PM by Lex »

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 973
    • View Profile
Re: Вопросы новичка
« Reply #457 on: January 19, 2023, 02:26:33 AM »
Lex,
Quote
Снова вопросы. Можно ли добавленную модель данных QStringListModel вывести в отчете не по вертикали, а по горизонтали? Мне нужно список данных вывести по горизонтали, не могу разобраться, возможно ли это...
Я по горизонтали это как :) Можно пример?
Quote
Помимо заливок фона интересует в целом вывод таблицы со всем вытекающим: настройка толщины границ ячеек и прочее. Видимо нельзя?
В limereport как таковое понятие таблицы отсутствует, таблица собирается из ячеек содержащих данные, соответственно на скриптах можно реализовать довольно разнообразное отображение этих ячеек
Quote
1. Создаем модель
2. Заполняем модель данными (?)
3. Открываем дизайнер отчетов с подключенной моделью и делаем шаблон отчета, сохраняем его
4. Теперь можно без открытия дизайнера, сразу вызывать превью (при условии подключенной модели и загруженного шаблона)

В целом, да :)

Lex

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #458 on: January 19, 2023, 06:35:59 AM »
Arin Alex,
Quote
Я по горизонтали это как :) Можно пример?
Да, конечно, приложил

Quote
...соответственно на скриптах можно реализовать довольно разнообразное отображение этих ячеек
А можно немного подсказки, где почитать про скрипты? А то я пока только на форуме поиском нашел немного инфы по ним, но этого определенно мало :)
Получается с помощью скриптов можно запретить выводить все данные ячейки? Например, попросить вывести только первое значение ячейки данных, либо только N-е.

Еще есть подозрения на баг, либо мое непонимание. При настройке бэнда (databand) устанавливаю ему галочки на все границы (мне надо что бы бэнд был в рамке), однако ячейка с данными, находящаяся внутри этого бэнда, так же окружается рамками, при чем каждое поле этой ячейки  :( Приложил в закрепе

Спасибо за ответ!
« Last Edit: January 19, 2023, 06:42:36 AM by Lex »

Lex

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #459 on: January 23, 2023, 12:41:39 PM »
Друзья, подскажите, пожалуйста, как можно с помощью скриптов настроить дизайн отображения данных? Задать фон у ячейки, да так что бы на первом элементе данных был один фон, на втором - другой, на третьем - третий и т.д. Перерыл весь форум и, как-то нет ответов, только вопросы по типу моего.

Subst

  • Sr. Member
  • ****
  • Posts: 421
    • View Profile
Re: Вопросы новичка
« Reply #460 on: January 24, 2023, 06:01:14 AM »
А че посмотреть в исходниках лаймы??
Code: [Select]
\demo_r1\demo_reports\change_item_from_script.lrxml
Code: [Select]
var color = LimeReport.color('#DEB887');
THIS.backgroundColor = color;

Lex

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #461 on: January 24, 2023, 06:24:15 AM »
Subst, спасибо большое!
Теперь знаю где смотреть. Только код смотрел, папку с шаблонами не замечал даже...
Сам глуп, спасибо за ответ, еще раз!

P.S. и все же, как выбрать не по значению строки, а именно по позиции значения?
что-то типа:
Code: [Select]
if ($D{customers.CustomerID}.position == 4)
{
'<span style="background:black; color:red; font-weight:bold ">' + $D{customers.CustomerID} + '</span>'
}

UPD:
Сделал вот таким способом, оставлю тут, вдруг кому понадобится:
Code: [Select]
$S{
if (line('DataBand1') == 4)
{
'<span style="background:black; color:red; font-weight:bold ">' + $D{customers.CustomerID} + '</span>'
}
else
{
$D{customers.CustomerID}
}
}
« Last Edit: January 24, 2023, 08:19:18 AM by Lex »

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 973
    • View Profile
Re: Вопросы новичка
« Reply #462 on: January 24, 2023, 01:40:26 PM »
Lex, Приветствую ! Отвечаю с большими задержками :( Шибко много работы и слишком мало времени :(

Quote
Еще есть подозрения на баг, либо мое непонимание. При настройке бэнда (databand) устанавливаю ему галочки на все границы (мне надо что бы бэнд был в рамке), однако ячейка с данными, находящаяся внутри этого бэнда, так же окружается рамками, при чем каждое поле этой ячейки  :(
Возможно проблема в масштабировании попробуйте вывести на печать или увеличить масштаб.
Для организации таблиц удобно использовать горизонтальную группировку и границы выставлять у самих ячеек, впрочем, у самой группировки это тоже можно сделать.
В качестве лайфхака: в инициализационном скрипте можно инициализировать переменные и потом использовать их в обработчиках событий генератора и при отрисовке элементов.

Инициализационный скрит
Code: [Select]
var c_line = 1
function afterRender(){
c_line ++
}
Reportpage1_DataBand1.afterRender.connect(afterRender)
 

Отрисовка
Code: [Select]
$S{
switch(c_line){
case 1:
THIS.backgroundColor = LimeReport.color("#ff4d94")
break
case 2:
THIS.backgroundColor = LimeReport.color("#809fff")
break
case 3:
THIS.backgroundColor = LimeReport.color("#66ffc2")
break
}
c_line
}

Пример отчета во вложении