从LookupSet中的多个值拆分为报表生成器中的多个列

问题描述 投票:0回答:1

我正在报表构建器中为表达式苦苦挣扎。我的数据集可以包含多个值。因此,我使用LookupSet并加入了结果。到目前为止有效。

=Join(LookupSet(Fields!SignalId.Value, Fields!SignalId.Value, Fields!r_configuration.Value, "RData"), ",")

结果

|Column 1 | Column 2|
----------|----------
|   1,2   |         |
|   1     |         |

现在我想分割结果。例如,如果有多个值,则第一个条目应在column1中,第二个条目应在column2

|Column 1 | Column 2|
----------|----------
|   1     |    2    |
|   1     |         |

我尝试过

=LookupSet(Fields!SignalId.Value, Fields!SignalId.Value, Fields!r_configuration.Value, "RData")(0)

但是仅当lookupset包含多个值时,这才有效。如果只有一个值,我会收到#Error。它尝试放置一个IIF(),isNothing(),但仍然收到#Error。任何想法如何实现这一目标?

以下内容无法正常工作

=IIF(LookupSet(Fields!SignalId.Value, Fields!SignalId.Value, Fields!r_configuration.Value, "RDataset").Length > 1,LookupSet(Fields!SignalId.Value, Fields!SignalId.Value, Fields!r_configuration.Value, "RDataset")(0),Join(LookupSet(Fields!SignalId.Value, Fields!SignalId.Value, Fields!r_configuration.Value, "RDataset"),","))

欢呼亚历克斯

sql report reportbuilder
1个回答
0
投票

看起来没有任何内容可与内置表达式一起使用。我添加了自定义代码。这始终有效:-)

Public Function GetRitop(ByVal items as Object(), ByVal pos as Integer) As Object

if items Is Nothing Then
return ""
Else if items.Length = 1 And pos = 1 Then
return items(0)
Else if items.Length = 1 And pos = 2 Then
return ""
Else if items.Length = 2 And pos = 1 Then
return items(0)
else if items.Length = 2 And pos = 2
return items(1)
End if

End Function

单元格中的表达式是

=Code.GetRitop(LookupSet(Fields!SignalId.Value, Fields!SignalId.Value, Fields!r_configuration.Value, "RDataset"),1)

其中1是数组位置

© www.soinside.com 2019 - 2024. All rights reserved.