【问题标题】:SSRS Distinct LookupSet IssueSSRS Distinct LookupSet 问题
【发布时间】:2020-04-08 18:25:04
【问题描述】:

我为这篇冗长的帖子道歉,但我在这里疯了。我已尝试查找此内容,但我不断收到有关此线程上任何建议修复的错误消息:

SSRS distinct lookupset function

我什至尝试在该问题中完全重新创建类似的数据集,但不断遇到问题。

这是我创建的数据集。

在表达式框中使用 this,并按 itemID、rackID、UseByDate 分组

Join(LookupSet(Fields!itemId.Value & Fields!UseByDate.Value & Fields!rackId.Value
, Fields!itemId.Value & Fields!UseByDate.Value & Fields!rackId.Value
, Fields!CustomerSeqNo.Value
, "PickingList"), ",")

我明白了

但我想删除 LookupSet 中的重复项,以便它只显示“1”。

我尝试了上述链接中的前 2 个选项,但它们都提供了错误消息:

Public Shared Function RemoveDuplicates(m_Array As Object()) As String()

System.Array.Sort(m_Array)
Dim k As Integer = 0
For i As Integer = 0 To m_Array.Length - 1
    If i > 0 AndAlso m_Array(i).Equals(m_Array(i - 1)) Then
        Continue For
    End If
    m_Array(k) = m_Array(i)
    k += 1
Next

Dim unique As [String]() = New [String](k - 1) {}

System.Array.Copy(m_Array, 0, unique, 0, k)

Return unique

End Function

用这个表达式:

=Join(Code.RemoveDuplicates(LookupSet(Fields!itemId.Value & Fields!UseByDate.Value & Fields!rackId.Value
, Fields!itemId.Value & Fields!UseByDate.Value & Fields!rackId.Value
, Fields!CustomerSeqNo.Value
, "PickingList")), ",")

返回此警告:

[rsRuntimeErrorInExpression] textrun 'CustomerSeqNo.Paragraphs[0].TextRuns[0]' 的值表达式包含错误:未为类型“Integer”和类型“CalculatedFieldWrapperImpl”定义运算符“&”。还有这个错误

其他解决方案甚至没有部署。这里有什么帮助吗?

【问题讨论】:

    标签: vb.net visual-studio reporting-services


    【解决方案1】:

    @JMG 你很幸运,我只需要为客户做这件事!

    函数如下:

    public function DistinctValues(input() as Object) as string
        dim newList as String
    
        for each n as string in input
           if InStr(newList, cstr(n) + ", ") = false
               newList += cstr(n) + ", "
           end if
        next
    
        return left(newList, len(newList) -2)
    end function
    

    所以它所做的是解析数组中的每个值。我们将把每个唯一值插入到逗号分隔的字符串中。在此之前,我们只需使用 InStr 检查字符串以查看该值是否已存在。

    确保通过 CSTR(Fields!CustomerSeqNo.Value) 将返回值转换为字符串,以避免任何数据类型问题。您的代码应如下所示。

    Code.DistinctValues(LookupSet(Fields!itemId.Value & Fields!UseByDate.Value & Fields!rackId.Value, Fields!itemId.Value & Fields!UseByDate.Value & Fields!rackId.Value, CSTR(Fields!CustomerSeqNo.Value), "PickingList"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多