2016-12-14 2 views
2

Я долгое время искал решения для этого и не нашел совершенно то, что хочу. Усилия по адаптации существующих решений для различных проблем также не сработали!SSRS Макс. Дата от Lookupset

Я использую LookupSet возвращать список дат, а затем объединить их, чтобы вернуть список:

=Join(LookupSet(Fields!cPatSer.Value,Fields!cPatSer.Value,Fields!DDate.Value,"PatD")) 

Я хочу только показать самую последнюю дату из этого списка. Вот то, что я пытался до сих пор:

  • выше функции, завернутый в функции Max (не работает, потому что соединение возвращает строку)
  • Использование отделенной функцию, чтобы разделить полученную строку в поисках запятых затем, используя максимальную функцию
  • Выполнение обоих выше, но преобразование вывод Дата объектов с помощью CDate и DateTime.Parse первых, как следует ...

    = Join (LookupSet (Fields! cPatSer.Value, Поля! cPatSer.Value, CDate (Fields! DDate.Value), «PatD»))

    = Join (LookupSet (Fields! CPatSer.Value, Поля! CPatSer.Value, DateTime.Parse (Fields! DDate.Value), "PatD"))

Кто-нибудь может предоставить какие-либо указатели, пожалуйста?

ответ

2

Я нашел решение, используя Пользовательский код. Оз Локк сделал функцию, которая выполняет различные агрегаты для целочисленных данных (ссылки ниже), и я изменил это, чтобы работать вместо дат.

В Code свойство отчета, вставить в это:

'Amended from Oz Locke's code: 
'https://github.com/OzLocke/SSRSAggLookup/blob/master/AggLookup.vb 
'Allows users to adjust the aggregation type of lookupsets in a cell 
Function AggLookup(ByVal choice As String, ByVal items As Object) 

'Ensure passed array is not empty 
'Return a zero so you don't have to allow for Nothing 
If items Is Nothing Then 
    Return 0 
End If 

'Define names and data types for all variables 
Dim current As Date 
Dim count As Integer 
Dim min As Date 
Dim max As Date 
Dim err As String 

'Define values for variables where required 
current = CDate("01/01/1900") 
count = 0 
err = "" 

'Calculate and set variable values 
For Each item As Object In items 

    'Calculate Count 
    count += 1 

    'Check value is a number 
    If IsDate(item) Then 

     'Set current 
     current = CDate(item) 

     'Calculate Min 
     If min = Nothing Then 
      min = current 
     End If 
     If min > current Then 
      min = current 
     End If 

     'Calculate the Max 
     If max = Nothing Then 
      max = current 
     End If 
     If max < current Then 
      max = current 
     End If 

     'If value is not a number return "NaN" 
    Else 
     err = "NaN" 
    End If 

Next 

'Select and set output based on user choice or parameter one 
If err = "NaN" Then 
    If choice = "count" Then 
     Return count 
    Else 
     Return 0 
    End If 
Else 
    Select Case choice 
     Case "count" 
      Return count 
     Case "min" 
      Return min 
     Case "max" 
      Return max 
    End Select 
End If 
End Function 

Тогда в клетке вашего отчета, используйте это выражение:

=code.AggLookup("max", LookupSet(Fields!cPatSer.Value,Fields!cPatSer.Value,Fields!DDate.Value,"PatD")) 

https://itsalocke.com/aggregate-on-a-lookup-in-ssrs/ https://github.com/OzLocke/SSRSAggLookup/blob/master/AggLookup.vb

+0

извинения за так долго комментировать, это была огромная помощь, спасибо! –

Смежные вопросы