SSRS Различная проблема LookupSet Проблема - PullRequest
0 голосов
/ 08 апреля 2020

Я прошу прощения за длинный пост, но я схожу с ума здесь. Я пытался найти это, но продолжаю получать сообщения об ошибках по всем предлагаемым исправлениям в этой теме:

Отличная функция поиска SSRS

Я даже пытался полностью воссоздайте аналогичный набор данных в этом вопросе, но продолжайте получать проблемы.

s

Это набор данных, который я создал.

Использование этого в поле выражения и группировки по 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"), ",")

Я получаю

enter image description here

, но я хотел бы удалите дубликаты в 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

с этим expression:

=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] Выражение Value для textrun 'CustomerSeqNo.Paragraphs [0] .TextRuns [0]' содержит ошибку: Operator '& 'не определен для типа' Integer 'и типа' CalculatedFieldWrapperImpl '. и эта ошибка

enter image description here

Другое решение даже не развертывается. Любая помощь здесь?

1 Ответ

0 голосов
/ 09 апреля 2020

К счастью для вас @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"))
...