SSRS 请求并显示SharePoint人员和组字段

场景:

使用Reporting Service请求SharePoint List,该list中包含人员和组字段。要求:只显示人员或组的display name。示例如下:

项目参与人员期望显示
项目1张三#contoso\zhangsan;李四#contoso\lisi;19;#王五;管理员组张三;李四;王五;管理员组

步骤:

1. 替换";#"成"@@"

2. 按";"分割成数组,遍历数组,循环取出值

3. 按"#"分割字符串,取数组第一个值

4. 按"@@"分割字符串,取数组第二个值

Public Function GetPersionName(Combined As String) As String
    if (InStr(Combined ,"@@") > 0) Then
        Return Split(Combined,"@@").GetValue(1)
     Else
 if(InStr(Combined ,"#") > 0) Then
   Return  Split(Combined,"#").GetValue(0)
 Else
  Return Combined
 End If
    End If
End Function
 
Public Function GetPersionNameStr(Combined As String) As String
 if  (Combined ="") Then
       return ""
 End If

  dim returnStr,i
  returnStr= ""
 
 Combined = Replace(Combined,";#","@@")
  if (InStr(Combined ,";") > 0) Then
        for  i = 0 to Split(Combined,";").Length - 1
 dim str = Split(Combined,";").GetValue(i)
 returnStr = returnStr+ GetPersionName(str) + ";"
        next  
        Return returnStr
     Else
        Return GetPersionName(Combined)+";"
   End If
End Function

报表字段里插入fx,值等于

=Code.GetPersionNameStr(Field!参与人员.Value)

预览。

 

P.S.

在RS中的IIF用起来跟传统的if判断有点不同。IIF不是个表达式,而是个方法,这个方法有3个参数。

IIF(Condition, ValueIfTrue, ValueIfFalse)

也就是说,Condition,ValueIfTrue,ValueIfFalse在运行的时候都会执行。如果你想这样玩儿,你就会失望了。

IIF(
    InStr(Fields!User.Value,";") > 0 
    ,Split(Fields!User.Value,";").GetValue(1)
    ,Fields!User.Value
     )

不管条件InStr(Fields!User.Value,";") > 0成功与否,Split(Fields!User.Value,";").GetValue(1)都会执行。是不是相当不爽???!!!

 

转载于:https://www.cnblogs.com/wpsl5168/p/3144381.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值