Недавно появилась задача отобразить в отчете FastReport содержимое BLOB поля, которое заполняется в MemoDataControl.
Оказалось это задача требует определенных преобразований. Опишу алгоритм реализации на примере добавления в отчет поля «Детальное решение» из карточки [Инцидент].
Последовательность действий:
1. Открыть датасет отчета. Добавить вычисляемое поле с типом строка. Указать название, например, Solution:
2. Создать обработчик события OnDatasetCalcFields:
В теле функции обработки события необходимо прописать код:
Stream.Open();
Stream.Type = 2;
var DataField = Dataset.DataFields('DetailedSolution');
DataField.GetValAsBlob(Stream);
Stream.Position = 0;
var Text = Stream.ReadText();
Stream.Close();
Dataset.ValAsStr('Solution') = Text;
Где 'DetailedSolution' - BLOB поле, 'Solution' – вычисляемое поле.
3. Отрыть сервис отчета. Добавить Text Object, связать его с вычисляемым полем:
4. Сохранить изменения. Проверить работу отчета.
Сделал все как описано, но вылетает ошибка:
В чем может быть проблема?
Terrasoft CRM_v3.4.0.130
Ошибка устранена в ходе сеанса удаленного доступа. Причина ошибки: был добавлен компонент MasterData с привязкой к одному датасету, а поле внутри MasterData обращалось к другому датасету.
"Бондарь Наталия" написал:Ошибка устранена в ходе сеанса удаленного доступа. Причина ошибки: был добавлен компонент MasterData с привязкой к одному датасету, а поле внутри MasterData обращалось к другому датасету.
Спасибо за помощь :)