У меня возникла странная проблема с отчетом SSRS, когда отчет, экспортированный в файл PDF, не соответствовал отчету, отображаемому в средстве просмотра отчетов на веб-странице. Средство просмотра отчетов отображало правильные данные, но некоторые данные в файле PDF были выдернуты и заменены другой группой элементов, извлеченных из одного и того же табликса, поэтому группа, которая заменила отсутствующий элемент, была напечатана в двух местах, 1-й раз, когда он был извлечен до положение, в котором ожидался отсутствующий элемент, и второй раз, где он должен быть. После воспроизведения проблемы с Visual Studio я исключил возможность того, что что-то может быть не так со средой. Я также проверил, нет ли проблем с недвижимостью, нет перекрывающихся макетов или размеров. Наконец, я смог сузить проблему до конкретного Textbox1, который не имеет ничего общего с разделом, в котором возникла проблема, и реорганизовать его выражение «IIF», и он исправил отчет, но я не могу полностью понять, почему исходный код вызывал проблему, и мой код исправил это. Я подозреваю, что это происходит из-за побочного эффекта во время преобразования типа "Cstr", поскольку выражение "IIF" оценивается для обеих частей, true и false, но не ясно, почему эта проблема была скрытой до визуализации. Другими словами, я хотел бы убедиться, что исправление является надежным, особенно потому, что проблема возникла только тогда, когда отчет был запущен с определенными параметрами.
Отчет состоит из нескольких текстовых полей в двух столбцах, за которыми следуют 3 матрицы табликса: Текстовые поля: Текстовое поле1
Текстовое поле2
...
Текстовое поле9
Табликс1 <- разница была в этом текстовом поле Табликс2 Табликс3 </p>
ORIGINAL выражение в Textbox1
="Order: " & Cstr(Parameters!OrderId.Value) & "-" & Parameters!DayIndex.Value +
IIF(
Not(IsNothing(Lookup(Parameters!OrderId.Value, Fields!OrderNumber.Value, Fields!ParentOrderNumber.Value, "dataDirectBill"))),
" (Original Order: " + Cstr(Lookup(Parameters!OrderId.Value, Fields!OrderNumber.Value, Fields!ParentOrderNumber.Value, "dataDirectBill")) + ")" ,
""
)
MY FIX Добавить переменную отчета: ParentOrderId =Lookup(Parameters!OrderId.Value, Fields!OrderNumber.Value, Fields!ParentOrderNumber.Value, "dataDirectBill")
Изменено выражение в (Textbox1) для :
="Order: " & Cstr(Parameters!OrderId.Value) & "-" & Parameters!DayIndex.Value +
IIF(Variables!ParentOrderId.Value Is Nothing,
"",
" (Original Order: " + Cstr(Variables!ParentOrderId.Value) + ")"
)