我有一個SSRS報告,在3列中打印地址標籤,30頁。有沒有辦法根據參數添加一個空行到SSRS數據集?
我創建了類似的說明報告發現here
很少做我必須準確地打印30個標籤。因此,爲了節約紙張和金錢,我想在此報告中添加一個參數1-30,以決定頁面上的哪個位置開始打印。
如果我已經在頁面上打印了16個標籤,我可以在參數中選擇17,我的結果將開始打印在頁面的第17個標籤上。
如果我可以使用該參數來添加一些空行到我的結果集,我可以做到這一點。這可能嗎?
我有一個SSRS報告,在3列中打印地址標籤,30頁。有沒有辦法根據參數添加一個空行到SSRS數據集?
我創建了類似的說明報告發現here
很少做我必須準確地打印30個標籤。因此,爲了節約紙張和金錢,我想在此報告中添加一個參數1-30,以決定頁面上的哪個位置開始打印。
如果我已經在頁面上打印了16個標籤,我可以在參數中選擇17,我的結果將開始打印在頁面的第17個標籤上。
如果我可以使用該參數來添加一些空行到我的結果集,我可以做到這一點。這可能嗎?
我不知道這是最好的解決辦法,但看到下面
DECLARE @StartColumn INT = 6
;WITH CTE
AS (
SELECT *
,ROW_NUMBER() OVER (ORDER BY q.value) AS [rowNum]
FROM (
values('A'),('B'),('C'),('D'),('E'),('F'),('G'),('H'),('I'),('J'),('K'),('L')
) q (value)
)
SELECT CASE
WHEN CTE.rowNum > @StartColumn THEN CTE.value
ELSE NULL
END AS [Value]
FROM CTE
這個查詢,你會得到導致這樣
然後運行它會是空白的空值報告(我認爲你在報告中使用Group打印多行)
我遇到了類似的問題,例如選擇打印哪個標籤,b ut也需要爲每個客戶打印超過1個標籤。我的問題是我無法訪問SQL(我們使用多維數據集)。我使用SSRS 2012與SharePoint。這不太好,但確實有效。
我在報告中有1個數據集。我有14個標籤 - 7個橫跨& 2。每個標籤都設置爲自己的Tablix。
該tablix編號從1到14,從左上角開始。所以,1-7,從左邊的「列」&,然後從右邊「列」的頂部8-14。
令人討厭的是參數值從0開始,因此它們被編號爲0-13 每個tablix被設置爲由特定參數值進行填充,例如,tablix 1被設置爲由參數值0,tablix 2由參數值1過濾,tablix 3由參數值2過濾,tablix 4由參數值3過濾等。
我必須在標籤中打印兩次數據,所以我在Tablix中使用了兩個文本框。
創建參數
用戶將使用的客戶機ID(一個6位數字)作爲參數值。我創建了一個名爲ClientID的參數。對於提示我把「替換000000每個標籤所需。000000 =空白標籤」
在常規選項,我:
個可用值
Create tablix
然後我爲每個標籤創建了一個tablix。他們都指向我的數據集(想象中稱爲「DataSet1」)。它們由一個單元組成。這與我的標籤的可打印區域的高度和寬度相匹配。
創建文本框
我添加了表矩陣單元格內我的第一個文本框。我把它做得稍微小一點,就是Tablix的寬度,然後從Tablix的頂部向下。
創建的第二個文本框&將其調低,直到它適合我的需求。它使用與第一個文本框相同的公式。 (記住我需要打印客戶端名稱兩次)。
我在我的報告中使用了查找數據集。是的,儘管tablix已經基於這個數據集。
第一個標籤,兩個文本框的公式爲:
=lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(0),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
爲表矩陣創建過濾器
我也有一個過濾器適用於每個表矩陣,所以將打印客戶端通過參數選擇的信息。
在過濾器選項 +下Tablix屬性單擊添加 +從表情,我選擇我的ClientID +從操作員,我選擇在 +的價值,我點擊FX按鈕來創建公式 =參數!ClientID。值(0)
不顯示默認參數值
顯然,如果你離開參數值設置爲默認(000000),它將打印這一點。
我可以防止這種情況的唯一方法是使用字體顏色(我無法使可見性工作)。 +右鍵單擊文本框 +選擇文本框屬性 +單擊字體選項 +下的顏色,請單擊FX按鈕 +使用這個公式:
=iif(Parameters!ClientID.Value(0)="000000", "White", "Black")
對於後續的標籤
對於第二個標籤,我索引括號中的值,例如(0)(1)兩個文本框的公式和也用於過濾器,例如
=lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
UCase(Fields!Surname.Value),
"DataSet1")
& ", " &
lookup(Parameters!ClientID.Value(1),
Fields!ID.Value,
Fields!Given.Value,
"DataSet1")
並在Tablix屬性過濾,
=Parameters!ClientID.Value(1)
和文本框字體式
=iif(Parameters!ClientID.Value(1)="000000", "White", "Black")
然後我索引這個數目對於每個後續的標籤,所以最後的標籤(標籤14)中,該值分別爲:
=lookup(Parameters!ClientID.Value(13) etc
,並在Tablix屬性過濾器,
=Parameters!ClientID.Value(13)
,並在文本框中輸入字體公式 = IIF(參數!ClientID.Value(13)= 「000000」, 「白」, 「黑」)
所以,當用戶運行報告,他們替換000000,000000,000000等與適當的客戶Id
Chanom讓我在正確的軌道上,我的解決方案是創建我的數據集查詢,如下面的示例中所示。
declare @cnt int = 1
declare @string varchar(max) = ''
declare @varID varchar(max) = cast(@paramID as varchar(max))
IF @paramStartLocation > 1
WHILE @cnt < @paramStartLocation
BEGIN
set @string = @string + 'select null as Column1
,null as Column2
,null as Column3
,null as Column4
,null as Column5
,null as Column6
UNION ALL
'
set @cnt = @cnt + 1
END
set @string = @string + 'SELECT [TableName].[Column1]
, [TableName].[Column2]
, [TableName].[Column3]
, [TableName].[Column4]
, [TableName].[Column5]
, [TableName].[Column6]
FROM [TableName]
WHERE [TableName].[IDColumn] in ('[email protected]+')'
exec(@string)
此處@paramStartLocation是開始打印的標籤插槽,「null」記錄在報告中顯示爲空白。 Chanom的解決方案可以跳過記錄並顯示空白,我的解決方案不需要跳過記錄,但需要添加X個空白記錄。
這裏知道你的數據集查詢會很有用。我的第一個直覺是將一個'空白'行合併到你的數據集中,並將你的參數數減去1來複制。但是,在不知道數據集是什麼樣的情況下,很難知道工會應該是什麼樣子 – Gallus