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

时间:2011-02-16 15:27:02

标签: 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

4 个答案:

答案 0 :(得分:9)

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

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

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

在2008年之前的版本中,命令的参数只允许为标量值。

答案 1 :(得分:6)

我提出的解决方案如下:

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

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

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

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

答案 2 :(得分:3)

Select Projecttname, ReleaseDate, TaskName From DB_Table Where Project_Name like '%{?Pm-?Proj_Name}%' and ReleaseDate >= currentdate

请注意单引号和通配符。我花了30分钟搞清楚类似的事情。

答案 3 :(得分:0)

试试这个:

Select Project_Name, ReleaseDate, TaskName
From DB_Table
Where Project_Name like '{?Pm-?Proj_Name}'
  And ReleaseDate >= currentdate

currentdate 应该是有效的数据库函数或字段才能工作。如果您使用的是MS SQL Server,请改用GETDATE()。

如果您只想根据主报表中的参数过滤子报表中的记录,则可以更轻松地将表添加到子报表,然后在主报表和子报表之间创建Project_Name链接。然后,您也可以使用“选择专家”来过滤ReleaseDate。