Stored-Procedures

SQL - 在水晶報表中將儲存過程變數作為參數傳遞給最終使用者選擇

  • May 17, 2017

好的,我知道有數百篇文章說明瞭如何將參數從儲存過程傳遞到水晶報表。但不幸的是,通過一些研究,我沒有找到關於 SQL Server 變數和水晶報表參數的問題的具體答案。

問題:如果我有一個儲存過程,並且我聲明了一個名為“位置”的變數,並且我想在我的水晶報表中引用該變數作為新參數,並且最終使用者將看到一個對話框,允許他們從不同的位置進行選擇這將返回僅針對從下拉列表中選擇的特定位置的結果。那怎麼會發生?

目前嘗試的方法:

水晶報表生成器 11

  1. 在欄位資源管理器下的“參數欄位”中,選擇新建,然後按動態選擇“值列表”,然後選擇與我的變數一起使用的數據源和列,它說“參數”是@location。但是當我執行報告時,我會看到一個位置值對話框,但沒有可供選擇的值。(要注意位置欄位由使用者通過報告下拉選擇提供,從而從儲存過程返回結果)
  2. 在“參數欄位”中選擇新的值,然後將值列表保留為“靜態”,並選擇值欄位作為“位置”列,並輸入與位置有關的多個值供使用者選擇。(這確實會向使用者顯示一個對話框,建議一個位置的下拉值,但沒有返回結果,所以我不確定這是否是正確的方法?)

程式碼:

ALTER PROCEDURE [dbo].[a_ras_TruckSummary_SP] 

AS
BEGIN

IF (object_id('tempdb..#tempTruckSummary') IS NOT NULL)
BEGIN
   DROP TABLE #tempTruckSummary
END


DECLARE @location VARCHAR(10)


SELECT O.order_no, L.shipped, L.price, L.[location] FROM orders O WITH 
(NOLOCK) 
INNER JOIN Ord_list L ON O.order_no = L.order_no
   WHERE O.routing NOT LIKE 'FEDX%' 
   AND O.routing NOT IN ('UPS', 'UPS 1', 'UPS 2', 'UPS 3') 
   AND ISNULL(O.void,'') <> 'V'
   AND L.location = @location
   GROUP BY O.order_no, L.shipped, L.price, L.[location]

好的,這是我將水晶報告中的參數引用到儲存過程的步驟。

  1. 在儲存過程中添加參數聲明,如下所示:

改變程序

$$ dbo $$.$$ a_ras_TruckSummary_SP $$ @location VARCHAR(10),

@dateshipped 日期時間 2. 然後導航到水晶報表生成器並選擇“數據庫>>>>數據庫驗證”。這將刷新數據庫連接並將您的參數顯示為一個對話框。從那裡您將輸入您的值以測試參數 3. 如果他們測試正常,對話框將關閉,然後您可以導航到“欄位資源管理器”,在“參數欄位”下,您現在將看到您的新參數。 4. 然後,您可以簡單地將它們拖到報告中。

引用自:https://dba.stackexchange.com/questions/173734