修改现有Crystal Reports以包含其他筛选器

时间:2015-09-23 21:54:41

标签: crystal-reports

我有一个我没有做的现有报告。这很复杂。它不使用命令功能,因此我无法直接更改SQL代码中的过滤器。我已经回顾了几个链接,基本上说没有办法解决这个问题,我需要创建一个新命令并重做报告。我想找到一个不涉及我重做报告的解决方案。

我需要的逻辑是只选择只有一个实例的子合同(无论是否批准),如果他们有两个关联的实例,则只选择已批准的实例

这是当前的后端Crystal 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。

1 个答案:

答案 0 :(得分:0)

我找到了我需要的东西..我添加了以下sql表达式字段,

      (Select count(subcontracts) from subcontract table)

然后我将以下内容添加到选择专家

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

谢谢!