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
答案 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)
我提出的解决方案如下:
将子报表添加到主报表后,右键单击子报表,选择“更改子报表链接...”,选择链接字段,然后取消选中“根据字段选择子报表中的数据:”< / p>
注意:您可能必须首先添加参数,并选中“基于字段选择子报表中的数据:”,然后返回“更改子报表链接”并在创建子报表后取消选中它。
在子报表中,单击“报表”菜单,“选择专家”,使用“公式编辑器”,将#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。