我正在尝试添加子报表并将参数从主报表传递到子报表。当我将所有内容链接起来时,子报告会遍历数千条记录,查找有关我的测试对象的保险信息,但没有记录。
如果我使用查询工具并使用我希望在 Crystal 报表查询中添加的 WHERE 子句运行查询,则需要几毫秒才能返回任何行。
当我在水晶报表中运行预览时,需要几分钟时间才能浏览所有记录。为什么查询没有返回应有的记录?或者只是我正在寻找的一个具体记录(如果有记录)?我不希望所有 10,000 多条记录都返回到 crystal,而只是根据我从主报告传递的参数应该得到的 1 或 0!
感谢您的指导,莱斯利
编辑:我对需要 PatID 和 Episode_Number 的主报告有一个查询。我对子报告有一个查询,希望根据相同的 PatID 和 Episode_Number 进行过滤。子报表查询为:
select b.patid, b.episode_number, b.guarantor_name, Trim(b.guar_address_line1|| ' ' || ifNull(b.guar_address_line2, '')) address, b.guar_address_city || ', ' || b.guar_address_state || ' ' || b.guar_address_zip location,
b.guar_phone_number
from billing_guar_data b
我没有在该命令中添加任何“额外”参数。我有通过此链接添加的这些参数:
Pm-Command.PATID and Pm-Command.Episode_Number
我在创建子报告时从链接页面中选择的
小智 4
我以前做过这个。我花了一些时间才弄清楚如何将参数获取到子报表中的 SQL 命令中。确实如此,您在那里使用的 SQL 将获取所有记录,因为没有where子句。如果您传递参数以在Select Expert中获取它,那么您将在检索到 10,000 多条记录后进行过滤。从主报表中,参数必须进入子报表的 SQL 命令才能检索特定记录。以下是具体操作方法。
您可以传递原始参数或主报告中的字段(如果可用)。由于您编写了“Pm-Command.PATID 和 Pm-Command.Episode_Number”,因此您正在传递该字段。首先,在 SQL 命令中添加一个where子句
select
b.patid, b.episode_number, b.guarantor_name, Trim(b.guar_address_line1|| ' ' || ifNull(b.guar_address_line2, '')) address, b.guar_address_city || ', ' || b.guar_address_state || ' ' || b.guar_address_zip location, b.guar_phone_number
from
billing_guar_data b
where
b.patid = {?Pm-Command.PATID}
and b.episode_number = {?Pm-Command.Episode_Number}
Run Code Online (Sandbox Code Playgroud)
接下来,在同一窗口的侧面参数列表中,创建2个参数
然后在主报告中调出“更改子报告”链接...您发送的 2 个参数应该仍然存在。确保两个参数上的“根据字段选择子报表中的数据”均未选中。如果选中此选项,则会将参数发送到Select Expert。因为它将出现在 SQL 命令中,所以应该取消选中它。