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

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

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

Сообщение Quirco » 20 сен 2021, 12:49

Добрый день,
В источнике данных 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 КБ) 21 скачивание
Ivan
Сообщения: 636
Зарегистрирован: 10 авг 2006, 01:40

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

Сообщение Ivan » 21 сен 2021, 18:32

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

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

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

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

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

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

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

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

Сообщение Quirco » 22 сен 2021, 09:42

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

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

Сообщение Aleksey » 22 сен 2021, 10:33

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

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

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

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

Сообщение Quirco » 22 сен 2021, 11:48

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

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

Сообщение Aleksey » 22 сен 2021, 12:45

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

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