2015-09-23 44 views
0

我有一個我沒有製作的現有報告。這很複雜。它不使用命令函數,所以我不能直接更改SQL代碼中的過濾器。我已經審查了幾個基本上說沒有辦法解決這個問題的鏈接,我需要創建一個新的命令並重做報表。我想找到一個解決方案,不需要我重做報告。修改現有Crystal Reports以包含其他過濾器

我的邏輯,我需要的是隻選擇分包(如獲批准與否不論),只有有一個實例,如果他們有關聯的唯一選擇已批准

這是當前的後端一兩個實例水晶SQL

SELECT columns 
    from several tables joins etc 
    WHERE subcontract = '12345'--parameter entry 
    AND company=1 --parameter entry 

我想補充這個邏輯,其在一個正常的SQL語句工作,但因爲我不能修改Crystal的SQL我堅持......

AND ((subcontract in (select subcontract from table 
    group by subcontract having count(*) = 1)) 
    OR (subcontract in (select subcontract from table group by subcontract having count(*) > 1) 
AND "approved = 'Y')) 

我已經看着你選擇和組專家,但我只是沒有達到那裏。有沒有人找到一些簡單的解決方法? 謝謝!

編輯:我已經有一個選擇的專家涉及轉包,但我不知道如何添加什麼,我想它,因爲它是基於驗證和我想的過濾器組件添加到它..

(
if (IsNull({?BeginSub}) or Trim({?BeginSub})="") then 
    true 
else 
    {subcontract} >= Trim({?BeginSub}) 
) and 
(
if (IsNull({?BeginSub}) or Left(Trim({?BeginSub}),3) in ["","zzz"]) then 
    true 
else 
    {subcontract} <= Trim({?EndSub}) 
) 

編輯更新:我找到了一種方法來獲得我想要的水晶報告,但是當我從我的應用程序運行報告時,它會引發錯誤。我用我想要的條件創建一個命令,然後鏈接到command.subcontract = othertables.subcontract的其他表。

+0

你如何檢查合同是否被批准?你的數據庫結構是什麼?數據的外觀如何 – Siva

+0

項目是否被批准有YN列。問題在於他們可以批准合同的各個部分,因此合同可以有Y批准的記錄和N未批准的記錄。他們還需要訪問尚未被批准的項目,以推動他們通過系統。所以我需要讓我的數據集包括那些只有一個實例的分包合同,如果他們有多個實例只包含那些具有批准狀態的實例。 – Kdunc2015

+0

我的問題是Y和N記錄在同一列或另一列 – Siva

回答

0

我發現我需要什麼。我添加了以下SQL表達式字段,

 (Select count(subcontracts) from subcontract table) 

然後添加以下到選擇專家

 if(({%SubContractCount} <>2) or ({%SubContractCount}>1 AND 
     approved = Y)) then true else false 

謝謝!!