2013-08-02 126 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