【问题标题】:how to make dynamic page header in crystal reports如何在水晶报表中制作动态页眉
【发布时间】:2011-09-08 08:50:52
【问题描述】:

我的问题是:

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

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

关键是根据名称或...等部分属性来决定,但水晶报表公式工作室中没有这样的参数

我应该如何解决这个问题 我正在处理水晶报表 13。

【问题讨论】:

  • 您能澄清一下您要完成的工作吗?您是否希望页眉的第一个版本与每个组的第一条记录一起显示,而不同的版本与后续页面一起显示?然后在一个新组上,再次打印第一个版本,然后是其余的?如果是这样,您是否在每个组的末尾开始一个新页面?

标签: dynamic crystal-reports


【解决方案1】:

也许您可以使用公式组合,所有这些都应在打印时进行评估(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 的布尔标志。在第一个详细信息部分的开头,我放置了打开标志的第二个公式字段,并在该部分的末尾使用了第三个公式字段,我关闭了标志。我使用了 WhilePrintingReocrds();在我所有公式字段的开头。我根据定义的布尔标志决定我的主要形式字段。但它只适用于第一次或第二次运行,我不明白它现在不起作用的问题是什么,我的解决方案有什么问题?
  • 可能是某些部分溢出到下一页或类似内容。让公式在正确的时刻进行评估通常非常棘手。您可以使用 EvaluateAfter() 函数来更改计算顺序。另一种方法是使用 PageNumber 函数(如果您真的事先知道您的详细信息部分占用了多少页),那么您可能需要在每个组开始时重置页码。不幸的是,我无法提供更详细的提示 - 这需要对您的数据报告进行试验。
猜你喜欢
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多