Crystal Reports - 向"命令"查询添加参数

Jer*_* F. 6 crystal-reports

Crystal版本 - Crystal Reports 2008 Business Objects - XI

我编写了一个查询来填充子报表,并希望根据用户的输入将参数提取到该查询.我的问题是,我需要在'Where'子句的第一行接受参数的正确语法是什么?

这是我在Crystal Reports中使用的查询:

Select 
Projecttname,
ReleaseDate,
TaskName

From DB_Table

Where
(Project_Name like {?Pm-?Proj_Name})) and 
(ReleaseDate) >= currentdate
Run Code Online (Sandbox Code Playgroud)

cra*_*aig 9

在命令中时,单击"创建"以创建新参数; 称之为'project_name'.创建它后,双击其名称将其添加到命令的文本中.您的查询应该类似于:

SELECT Projecttname, ReleaseDate, TaskName
FROM DB_Table
WHERE Project_Name LIKE {?project_name} + '*'
AND ReleaseDate >= getdate() --assumes sql server
Run Code Online (Sandbox Code Playgroud)

如果需要,将主报表链接到此({?project_name})字段上的子报表.如果未在主报表和子报表之间建立链接,CR将提示您输入子报表的参数.

在2008之前的版本中,命令的参数仅允许为标量值.


Jer*_* F. 6

我想出的解决方案如下:

  1. 在您最喜欢的查询开发工具中创建SQL查询
  2. 在Crystal Reports中,在主报表中,创建要传递给子报表的参数
  3. 使用"报告创建向导"的"数据"部分中的"添加命令"选项和#1中的SQL查询创建子报告.
  4. 将子报表添加到主报表后,右键单击子报表,选择"更改子报表链接...",选择链接字段,然后取消选中"根据字段选择子报表中的数据:"

    注意:您可能必须首先添加参数,并选中"基于字段选择子报表中的数据:",然后返回"更改子报表链接"并在创建子报表后取消选中该参数.

  5. 在子报表中,单击"报表"菜单,"选择专家",使用"公式编辑器",将#1中的SQL列设置为等于或类似于#4中选择的参数.

                    (Subreport SQL Column)  (Parameter from Main Report)
            Example:  {Command.Project} like {?Pm-?Proj_Name}
    
    Run Code Online (Sandbox Code Playgroud)

  • 在Crystal级别上过滤效率非常低.最好在可能的情况下在数据库级别进行过滤. (2认同)