Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net IIF虚假表达影响真实性?_Vb.net_Reporting Services - Fatal编程技术网

Vb.net IIF虚假表达影响真实性?

Vb.net IIF虚假表达影响真实性?,vb.net,reporting-services,Vb.net,Reporting Services,我正在开发一份SSRS tablix报告,并努力从某些单元格中删除一些错误消息。单元格中的表达式如下所示: Public Shared Function RemoveDuplicates(ByVal items As Object()) As String() System.Array.Sort(items) Dim k As Integer = 0 For i As Integer = 0 To items.Length - 1 If i > 0 AndAlso items(i).Eq

我正在开发一份SSRS tablix报告,并努力从某些单元格中删除一些错误消息。单元格中的表达式如下所示:

Public Shared Function RemoveDuplicates(ByVal items As Object())  As String()
System.Array.Sort(items)
Dim k As Integer = 0
For i As Integer = 0 To items.Length - 1
If i > 0 AndAlso items(i).Equals(items(i - 1)) Then
Continue For
End If
items(k) = items(i)
k += 1
Next
Dim unique As [String]() = New [String](k - 1) {}
System.Array.Copy(items, 0, unique, 0, k)
Return unique
End Function
=Iif(IsNothing(First(Fields!Details.Value)),“”,Join(code.RemoveDuplicates(LookupSet(Fields!studytile.Value,Fields!studytile.Value,Fields!Link.Value,“DataSet1”)),vbCrLf))

引用的自定义函数如下所示:

Public Shared Function RemoveDuplicates(ByVal items As Object())  As String()
System.Array.Sort(items)
Dim k As Integer = 0
For i As Integer = 0 To items.Length - 1
If i > 0 AndAlso items(i).Equals(items(i - 1)) Then
Continue For
End If
items(k) = items(i)
k += 1
Next
Dim unique As [String]() = New [String](k - 1) {}
System.Array.Copy(items, 0, unique, 0, k)
Return unique
End Function
我遇到的问题是,如果在自定义函数中使用多个空值运行单元格,则输出中的单元格将显示“#ERROR”

初始IIF语句的目标是首先测试这些行,以确保函数仅应用于具有值的行,而其他单元格应为空。问题是,我仍然看到这些单元格的错误,就好像应用了错误条件一样

但是,如果我编辑IIF语句,使其具有相同的测试条件,但真实部分和虚假部分不同,即:

Iif(IsNothing(First(Details.Value)), "true", "false"))
然后我突然看到了我希望看到的正确和错误的行。如果是这种情况,那么我无法在我的初始语句中找出错误的来源

我知道问题一定出在RemovedUpplicates函数的某个地方,因为当我取出该部分并加入我的复制值时,我看不到任何错误,错误行与上面识别的相同


有没有人看到我遗漏的东西,导致IIf函数出现这种错误或看似不一致的行为

使用
If
而不是
IIf
If
构造计算快捷方式,而
IIf
计算所有表达式

=If(IsNothing(First(Fields!Details.Value)) , "", Join(Code.RemoveDuplicates(LookupSet(Fields!studyTitle.Value, Fields!studyTitle.Value, Fields!Link.Value ,"DataSet1")), vbCrLf ))

这仅在VB.net中可用,在VBA中不可用。在VBA中,您将使用标准的
If-Then-Else
构造。

SSRS条件不符合短路布尔求值,因此在进行比较之前会求值右侧参数。您可能需要防止函数调用中出现空值。我认为您不需要连接-您的函数已经以字符串形式返回了数据。但不确定这是否是错误。尝试删除它(以及
,VBCRLF
)不会有什么坏处。