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

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - eustace

Pages: [1]
1
Discussion | Обсуждение / Re: Вопросы новичка
« on: October 28, 2022, 05:12:38 PM »
Здравствуйте Arin Alex, спасибо, отправил вам на почту. Продублирую тут тоже.

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

2
Discussion | Обсуждение / Re: Вопросы новичка
« on: October 28, 2022, 02:59:02 PM »
От части понял в чем проблема: при переходе (переносе данных отчета) на следующую страницу не учитывается информация о динамически изменившейся высоте элементов, как в заголовках, которые находятся в репорт хеадере, так и в основной таблице с данными в дата бэнде (которые в horizontal layout). Генератор отчетов, видимо, рассчитывает, сколько строк из таблицы уместится на одной странице, учитывая только заданные изначально размеры. Т.е. высота строки изначально была 5 mm в таблице с данными и 10 mm в заголовках таблицы. Но с реальными данными эта высота увеличивается в несколько раз. В итоге, генератор считает, что n-ое количество строк поместится на одной странице, но они, увеличившись по высоте, выходят за ее пределы. Временно решил эту проблему увеличением изначальных высот строк в шаблоне до максимальной возможной (какую они смогут принимать). Правда тогда строки, в которых объемных (в высоту) данных нет, занимают даром много места на странице отчета.
А вторую проблему с самопроизвольным перескакиванием столбцов пока не решил. Правда заметил, что столбцы поменялись местами только в шапке. Т.е. поменялись только заголовки (c2, c24, c1) вместо (c1, c2, c24), а столбцы в дата бэнде идут в правильном порядке (c1, c2, c24)

3
Discussion | Обсуждение / Re: Вопросы новичка
« on: October 27, 2022, 06:59:06 PM »
а from_date и to_date для полноты картины?
из программы задаются?
ага.
мимоходом...
для доступа к полю таблицы можно так делать
$D{table_name.field_name}

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



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

4
Discussion | Обсуждение / Re: Вопросы новичка
« on: October 27, 2022, 02:57:44 PM »
Subst,
Вот база для SQLite mydb.db.
Будет правда всего 4 столбца (даже 3).


Чтобы подключить, нужно создать два источника данных:
main  SELECT * FROM main;
caption SELECT * FROM caption;

Попробовал на винде (до этого был на линуксе) и с дргуим источником данных (SQLite, до этого был postgres), проблема остается.

И даже еще появилась новая проблема (при малом количестве столбцов заметил): столбцы стали меняться местами (должны идти в порядке (1, 2, 24), а идут (2, 24, 1).

Информация по БД:
Code: [Select]
CREATE TABLE main (fio varchar(20), c1 varchar(8), c2 varchar(8), c24 varchar(8));
INSERT INTO main VALUES('Ivanov','22:33:44','33:55"11','33:55:12');
.
.
.
INSERT INTO main VALUES('Ivanov13','22:33:44','33:55"11','33:55:12');
CREATE TABLE caption (c1 varchar(2), c2 varchar(2), c24 varchar(2), zc1 integer, zc0 integer);
INSERT INTO caption VALUES('1','2','24',2,1);
В таблице main данные для основной части отчета.
В таблице caption данные об именах столбцов и их количестве.
В шаблоне столбцы: фамилия, всего и еще от 0 до 30 столбцов с однообразными данными. Эти 30 столбцов в двух группах (Группа А и группа Б). В группу А могут входить столбцы с 1 по 23. В группу Б с 24 по 30.
В данном случае в таблице main 2 столбца из группы А c1 varchar(8 ), c2 varchar(8 ) и один столбец из группы Б c24 varchar(8 ).
В таблице caption столбец zc1 integer содержит информацию о том, сколько в данном случае столбцов в группе А (в данном случае 2), а столбец zc0 integer ту же информацию, но о группе Б (в данном случае 1). Ориентируясь на значения zc1 и zc0, шаблон скрывает лишние столбцы, изменяет размеры заголовков с названиями групп, и изменяет ширину данных из reportheader. (Вот тут еще появилась ошибка при маленьком количестве столбцов, они меняются местами).
Также в caption хранятся названия столбцов:
c1 varchar(2), c2 varchar(2), c24 varchar(2).


5
Discussion | Обсуждение / Re: Вопросы новичка
« on: October 27, 2022, 01:45:00 PM »
Вот так выглядит, если удалить горизонтальный лейаут в главном бенде.

6
Discussion | Обсуждение / Re: Вопросы новичка
« on: October 27, 2022, 01:15:57 PM »
Subst, к сожалению нет. Но методом пошагового удаления частей шаблона, я нашел, что ошибка кроется в horizontallayout в main data band. Если я удаляю его, то печать переходит на вторую и последующие страницы, но весь шаблон конечно "едет". Нашел на этом форуме похожую проблему, там она решалась выставлением для horizontallayout поля itemlocation в band, вместо page. Но у меня и так уже стоит band.

Вот так устанавливаю датасорс

Code: [Select]
report = new LimeReport::ReportEngine(this);

QSqlQueryModel* captionModel = new QSqlQueryModel(this);
captionModel->setQuery(QString("SELECT * FROM fn_report_captions() t;"));

QSqlQueryModel* mainModel = new QSqlQueryModel(this);
mainModel->setQuery(QString("SELECT * FROM fn_reports() t;"));

report->dataManager()->addModel("main", mainModel, true);
report->dataManager()->addModel("caption", captionModel, true);

report->loadFromFile(templateFileName);
report->setShowProgressDialog(true);

QPrinter printer(QPrinter::HighResolution);
printer.setOutputFileName(lFileName);

report->printReport(&printer);

7
Discussion | Обсуждение / Re: Вопросы новичка
« on: October 26, 2022, 06:33:43 PM »
Здравствуйте, не подскажите в чем может быть проблема? Печатается только первая страница отчета. Табличные данные просто идут до конца первой страницы, даже под номером страницы, а вторая страница не появляется. Вот шаблон и скриншот проблемы.

8
Discussion | Обсуждение / Re: Вопросы новичка
« on: August 10, 2022, 01:55:06 PM »
Subst, спасибо, работает.

9
Discussion | Обсуждение / Re: Вопросы новичка
« on: August 09, 2022, 06:37:37 PM »
Здравствуйте, подскажите, пожалуйста, как лучше сделать, чтобы выводить названия столбцов в начале каждой страницы отчета и при этом еще на самой первой странице в самом начале вывести заголовок отчета. Если названия столбцов я закреплю в pageHeader, чтобы они повторялись на каждой странице, то заголовок отчета из reportHeader получается будет ниже названия столбцов? Или можно сделать как-нибудь проверку на номер страницы и не показывать pageHeader с названиями столбцов для первой страницы, а запихнуть названия столбцов дял первой страницы под названием заголовка в reportHeader?

Pages: [1]