1

我在水晶报表中有一个子报表,但返回了 0 条记录,但子报表坚持要提取曾经输入的每个订单备注,但仍显示 0 条备注。

这很奇怪,它说“读取记录 0 of 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})
4

1 回答 1

0

当水晶报表出现这样的行为时,意味着有一些逻辑无法在数据库服务器上完成,因此必须在本地完成。这通常是由于在记录选择公式中使用了未翻译成数据库语言的 CR 函数造成的。

在这种情况下,我认为是参数为 null 导致它(例如,该语句{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}
于 2013-04-25T16:55:04.357 回答