2015-09-23 40 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 

谢谢!!