1

我在sql-server中存儲了一個proc,並且它返回的參數之一是一個帶查詢參數的字符串。我在報告頂部顯示這些查詢參數。如果發現了某些東西,這很好,如果沒有發現東西,那就不是那麼好。使用來自存儲過程的多個結果的Crystal Reports

我們已經嘗試返回兩個查詢結果,一個是我將生成報表的數據集(其中包含查詢參數),另一個是查詢參數字符串。 Crystal似乎只能看到第一個數據集,而這個非常古老的討論(http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=42462)表示這不會起作用。但那是在5年前,我希望事情發生了變化。

問題是,如果沒有返回任何內容,則報告太空白以致於該人甚至不知道他們使用了哪些查詢參數。如果他們看到他們查詢了一些不會返回任何結果的東西,那就很有用。

所以,如果我有我的存儲過程的末尾:

SELECT * FROM [#ResultSet] 
select @SearchCriteria as SearchCriteria 

我想能夠顯示SearchCriteria即使沒有在#ResultSet。這個版本的水晶可以做到嗎?有沒有另一種方法來做到這一點?

回答

1

除非第一個答案所述,一個過程的結果與另一個過程(包括類型)的列數相同,如果是這種情況,您可以UNION結果或UNION ALL結果(如果您想要重複)得到一個結果集。

如果類型或列不相同,那麼你不能這樣做。你唯一可以做的另一種選擇是所有相關的數據合併到一個臨時表,然後返回來自該臨時表(SELECT * FROM #temp

+0

我們採納了這個想法並在此基礎上構建 - 如果有結果,則返回結果(包括搜索條件字符串);如果沒有結果,則返回與一堆NULL值結合的結果以及搜索條件字符串(一條記錄)。 – thursdaysgeek

0

結果如何目前能夠結果發現時顯示的參數?

你還沒有提到你如何在你的環境中使用Crystal Report。

通常,我通過將參數傳遞給Crystal Report作爲報表參數,然後在字段中使用它們來完成條件顯示。這假定您以某種方式從客戶端應用程序調用它。

另一種方法是將結果加載到客戶端數據表中,並將其作爲數據源綁定到數據表中,當然可以通過這種方式處理多個結果集。

+0

大約有十幾個參數可以發送,所選參數將被組合成一個字符串,放入每個結果記錄中,並顯示在報告頂部。不是優雅的,但它的工作原理,使我們不必在水晶組裝字符串。 – thursdaysgeek

+0

@thursdaysgeek在這種情況下,只需將UNION結果與一行所有NULL和參數​​列一起使用即可。添加行選擇器類型指示器列以指示它是結果行還是隻是參數行。然後,報告可以選擇要在參數區域中使用的數據行和參數行中的數據行。 –

相關問題