将参数结果传递给子报告命令

时间:2014-12-15 20:01:12

标签: sql crystal-reports parameter-passing subreport

我有一个子报告,它将根据两件事情搜索一个拉出所有匹配的表格。 1.)子报表命令中的一些过滤标准,以及2.)它将根据主报表中的参数提取的标准进行搜索。

1。)这可能吗?我已经尝试了几天才能使这个工作,但我觉得我错过了一些东西。我无法在主报表中获取该字段,以将信息传递给子报表中的命令参数。

以下是子报告的命令.....

DECLARE @DIE VARCHAR (20)
SET @DIE = '1315240018'

SELECT DISTINCT BCKUPDIE.TOOL1

FROM FS11HD AS BCKUPDIE

JOIN FS11HD AS ORGDIE 
    ON 
    BCKUPDIE.DIE_SHAPE = ORGDIE.DIE_SHAPE
    AND BCKUPDIE.AROUND1 = ORGDIE.AROUND1
    AND BCKUPDIE.ACROSS1 = ORGDIE.ACROSS1
    WHERE ORGDIE.TOOL1 = @DIE

在sql中运行时,它会给我任何具有匹配条件的TOOL1行。这就是我想要的子报告,我是以错误的方式进行的吗?

2 个答案:

答案 0 :(得分:0)

我们有一个旧版本的Crystal报告(XI),但逻辑可能与您的版本相同。

在菜单上选择[编辑] [子报告链接]。

从选择列表中选择子报告,然后将您的选择选项映射到子报告选择标准。

在子报表上,您必须具有参数字段,这些参数字段将使值与您希望传递的值匹配。例如,如果您在主报表上选择日期作为选择条件,并且您希望子报表也按此日期过滤,则在子报表中创建日期参数。通过将所有选择标准与[链接]值相关联,它将表现为参数的直接传递,而不会通过文档之间的链接回答所有提示框。

答案 1 :(得分:0)

我觉得你采取了难以实现的要求,尝试以下解决方案我希望这很容易实现。

首先从命令中删除@Die,然后将主报告中的@Die值作为公式字段的一部分传递。

您的子报表查询将更改为

SELECT DISTINCT BCKUPDIE.TOOL1

FROM FS11HD AS BCKUPDIE

JOIN FS11HD AS ORGDIE 
    ON 
    BCKUPDIE.DIE_SHAPE = ORGDIE.DIE_SHAPE
    AND BCKUPDIE.AROUND1 = ORGDIE.AROUND1
    AND BCKUPDIE.ACROSS1 = ORGDIE.ACROSS1

在主报告中创建公式@Die并输入数据'1315240018'

现在链接主报告和子报告,并在链接中将@Die公式和主报告参数传递给子报告,通过这个,您可以将这些作为子报告中的参数。

在子记录的记录选择中写如下。

ORGDIE.TOOL1 = ?Die //value passed from main report
and your parameter linking

通过此,您的过滤条件将添加到子报告查询中。

这应该可以让我知道任何错误