首页 > 解决方案 > Navision SSRS IIF 在为 TRUE 时执行 Else?

问题描述

(改写问题)

我无法在页脚中显示图像。问题是,我尝试将图像从数据库转换为 Base64 字符串。如果获取图像正在工作,但如果在 db 中为空值,则文本字段将显示 #ERROR。

IIF(IsNothing(Fields!Company_Picture.Value), "", Convert.ToBase64String(Fields!Company_Picture.Value))

我预计在 IsNothing = True 的情况下不会执行 else 树。但在报告中,如果没有图像,则文本字段始终显示#ERROR。

解决方案是:

Public Function Base64String(ByVal img() as byte)
  if not isNothing(img) then
    Return Convert.ToBase64String(img)
  end if
  Return ""
end function

谢谢大家 :-)

---首先尝试解决我的问题,但它并没有完全解决主要问题---

我在报告代码部分共享 Data1 作为对象

Public Function GetData(Num as Integer, Group as integer) as Object
if Group = 1 then
   Return Cstr(Choose(Num, Split(Cstr(Data1),Chr(177))))
End If
End 

和相同的设置数据。

在数据库中,我有一个存储为 blob 的图像。报告中的直接显示正在工作。现在我必须在报告的页脚中显示图像。我制作了一个表格,在一个单元格内我使用隐藏的表达式将图像插入到对象中。

这是现在的问题。我试着用

Code.SetData(IIF(IsNothing(First(Fields!CompanyPicture.Value, "DataSet_Result")) = TRUE, "", Convert.ToBase64String(Fields!CompanyPicture.Value) + Chr(177), 1)

报表现在在此表达式上崩溃,因为隐藏表达式不能为 NULL。我不明白,为什么从 IIF 执行 else 树。IsNothing 工作正确并给我 True。

如果图像为空,我能做什么?

标签: imagereporting-servicesreportnavision

解决方案


我要说的第一件事是风格问题:我永远不会检查某事是否等于真的。就写吧IIf(isNothing(...), "", ...)

其次,您只检查数据集中的第一个条目是否不是空的,而是为数据集中的每个条目调用 convert 方法。因此,例如,如果您的数据集有两个条目,其中第一个不是什么都不是,而第二个是,则在评估第二个条目的表达式时会遇到问题。


推荐阅读