2015-08-27 76 views
0

我正在使用水晶報表XI。我正在使用在我到達此處之前創建的SQL數據庫,並且我無法更改表或鏈接結構。數據庫中有4個表格需要用於此報告。用0個子記錄返回計數爲0的記錄摘要

表1 - 公司||字段:CompanyIDPK,CompanyName,YearActiveIDFK

表2 - ActiveYears ||字段:YearActiveIDPK,YearNameIDFK

表3 - YearNames ||字段:YearNameIDPK,年份名稱

表4 - CompanyOrders ||字段:OrderIDPK,CompanyIDFK,YearNameIDFK,OrderNumber,OrderCost

我想創建按年份和公司分組的報表。我希望每個公司都能顯示每年的訂單數量,如果當年沒有訂單,則顯示0。

我可以得到報告以顯示某一年的所有公司,但只要我嘗試開始顯示計數,它只會顯示至少有一個訂單的公司。

感謝您的幫助!

+0

您是否可以創建存儲過程並將其基於此報告? –

+0

向我們顯示您的當前報告,以便我們可以幫助您解決更詳細的問題 – KuKeC

+0

如果公司沒有訂單,訂單表中是否會有記錄? – Siva

回答

0

我的猜測是,這是因爲Crystal將表添加到設計器後纔將表添加到SQL查詢中。即使您已將數據庫專家中的錶鏈接起來,也會發生這種情況。

我假設你有INNER JOIN的默認連接類型。可能發生的情況是,只要您在「公司訂單」的某個字段中添加「計數摘要」,Crystal就會將其添加到您的SQL查詢中。

這會導致問題的原因是因爲如果鏈接字段在兩個表中,內部聯接只會返回記錄。如果公司在去年沒有下訂單,他們在CompanyOrders表中沒有任何記錄。這意味着您的SQL Query將不會爲這些公司返回任何記錄,因爲這些公司需要在這兩個表中才能返回記錄。

解決方法是將連接類型從INNER JOIN更改爲LEFT OUTER JOIN。這可以通過進入數據庫專家(菜單>數據庫>數據庫專家),單擊鏈接選項卡,雙擊從公司到您的CompanyOrders表的行,然後選擇左外部聯接單選按鈕來完成。

現在所有的公司都將顯示出來,但由於一些不具備在CompanyOrders表中的記錄,對於訂單數將是0

讓我知道,如果這是你的問題。

ZMcK

+0

我試着改變連接,但不管我怎麼做,它似乎從來沒有工作。我認爲問題可能在於數據庫的結構。我似乎需要將訂單表與公司表和年表連接起來,以避免無論何時都能獲得公司的所有訂單。但是,當我這樣做時,我似乎無法更改鏈接上的連接... –

+0

Crystal添加表後不會允許您更改連接類型嗎?如果您雙擊鏈接的行,您是否可以進入鏈接選項彈出式菜單? – ZMcK

0

你沒有說你不能創建數據庫對象,所以如果可能的話我將創建一個SQL Server數據庫的視圖或存儲過程返回你的格式要求數據您需要將Crystal Reports從連接表的等式中排除。

+0

對不起,我只能通過水晶報表訪問數據庫。我的訪問權限僅限於閱讀記錄... –