Dynamic 如何在crystal reports中创建动态页眉

Dynamic 如何在crystal reports中创建动态页眉,dynamic,crystal-reports,Dynamic,Crystal Reports,我的问题是: 该报告强制我有一个包含4个字段的页眉部分。但问题是其中一个字段(例如f1)应该隐藏在第一个详细信息部分的页面中,并显示在其他一些详细信息部分中 例如,假设第一个细节部分(或我在项目中使用的子报告)需要d1页,第二个细节部分(或我在项目中使用的子报告)需要d2页,目前: p1字段应隐藏在第一个d1页面标题中,并显示在下一个d2页面标题中 关键的一点是决定基于部分属性,如名称或。。。但crystal reports formula workshop中没有这样的参数 我该如何解决这个问题

我的问题是:

该报告强制我有一个包含4个字段的页眉部分。但问题是其中一个字段(例如f1)应该隐藏在第一个详细信息部分的页面中,并显示在其他一些详细信息部分中

例如,假设第一个细节部分(或我在项目中使用的子报告)需要d1页,第二个细节部分(或我在项目中使用的子报告)需要d2页,目前: p1字段应隐藏在第一个d1页面标题中,并显示在下一个d2页面标题中

关键的一点是决定基于部分属性,如名称或。。。但crystal reports formula workshop中没有这样的参数

我该如何解决这个问题
我正在使用crystal reports 13。

可能您可以使用公式组合,所有公式都应该在打印时进行计算(WhilePrintingReocrds();函数作为公式的第一行)

在d1部分的顶部和d2部分的底部放置不可见公式,该公式设置了一些公共变量,如:

WhilePrintingReocrds();
BooleanVar show_header_f1 := true;
''
(可能您也需要在报告标题中使用相同的公式。) 在d2部分的顶部和d1部分的底部放置另一个不可见公式,该公式清除相同的变量:

WhilePrintingReocrds();
BooleanVar show_header_f1 := false;
''
在标题字段f1的抑制公式中,编写下一个函数:

WhilePrintingReocrds();
Not BooleanVar show_header_f1

可能会有语法错误,但我希望你能理解。您可能需要使用这些公式的位置来创建请求的行为。

非常感谢您的回复,我尝试了您的想法:通过报告标题中的第一个公式字段,我定义了一个布尔标志,该标志等于false。在第一个细节部分的开头,我把我的第二个公式字段设置为打开标志,在该部分末尾使用第三个公式字段,我将标志设置为关闭。我使用whileprinting reocrds();在我所有公式字段的开头,我根据定义的布尔标志决定我的主公式字段。但它只在第一次或第二次运行时起作用,我无法理解它现在不起作用的问题是什么,我的解决方案有什么问题?可能是某些部分溢出到下一页或类似页面。让公式在正确的时刻进行计算通常是相当棘手的;您可以使用EvaluateAfter()函数更改计算顺序。另一种方法是使用PageNumber函数(如果您事先确实知道详细信息部分占用了多少页),那么您可能需要在每个组开始时重置页码。不幸的是,我不能给出更详细的提示——这将需要对你的数据报告进行试验。你能澄清一下你想要实现什么吗?是否希望页眉的第一个版本显示每个组的第一个记录,以及后续页面的不同版本?然后在新组上,再次打印第一个版本,然后打印其余版本?如果是的话,你会在每个小组的末尾开始一个新的页面吗?