2016-04-15 39 views
0

我目前正在創建Crystal Reports中有兩個表的簡單報告:動態參數顯示的值太多

{Table1.group_name_id} --> {Table2.technical_group_id} 

Table 1 holds all of the groups; ID's, Names etc 
Table 2 holds only the technical groups ID 

有了這兩個表的鏈接就意味着將返回唯一的記錄是那些技術集團參與,完美!但是現在我想添加一個動態參數來返回最終用戶選擇的技術組名稱。

由於{Table2}只保存一個字段(ID)鏈接到{Table1}的ID,我必須在{Table1}的名稱字段上執行參數選擇。

但是,這是拉回所有{Table1}的名字,即使在強制連接存在的情況下也在{Table2}上折扣加入。

有沒有辦法迫使它只能拉回{Table1}的名字,只要它匹配{Table1} and {Table2}之間的JOIN?

在此先感謝!

編輯(附加信息)

Table Link

+0

哪個連接有你用過? – Siva

+0

這是一個INNER JOIN - 它應該只返回出現在這兩個表中的組,但由於某種原因從{Table1}返回所有組。 – OmisNomis

+0

內部連接不應該以這種方式工作...檢查數據,如果您獲得完整的數據,那麼它意味着所有記錄匹配 – Siva

回答

2

正如我想的那樣 - 問題是Crystal Reports在顯示參數值時無法識別JOIN。

經過一番閱讀後,我發現JOINS只有在查詢傳遞到數據庫(邏輯上)時才被識別。所以當選擇一個參數時,它不能識別連接。

我通過創建一個自定義SQL命令來解決這個問題,強制它只回退第二個表中的組。

0

首先,請確認您的加入INNER JOIN。

enter image description here

對於加法, 您可以通過用戶輸入的參數的水晶報表和使用{} @Parameter來過濾水晶報表使用SelectionFormula結果集。

或者你甚至可以從應用程序中設置selectionformula本身。

+0

這就是我現在不得不求助的,但我正在尋找一個動態參數而不是靜態參數。 – OmisNomis

+0

一旦您在Crystal Report中創建了一個參數變量,您就可以將運行時間值/動態值傳遞給您的應用程序中的crystal參數。如果在SelectionFormula中使用過濾器(tablefieldname = @parametername),那麼它在Sql中充當WHERE子句。 –

+0

對不起,只是爲了確保我很清楚....這就是我所做的: 1.如上所述在兩個表格之間創建JOIN 2。在{{table1} .group_name'上創建一個動態參數。 3.在'{table1} .group_name' = {?Parameter} 上創建一個Selection Expert公式。但是這仍然顯示來自'{table1}'的所有客戶名稱'而不僅是與{{table2}' – OmisNomis