Crystal Reports,根据特定的详细信息行驱动页眉/页脚决策



我有一个简单的报告,可以显示许多详细信息行。我想针对一个特定的行,并使用它的值来填充报表页眉和页脚中的方面。

例如,我知道我显示的详细信息行中的最小值(primarykey)是多少。一个简单的公式就能捕捉到这一点。

我想用最小值(primarykey)拾取行的其他属性,并显示在页眉或页脚中。

因此,我想选择一个特定的行选择并在页眉和页脚中使用其数据,类似于:从DETAILTSROWS中选择名称和日期,其中DETAILT.PRIMARYKEY=最小值(DETAILT.BRIMARYKey)

我曾想过在这里使用子报表,并将值传递回主报表,但这并不能解决问题。。。例如,我尝试将最小值(DETAIL.PRIMARYKEY)传递到子报表,以便子报表只加载我想要的行,然后通过共享变量将值传递回。但我不想显示子报表,如果我抑制它,我的共享变量似乎不会填充。

在报表页脚中显示值比在页眉中显示值更容易。您所需要做的就是将每行的主键与maximum({DETAIL.PRIMARY_KEY})的值进行比较并保存这些值。所以类似于:

stringvar saved_column1;
stringvar saved_column2;
if {DETAIL.PRIMARY_KEY}=maximum({DETAIL.PRIMARY_KEY}) then
 (saved_column1 := {DETAIL.COLUMN1};
 saved_column2 := {DETAIL.COLUMN2})

对于页眉,我能想到的唯一方法就是像你已经在做的那样使用子报表。不过,我只想格式化子报表以显示它自己,而不是乱用共享变量。

好的,所以SUBREPORT选项是可行的。

SUBREPORT是传递给它的最小报告,即您要查找的值。

长篇大论,我使用一个公式链接到它,该公式基本上包含:最小值(DETAIL.PRIMARYKEY).

子报表依次选择单个详细记录。

在子报表中,构建一个公式并将其放入其报表标题中:

WhilePrintingRecords;
Shared DateTimeVar subCreationDate := {DETAIL.CREATIONDATE};
Shared StringVar subCreationName := {DETAIL.CREATIONNAME};

最后,取消SUBREPORT上的所有部分(删除不需要的部分),然后关闭。

关于主要报告。。。不确定,但看起来分报告可以放在任何地方。因为您已经在SUBREPORT中抑制了元素,所以它不会显示在主报表上。(所以没有必要在主报告上进行抑制——如果你在那里进行抑制,它无论如何都不会起作用!)

现在在主报表上创建公式(在我的例子2中),并在每个公式中重复变量声明。

Shared DateTimeVar subCreationDate
Shared StringVar subCreationName

同样,以上每一项都包含在各自的公式声明中。从那时起,您就可以在主报告中使用"标准"公式了。他们可以像其他人一样被引用!

Thx Ryan-你的回答确实帮助我达到了我需要去的地方-你仍然获得了我的+1!

相关内容

  • 没有找到相关文章

最新更新