我对Crystal Reports有点陌生,并且遇到了一个大问题(至少对我来说是个大问题)...我需要从详细信息部分获取最后一个记录字段,并将其显示在标题部分中。我正在使用以下两个简单公式:
// --------------------------------------------- --------- 标头部分:
//公式1(仅用于显示从公式2获得的变量)
同时打印记录; 共享号码var Saldo;
详细信息部分:
//公式2
whileprintingrecords;
shared numbervar Saldo;
if onlastrecord = true then Saldo:={spKardex_CodZOFRI.amount};
// --------------------------------------------- ---------
例如对于4个记录的数据集: 1-255 2- 122 3- 69 4- 56
我总是得到第一个金额(在这种情况下为255),但是我需要在标头部分中输入最后一个(56)。
答案 0 :(得分:1)
不幸的是,由于Crystal Reports的工作原理,该公式在标题部分中不起作用。生成报告时,CR在开始打印节之前不会读取整个数据集。打印标题部分时,CR仅读取数据集中的第一条记录,或数据集中的分组数据中的第一条记录。有一些功能允许您读取上一个记录或下一个记录的值,但是其余数据集不在范围内。因此,即使报表开始打印甚至是详细信息部分中的第一条记录,所有标头部分都已经完整打印,无法更改。
您的公式将在页脚节中工作,但是OnLastRecord = true
部分将被认为是多余的,因为打印页脚节时报表始终位于最后一条记录上。 OnLastRecord的用法通常仅用于允许在详细信息部分的最后一条记录内进行格式控制。
如果您特别需要细节部分最后一条记录中的值显示在标题部分中,则需要使用SQL表达式字段或子报表。
答案 1 :(得分:0)
如果像您的示例一样,详细记录按降序排列,则在标题为Minimum({field})的标题中创建一个摘要。