0

我需要將鍵值列表傳遞給SQL-Server中的存儲過程,然後該存儲過程返回Crystal報表所需的值。如何在Crystal Reports中指定SQL表類型輸入參數?

而不是發送一個逗號分隔列表,然後解析它,有人建議我使用表類型。所以,我定義爲只是使整數該表類型:

CREATE TYPE [dbo].[SiteIdentifiers] AS TABLE 
(
    [SiteId]  BigInt, 
    PRIMARY KEY ([SiteId]) 
) 

不過,現在我需要修改我的水晶報表,以採取作爲輸入參數。 (存儲過程與...開始

CREATE PROCEDURE [dbo].[sp_SiteReport] 
    @SiteIds [dbo].[SiteIdentifiers] ReadOnly 
AS 

該報告將主要使用ColdFusion或者C#.net調用,所以我不認爲會出現在ID加入到表型的問題。但我不知道如何在Crystal中定義該參數,創建新參數嚮導中的類型列表很少。

回答

0

據我所知,這是不可能的。 Crystal不會從其他應用程序(例如SQL Server)無法識別的數據類型。

1

我不認爲你在Crystal中正確使用Parameter概念。知識,它最適合用於手動輸入數據(並且您試圖通過多維數組,而不是最佳使用它)。我推薦:

  1. 您的第一個想法是以逗號分隔的字符串形式填充表格。
  2. 將您的過程的輸出保存到SQL-Server中的臨時表中並導入它。
+0

如果存儲過程需要參數,是不是Crystal需要指定它們呢?這並不是說我不會最終使用逗號分隔的字符串,但更多的是關於不正確使用參數的初始問題。如果我要使用Crystal,並且存儲過程需要參數,那麼似乎是參數的要點。 – thursdaysgeek 2010-09-27 20:52:25

+0

啊,沒有意識到存儲過程需要的參數(儘管你明確地這麼說)。在這種情況下,參數是否完全需要由Crystal生成?如果你先運行proc,用一個存儲在sql-server上的查詢來提供它,然後運行Crystal? – PowerUser 2010-09-27 21:04:56

0

正常情況下,通過將過程指向報表來創建運行過程的Crystal報表 - 過程的所有必需參數都會自動生成在報表中。如果您在Crystal Reports設計器中完成此操作而沒有生成表格輸入參數的報告,那麼我認爲您不可以這樣做。

的另一個替代用逗號分隔的列表,你有沒有考慮:

  • 創建一個表來保存會話ID和輸入值,
  • 填充表之前,爲了運行一個報告會話ID和所需要的輸入值,
  • 傳遞會話ID的報告作爲參數,
  • 從報告傳遞會話ID的程序作爲一個參數,
  • 對過程進行編碼,以根據會話ID從新表中選擇輸入值,並在運行報告後刪除會話ID的條目?