我在水晶报表中有一个子报表,但是返回了0条记录,但是子报表坚持拉动所有输入的订单备注,但仍显示0条备注。
这很奇怪,它说“读取记录0的150000”并且不断增加。
仅报告子报告的选项标准是公司代码,客户代码和订单号。他们都被传递了“{?PM -...”的事情。
我打开了一个空白子报表的预览版,SQL甚至没有提到选择标准。单独运行的查询确实会显示每条评论。
关于如何发生这种情况的任何想法?
子报告公式:
({E_ORD_H.COMP_CODE} = {?Pm-E_ORD_H.COMP_CODE})
and
({E_ORD_H.CUST_CODE} = {?Pm-E_ORD_H.CUST_CODE})
and
({E_ORD_H.ORD_NUM} = {?Pm-E_ORD_H.ORD_NUM})
答案 0 :(得分:0)
当Crystal Report的行为与此类似,这意味着在DB服务器上有一些无法完成的逻辑,因此必须在本地完成。通常这是由于在记录选择公式中使用CR函数而导致的,该函数不会转换为DB的语言。
在这种情况下,我相信当参数为空时会导致它(例如,语句{E_ORD_H.COMP_CODE}=<null>
并不意味着 CR将能够预测到这种情况并在子报表的查询中替换{E_ORD_H.COMP_CODE} is null
。相反,您需要显式检查那些空值参数:
not(isnull({?Pm-E_ORD_H.COMP_CODE}))
and {E_ORD_H.COMP_CODE} = {?Pm-E_ORD_H.COMP_CODE}
and not(isnull({?Pm-E_ORD_H.CUST_CODE}))
and {E_ORD_H.CUST_CODE} = {?Pm-E_ORD_H.CUST_CODE}
and not(isnull({?Pm-E_ORD_H.ORD_NUM}))
and {E_ORD_H.ORD_NUM} = {?Pm-E_ORD_H.ORD_NUM}