Sql 如何在Crystal Reports中创建if and or parameter语句

Sql 如何在Crystal Reports中创建if and or parameter语句,sql,parameters,crystal-reports,Sql,Parameters,Crystal Reports,很抱歉,我发了一个新问题,但我就是想不出如何搜索这个问题 我正在创建一个包含多个参数的Crystal报表,目前每个参数都由报表>选择公式部分(而不是SQL命令部分)中的“and”连接。 我还没有完全编写这份报告,它包含许多数组来处理多个文本值和通配符搜索,但我认为我的问题应该更多地围绕逻辑,而不是技术功能 所以… 参数用于产品代码、日期范围、国家/地区、批号等。 目前我关注的参数是故障和针对产品投诉的关键字搜索 (查询1)如果所有其他参数都设置为默认值,我可以输入Fault compositio

很抱歉,我发了一个新问题,但我就是想不出如何搜索这个问题

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

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

(查询1)如果所有其他参数都设置为默认值,我可以输入Fault composition='Assembly–Code',这会给我17条记录

(查询2)输入关键字=“%unit%”可以得到55条记录

这两个参数由一个连接,因此如果我使用Fault组合='Assembly–Code'和关键字='%unit%',那么我会得到12条记录。如果将2个查询与或连接,则我将获得12条记录

如果在excel中比较查询1和查询2之间的唯一记录,则有60条记录的错误组合='Assembly–Code'或关键字='%unit%

如何编写参数公式,一次查询得到60条唯一记录

非常感谢! 加雷斯

编辑-添加代码

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

(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))

您所描述的是不可能的,您确定您已将
替换掉了吗?还要检查括号(当您混合使用不同的布尔运算符时,请使用括号)。否则,我们需要原始查询,因为这有点不透明。修改了我的原始请求。还有更多的查询,但都只是X和Y和。。。而且不会影响我所关心的部分。很难说为什么
60
记录没有被选中。。因为我们不知道表格和逻辑的联系。。我想给出的一个建议是从
Crystal report
中选择查询并在datbase上启动它,然后通过更改查询来尝试您的组合。。。然后您将能够知道需要更改的部件。。。