在子报告中,如果if语句中的两个条件都存在,我会尝试向主报告返回“是”或“真”。问题是报告评估每一行,我希望它在一行中查找所有行中的两个条件。
我尝试了什么:
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"
答案 0 :(得分:0)
创建两个sql expression
字段:
// {%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
...
答案 1 :(得分:0)
抱歉,没有意识到您的问题是插入摘要字段。
创建两个数字函数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()
。
创建2个共享变量:
shared numbervar max_isInPRODCAT:= {max_isInPRODCAT}
shared numbervar max_isNotInPRODCAT:= {max_isNotInPRODCAT}
然后在主报告中,检查max_isInPRODCAT = 1和max_isNotInPRODCAT = 1
HTH