如何将参数字段传递给水晶报告中的'Command query' 8.5



我使用cr8.5生成报表。我正在传递一个参数字段从VB到水晶报告。我已经为报表添加了SQL查询,其中"WHERE"条件是从参数字段中获得的。

说select * from tableA where column1='{?prameter1} '

当我预览时,报告是空的。请告知我错过了什么

在旧版本的Crystal中,不可能修改查询以包含参数值—您只能添加常量值。因此,修改后的查询是从表a中选择记录,其中列n1等于字符串"{?参数{? Prameter1}的

为了按参数值进行选择,将查询重置为其默认值-可能:

select * from tableA

并在Crystal记录选择对话框中添加一个条件:

{tableA.column1} = {?prameter1}

(注意-后一种情况没有引号)

编辑:

如上所述,您需要从查询中删除参数,因为它传递给SQL 的方式与在Crystal中使用Show query时看到的方式完全相同。如果您将查询修改为select * from tableA where column1={?prameter1}, Crystal将尝试将该字符串作为SQL语句运行,因此将返回一个错误-它不会尝试将参数的值替换到SQL语句中。

然而,如果您使用参数在报表中添加Crystal记录选择条件,Crystal将在运行报表时尝试将选择条件添加到SQL中-如果您在添加Crystal记录选择公式后使用Show Query ,它应该首先提示您输入参数的值,然后向您显示包含选择条件的查询(使用输入参数的值,而不是参数名称)。

在SQL中自动添加Crystal记录选择条件有几个限制:

  • SQL查询必须是非自定义的(即:不修改查询的默认版本),否则Crystal将不会尝试修改查询——自定义优先。(这就是为什么将查询重置为默认形式的原因。)
  • Crystal记录选择条件需要相对简单——数据库上的一系列and条件和参数字段值通常是可以的,但andor条件混合,或Crystal公式值的条件,可能会导致Crystal不修改查询条件。

最新更新