Выражение SSRS IIF

#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)