В источнике данных на основе источника данных невозможно использовать колонку из связи

Обсуждение Stimulsoft Reports.WPF
Ответить
Quirco
Сообщения: 148
Зарегистрирован: 22 авг 2016, 11:12

В источнике данных на основе источника данных невозможно использовать колонку из связи

Сообщение Quirco »

Добрый день,
В источнике данных DataSource2 (созданном на основе источника данных Лист1), невозможно использовать колонки из связи источника данных Лист1:
  1. Добавляем в источник данных Лист1 связь (Screenshot_1.jpg)
  2. Создаем источнике данных DataSource2 на основе Лист1 (Screenshot_2.jpg)
  3. В результаты добавляем сумму по колонке Name.price.Sum из связи родительского источника (Screenshot_3.jpg). Но проблема в том, что эта колонка не работает (в ней всегда 0 Screenshot_2.jpg)
Все файлы прикладываю во вложении.
Пожалуйста подскажите в чем дело. Спасибо.
Вложения
Test.7z
(269.41 КБ) 118 скачиваний
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: В источнике данных на основе источника данных невозможно использовать колонку из связи

Сообщение Ivan »

Здравствуйте.

Вы столкнулись с одной из особенностей нашего движка.
При построении отчёта подключение данных происходит в таком порядке:
- получаются данные из внешних источников (таблицы со связями между ними) и помещаются в один общий dataSet;
- рассчитываются виртуальные источники данных, и помещаются в этот же dataSet;
- в dataSet добавляются связи, которые были созданы в словаре вручную.
Связи добавляются в самом конце, когда уже созданы все таблицы. Это ограничение самого dataSet - связь можно добавить только между уже существующими таблицами.

В данном случае у вас задана связь между источником Excel и виртуальным источником DataSource1.
На момент расчёта виртуальных источников связи ещё не заданы, поэтому данные через связь получить невозможно, и DataSource2, который использует эту связь, рассчитывается некорректно.

Для решения данной проблемы можно поступить так: в событии BeginRender первой страницы отчёта можно написать такой скрипт:

Код: Выделить всё

Dictionary.ConnectVirtualDataSources();
Данный скрипт вызовет повторный перерасчёт виртуальных источников.
Т.к. на момент его работы все связи уже будут добавлены, то и DataSource2 рассчитается корректно.

Спасибо.
Quirco
Сообщения: 148
Зарегистрирован: 22 авг 2016, 11:12

Re: В источнике данных на основе источника данных невозможно использовать колонку из связи

Сообщение Quirco »

Добрый день.
Добавил в BeginRender как Вы и написали, ничего не поменялось, подскажите пожалуйста в чем проблема. Не могли бы Вы показать это на моем примере (mrt в первом сообщении).
Вложения
Screenshot_6.jpg
Screenshot_6.jpg (178.53 КБ) 1443 просмотра
Aleksey
Сообщения: 2752
Зарегистрирован: 22 апр 2010, 06:57

Re: В источнике данных на основе источника данных невозможно использовать колонку из связи

Сообщение Aleksey »

Здравствуйте,

Пожалуйста, уточните версию. Также, проверьте последний билд.

Спасибо.
Вложения
Screenshot 2021-09-22 123236.png
Screenshot 2021-09-22 123236.png (154.83 КБ) 1441 просмотр
Quirco
Сообщения: 148
Зарегистрирован: 22 авг 2016, 11:12

Re: В источнике данных на основе источника данных невозможно использовать колонку из связи

Сообщение Quirco »

Добрый день. Спасибо большое, на новой версии все отработало.
Aleksey
Сообщения: 2752
Зарегистрирован: 22 апр 2010, 06:57

Re: В источнике данных на основе источника данных невозможно использовать колонку из связи

Сообщение Aleksey »

Здравствуйте,

Отлично! Пожалуйста.
Ответить