Navision SSRS IIF在为真时执行Else?



(重写问题(

我无法在页脚中显示图像。问题是,我尝试将图像从数据库转换为 Base64 字符串。在获取的情况下,图像正在工作,但如果在数据库中是一个空值,则文本字段显示 #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

谢谢大家:-(

---首先尝试解决我的问题,但它并没有准确地解决主要问题---

我在报告代码部分有 共享数据 1 作为对象

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。

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

以及@Schlaagi回答中的评论。IIF 始终评估真假结果,因此除非您正确适应这种情况,否则它将失败。

我不知道 SetData 函数是做什么的,自从我使用 Convert.ToBase64String 以来已经有一段时间了,但看看这个,看看它是否有意义。

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

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

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

最新更新