如何在Crystal Reports中创建if和or参数语句

时间:2014-06-29 22:54:49

标签: sql parameters crystal-reports

发表新问题的道歉,但我想不出如何搜索这个问题。

我正在创建一个包含多个参数的Crystal Report,目前每个参数都通过报告>中的“AND”连接。选择公式是报告的一部分(不是SQL命令部分)。 我还没有完全创作报告,它包含许多处理多个文本值和通配符搜索的数组,但我认为我的问题应该更多地围绕逻辑而不是技术功能。

所以... 参数适用于产品代码,日期范围,国家/地区,批号等。 目前我关注的参数是针对产品投诉的错误和关键字搜索。

(查询1)如果所有其他参数都设置为默认值,我可以输入Fault Combination ='Assembly - Code',这样就可以得到17条记录。

(查询2)输入keyword ='%unit%'可以得到55条记录。

2个参数通过AND连接,所以如果我使用Fault Combination ='Assembly - Code'和Keyword ='%unit%',那么我得到12条记录。如果用OR连接2个查询,那么我得到12条记录。

如果我在excel中比较查询1和&之间的唯一记录。 2然后有60个记录,故障组合='汇编 - 代码'或关键字='%unit%。

如何编写参数公式以通过一个查询获取60个唯一记录?

非常感谢! 加雷

编辑 - 已添加代码

这是我关心的部分。数组在语句的前面定义,'*'和amp;下面查询的'%'部分只是为了处理SQL和Crystal之间的不同通配符运算符。还有很多其他参数,但这3个是唯一需要OR类型或连接的参数。 希望有所帮助!

(IF      "%" LIKE array_fn2 
THEN    ((ISNULL({Command.FaultNoun})=TRUE) OR ({Command.FaultNoun} LIKE '*'))
ELSE    IF      {Command.RecordType} = 'Complaint'
        THEN    ({Command.FaultNoun} like array_fn2)
        ELSE    ((ISNULL({Command.FaultNoun})=TRUE) OR ({Command.FaultNoun} LIKE '*'))) AND

(IF      "%" LIKE array_fa2 
THEN    ((ISNULL({Command.FaultAdjective})=TRUE) OR ({Command.FaultAdjective} LIKE '*'))
ELSE    IF      {Command.RecordType} = 'Complaint'
        THEN    ({Command.FaultAdjective} like array_fa2)
        ELSE    ((ISNULL({Command.FaultAdjective})=TRUE) OR ({Command.FaultAdjective} LIKE '*'))) AND


(IF ("%" LIKE array_k2) OR ({Command.RecordType} = 'Sale')
THEN ((ISNULL({Command.ActualStatements})=TRUE) OR ({Command.ActualStatements} LIKE '*') 
OR (ISNULL({Command.ResultsAnalysis})=TRUE) OR ({Command.ResultsAnalysis} LIKE '*') 
OR (ISNULL({Command.Observation})= TRUE) OR ({Command.Observation} LIKE '*'))
ELSE
({Command.ActualStatements} like array_k2) OR
({Command.ResultsAnalysis} like array_k2) OR
({Command.Observation} like array_k2))

0 个答案:

没有答案