2009-09-23 114 views

回答

1

通常(但不總是),您可以將兩個SQL語句合併爲一個 - 避免子報表的複雜性。

對於(超過簡單的)例子:

SELECT CustomerNum -- Returns number 919 
    FROM RecentOrder 
WHERE OrderNum = 23455; 

SELECT FirstName, LastName, EmailAddress 
    FROM Customer 
WHERE CustomerNum = 919 

這些可以在幾種可能的方式進行組合:

SELECT FirstName, LastName, EmailAddress 
    FROM Customer 
WHERE CustomerNum = (SELECT CustomerNum 
         FROM RecentOrder 
         WHERE OrderNum = 23455 
        ) 

SELECT FirstName, LastName, EmailAddress 
    FROM Customer AS C JOIN RecentOrder AS O 
     ON C.CustomerNum = O.CustomerNum 
WHERE O.OrderNum = 23455 

根據你的DBMS,您可以使用WITH子句前面:

WITH name1 AS ...query1...: 
SELECT ... 
    FROM ...list including name1... 
WHERE ... 

這是值得花費一些努力結合查詢,讓你覺得你需要一個分報告。如果你仍然需要一個分報告,那麼你需要更多的專家幫助,而不是我能提供的。

+0

謝謝喬恩。我會嘗試這個 – Shalma 2009-09-23 14:27:38

4

首先,我會推薦Jonathan Leffler的回答。如果您可以按照需要使用查詢的方式獲取格式化數據,而不是嘗試使用放置在詳細信息或組部分中的子報告,則會更好。在細節部分放置一個子報表基本上就像爲主報告拉動的每個記錄運行一個報告。

有了這樣的說法並回答你的問題,當你添加一個子報表,你可以右鍵點擊子報表並選擇「更改子報表鏈接」。在這裏,您可以將主要報告數據鏈接到子報告數據。

編輯迴應您的評論

1)有跡象表明,你可以在這裏使用兩個選項。一種方法是在子報表中創建參數,在子報表的Select Expert中添加邏輯,以便使用新參數,然後使用Subreport Links屏幕將主報表中的列鏈接到子報表中的參數。

2)在主報表和子報表中設置一個共享變量,然後可以在Select Expert公式中使用它。有關更多信息,請參閱以下問題。 Retrieve record count of subreport in Crystal Reports

希望這會有所幫助。如果答案正確,請不要忘記提供所有幫助的答案並標記正確的答案。

+0

其實我想包括在WHERE條件 對於如此值。如果我傳遞了這個值,我想將這個值分配給子報表中的參數?所以當我試圖添加時,我無法看到這個參數? – Shalma 2009-09-24 14:13:29

+0

其實我想使用這個值從主要傳遞到子報表,但我無法看到子報表參數鏈接此。你可以幫我嗎?我正在使用sql的add命令。所以,如果我在add命令之外創建了一個參數,我可以在add命令中使用它嗎?我試過使用這個,但在添加命令中使用失敗。 – Shalma 2009-09-25 08:00:31

+0

您需要確保參數的類型與您想要鏈接到的字段的類型相同。也許這就是爲什麼它不適合你。 – Dusty 2009-09-25 13:15:03

相關問題