修改现有的水晶报表以包含额外的过滤器



我有一个我没有做的现有报告。这很复杂。它不使用命令函数,所以我不能直接更改SQL代码中的过滤器。我已经审查了几个链接,基本上说没有办法绕过这个,我将需要创建一个新的命令和重做报告。我想找到一个不需要我重做报告的解决方案。

我需要的逻辑是只选择只有一个实例的分包合同(不管是否批准),如果它们有两个实例关联,只选择已批准的那个

这是当前后台Crystal SQL

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

我想添加这个逻辑,在一个正常的sql语句工作,但因为我不能修改水晶的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.

的其他表

我找到我需要的了。我添加了以下sql表达式字段

      (Select count(subcontracts) from subcontract table)

然后我在select expert

中添加了以下内容
        if(({%SubContractCount} <>2) or ({%SubContractCount}>1 AND  
       approved = Y)) then true else false 

谢谢! !

最新更新