2

我在我的代码中所做的是,我有

ID   Value
1    a
1    b
1    c
2    a
2    b

我得到

ID   Value
1    a,b,c
2    a,b

我可以使用 STUFF 关键字在 SQL 中执行此操作,但我决定使用这个

在我写的报告的代码部分

Private CurrGroupBy As String = String.Empty
Private ConcatVal As String = String.Empty

Public Function AggConcat(GroupBy as String, ElementVal as String) as String
    If CurrGroupBy = GroupBy Then
        If InStr(ConcatVal, ElementVal,0) = 0 Then
            ConcatVal = Trim(ConcatVal) & ", " & ElementVal 
        End If
    Else
        CurrGroupBy = GroupBy 
        ConcatVal = ElementVal 
    End If
Return ConcatVal 
End Function

在其中一行我使用下面的这个表达式

=RunningValue(Code.AggConcat(Fields!Id.Value, Fields!Theme.Value), Last, "DataSet1")

如果查看报告并将其导出为 PDF,这将完美运行。但是,当我将它导出到 Excel 时,我得到的结果是

ID   Value
1    a
1    a,b
1    a,b,c
2    a
2    a,b

我在这里做错了什么?

4

2 回答 2

2

当我试图重现上面解释的内容时,报表查看器和 Excel 都产生了所描述的意外情况。

尽管为了实现所需的输出,我添加了一个报告组并删除了该=(Details)组,这在报告视图和导出到 Excel 时都有效。

解决方案最终看起来像:

SSRS群码解决方案

于 2013-08-05T08:40:39.303 回答
0

我没有任何线索。如果起始代码在 excel 中,您可以修改此代码以执行您想要的操作。我很久以前就发现了这个。如果它不是您要查找的内容,请忽略它。

Sub ConcatNotesTextV2()
' hiker95, 04/14/2012
' http://www.mrexcel.com/forum/showthread.php?t=628561
Dim r As Long, lr As Long, nr As Long, n As Long
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
For r = 2 To lr
  n = Application.CountIf(Columns(1), Cells(r, 1).Value)
   If n = 1 Then
     'do nothing
  ElseIf n > 1 Then
    Range("B" & r) = Join(Application.Transpose(Range("B" & r & ":B" & (r + n) - 1)), ,)
    Range("A" & r).Offset(1).Resize(n - 1).ClearContents
  End If
  r = r + n - 1
Next r
On Error Resume Next
Range("A1:A" & Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells        (xlCellTypeBlanks).EntireRow.Delete  
On Error GoTo 0
Application.ScreenUpdating = True
End Sub
于 2013-08-02T22:58:54.007 回答