2013-08-02 75 views
2

我在做什么在我的代码,我有代码部分

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

和我得到

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

我可以做它在SQL使用STUFF关键字,但我决定去这

在我写的报告的代码部分

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 

我在做什么错在这里?

+0

能否请您指教,这是否是SSRS 2008或2008R2?这两个版本有不同的选项。 –

+0

这是SSRS 2008R2 –

+0

对于'STUFF'关键字+1,这是我以前从未听说过的。 – Smandoli

回答

2

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

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

该解决方案最终看起来像:

SSRS Group Code Solution

+0

谢谢马修!在我的报告中,我有两个tablix,一个用于excel,另一个用于其他所有内容,我完全忘记了excel tablix中的分组。非常感谢。 –

+0

我很高兴它为你分类。 –

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