If statement Crystal报告试图在同一字段中包含和排除的if语句

If statement Crystal报告试图在同一字段中包含和排除的if语句,if-statement,crystal-reports,subreport,If Statement,Crystal Reports,Subreport,在子报表中,如果if语句中的两个条件都存在,我将尝试对主报表返回“Yes”或True。问题是报告对每一行进行求值,我希望它将所有行作为一个组来查找这两个条件 我所尝试的: shared stringvar PRODCAT:= if ({OEORDLIN_SQL.prod_cat} in ["TRD","TSI"]) and not({OEORDLIN_SQL.prod_cat} in ["TRD","TSI"]) then "Yes" else "No" 我为条件A和B添加了公式,并在公式

在子报表中,如果if语句中的两个条件都存在,我将尝试对主报表返回“Yes”或True。问题是报告对每一行进行求值,我希望它将所有行作为一个组来查找这两个条件

我所尝试的:

shared stringvar PRODCAT:= if ({OEORDLIN_SQL.prod_cat} in ["TRD","TSI"])
and 
not({OEORDLIN_SQL.prod_cat} in ["TRD","TSI"]) then "Yes" else "No" 
我为条件A和B添加了公式,并在公式中使用了它们,但得到了相同的结果。它将仅计算每一行:

WhilePrintingRecords;
shared stringvar PRODCAT:= if {@a} = "Yes" and {@b} = "Yes" then "Yes" else "No"

创建两个
sql表达式
字段:

// {%TRD}
(
  SELECT COUNT(1)
  FROM   OEORDLIN_SQL a
  WHERE  order_id = order.order_id
  AND    prod_cat='TRD'
  GROUP BY order_id
)

// {%TSI}
(
  SELECT COUNT(1)
  FROM   OEORDLIN_SQL b
  WHERE  order_id = order.order_id
  AND    prod_cat='TSI'
  GROUP BY order_id
)
根据需要使用:

// {@do something}
If {%TSD}>0 AND {%TSI>0 Then
  ...
Else
 ...

抱歉,没有意识到您的问题是插入摘要字段

创建两个数值函数,isInPRODCAT和isNotInPRODCAT。将它们插入报告的详细信息部分

isInPRODCAT:= if ({OEORDLIN_SQL.prod_cat} in ["TRD","TSI"]) then 1 else 0
isNotInPRODCAT:= if not({OEORDLIN_SQL.prod_cat} in ["TRD","TSI"]) then 1 else 0 
然后在子报表的报表页脚部分插入两个摘要字段。使它们成为两个函数中的
max()

创建两个共享变量:

    shared numbervar max_isInPRODCAT:= {max_isInPRODCAT}        
    shared numbervar max_isNotInPRODCAT:= {max_isNotInPRODCAT}
然后在主报告中,检查max_isInPRODCAT=1和max_isNotInPRODCAT=1


HTH

我在理解代码中的逻辑时遇到了一些问题。最简单地说,如果子报表中同时出现“TRD”和“TSI”,您希望子报表返回True?为什么不在邮件报表中使用
sql表达式
?另一个问题是,{oOrdlin\u SQL.prod\u cat}怎么能同时在TRD和TSI中而不在?子报表通过了。问题是报告中的每个项目都在运行公式。所以如果有三个项目,我得到三个结果。我需要对所有项目整体运行公式并返回一个结果。Ryan,数据来自订单上的项目。因此,在订单上,我需要查找是否有prodcat为“TRD”或“TSI”的项目,以及哪些项目没有这些prodcat。示例-项目1 prodcat=“TRD”项目2 proccat=“ABC”。Craig-每个项目都作为一行返回。按照您的建议执行,但公式在行级别进行评估,问题与之前相同。还有其他想法吗?您需要在主报告中检查计算共享变量的详细信息部分下面的部分。检查主报表中子报表的返回值,以确保正确设置和传递这些值。子报表传递正常。问题是报告中的每个项目都在运行公式。所以如果有三个项目,我得到三个结果。我需要对所有项目作为一个整体运行公式,并返回一个结果。