我在SSRS 2008中創建了一個標籤。它從查詢返回的單個記錄中收集數據。我想添加提示用戶輸入x個標籤的能力,並將標籤底部的值顯示爲x個標籤中的x個(就像x個x頁一樣)。Create x of x Labels
我被困在如何產生x個標籤。
我在SSRS 2008中創建了一個標籤。它從查詢返回的單個記錄中收集數據。我想添加提示用戶輸入x個標籤的能力,並將標籤底部的值顯示爲x個標籤中的x個(就像x個x頁一樣)。Create x of x Labels
我被困在如何產生x個標籤。
如果每個記錄返回一個標籤,請在數據集中添加一個行號。 X的值應該可以以某種方式 - 要麼是因爲你接受它作爲一個參數,或在一組統計記錄等,然後:
=CStr(Fields!RowNumber.Value) + " of " + CStr(Parameters!X.Value)
或者,如果你的目標打印由返回1行的數據集填充的相同標籤的動態(X)編號,事情會變得更復雜一些。我推薦的做法是讓您的查詢複製1行,儘可能多地爲您的報表所需。你可以用很多方法來做到這一點,這裏只是一個例子,它創建了一個遞歸公用表表達式來填充X行,然後對你的實際數據集執行一個CROSS JOIN,通過你設置的任何值X來有效地複製行:
DECLARE @x INT
SET @x = 100
;WITH HelperCTE AS
(
SELECT
1 AS 'blah'
UNION ALL
SELECT
blah+1
FROM
HelperCTE
WHERE
blah<@x
)
SELECT
*
FROM
YourTable
CROSS JOIN
HelperCTE
/*
Your server is likely configured with a maximum recursion depth that could
prevent the CTE from working.
Uncomment the line below, and set the "1000" to whatever you need
*/
--OPTION (MAXRECURSION 1000)
那麼你就必須按照您需要打印標籤的一個記錄,你就會有辦法對付它無數的 - 你可以使用我已經作出的ROWNUMBER建議,你可以利用分頁在SSRS等
感謝您的信息。這肯定告訴我,我是這個軟件的初學者。我希望你不介意完成這項工作。我正在查看第二個選項作爲解決方案,因爲查詢將始終只返回一條記錄。我插入了提供的代碼,但運行代碼時收到以下錯誤。這應該在程序中完成嗎? – user3298762
抓住我在示例中提供的所有內容,將其粘貼到管理工作室中。用不那麼愚蠢的東西替換我的「胡說」別名。將「YourTable」替換爲表的名稱,將「*」替換爲所需字段的名稱,並將CTE中的別名字段替換(在我的示例中爲「blah」,但應該改變它。在WHERE上添加子句來過濾掉你需要的東西 棘手的部分將是遞歸 - 開始,忽略我註釋掉的底部東西,並按原樣使用查詢,你可以改變@X的值(# – kyzen
如果/當你得到超過最大遞歸深度的錯誤時,取消註釋我的最後一行(「OPTION(MAXRECURSION 1000)」,然後將「1000」更改爲任何你想要的值將@X設置爲,不要懶惰地使用MAXRECURSION,並將其設置爲非常高的數字;遞歸限制可以防止用戶意外地運行效率非常低的服務器破解代碼 – kyzen
請顯示您迄今嘗試過的代碼。 – eebbesen
當我運行這個腳本,我收到這個錯誤(「SQL命令未正確結束」)與sd1(ID)爲(SELECT 1 AS EXPR1 FROM SYS。「DUAL」 union all select ID + 1 from sd1 where ID < :p_intcounter)) SELECT DISTINCT orders.status, orders.orderkey 從訂單 其中orders.orderkey = '0000000289' 橫從SD1 – user3298762
加入 選擇ID如果我把SD1查詢首先,則實際的查詢後的交叉連接,我收到一個「表不存在」的錯誤。但是單個查詢在未組合時運行良好。 – user3298762