#reporting-services #ssrs-2008 #ssrs-2008-r2 #ssrs-tablix
#службы отчетов #ssrs-2008 #ssrs-2008-r2 #ssrs-tablix
Вопрос:
В моем отчете SSRS я хочу, чтобы текстовое поле PolDiscountPerc из моего запроса оставалось пустым, когда PolStockCode в строке пуст или пустая строка, однако, если PolStockCode содержит значение, отформатируйте текстовое поле PolDiscountPerc, чтобы отобразить его в процентах.
=IIF(IsNothing(Fields!PolStockCode.Value) or Fields!PolStockCode.Value is "", "",(Format(Fields!PolDiscountPerc.Value, "0.00") amp; "%"))
Проблема с следующим запросом заключается в том, что он либо ничего не делает, либо устанавливает текстовое поле пустым для каждой строки в таблице, несмотря на то, что большинство из них содержат код PolStockCode. Где я ошибся?
Ответ №1:
is
может использоваться только для сравнения с nothing
. вам необходимо использовать =
.
=IIF(IsNothing(Fields!PolStockCode.Value) or Fields!PolStockCode.Value = "", "",(Format(Fields!PolDiscountPerc.Value, "0.00") amp; "%"))
Комментарии:
1. Я пробовал это раньше, и он не очищает записи, где PolStockCode пуст. Я забыл упомянуть, что у меня есть родительская группа в PolStockCode, но я не думаю, что это имеет значение.
Ответ №2:
Можете ли вы попробовать это, удалив is
to =
и превратив выражение в единый блок ()
.
=IIF
(
(IsNothing(Fields!PolStockCode.Value) or Fields!PolStockCode.Value = "")
, ""
,(Format(Fields!PolDiscountPerc.Value, "0.00") amp; "%")
)
Или вы можете отформатировать процент извне:
=IIF
(
(IsNothing(Fields!PolStockCode.Value) or Fields!PolStockCode.Value = "")
, ""
,Fields!PolDiscountPerc.Value)
)
Ответ №3:
Я совершенно забыл, что это поле nchar в базе данных, и оно не будет пустой строкой.
Поэтому это решило мою проблему
=IIF((IsNothing(Fields!PolPMStockCode.Value) or Len(Trim(Fields!PolPMStockCode.Value)) = 0), "", Fields!PolDiscountPerc.Value)