获取 Crystal 报告中的最大数量?
Get maximum number in Crystal Reports?
传递给报表的数据源有一个Serial
属性,我需要为每个细节部分写一个这种格式的字段:[Serial] from [Top serial]
我为顶级连载写了这个公式:
Maximum({VW_Sizes.Serial})
但它得到的是当前序列号,所以不是:1 of 2, 2 of 2
它得到 1 of 1, 2 of 2.
您可以在详细信息部分的公式字段中将该变量与以下内容连接起来:
{VW_Sizes.Serial} & " from " & Maximum ({VW_Sizes.Serial})
否则您只能将具有最大值的汇总字段放在详细信息部分之外,例如 总计(报表页脚)。
您 运行 遇到的问题是,当详细信息部分的每次迭代都打印到报表时,它只知道已经打印到报表的行的 SERIAL 的最大值。
我更喜欢使用 SQL 表达式字段来解决这个问题。这允许您在将所有行打印到报告之前使用 SQL 查询检索分组数据的 SERIAL 的最大值。
像这样的东西通常对我有用。
(
SELECT MAX("ORD_DETAIL"."ORD_DET_SEQNO")
FROM ORD_DETAIL
WHERE "ORD_DETAIL"."ORDERS_ID" = "ORDERS"."ID"
)
在我的示例中,我有两个表,ORDERS
和 ORD_DETAIL
。 ORD_DETAIL.ORD_DET_SEQNO
包含订单详细信息行的序号。我的数据按 ORDERS.ID
分组以遍历每个订单,以下公式字段将为每个明细行打印一个输出,指示其序列超出该订单的所有序列号的最大值。
ToText({ORD_DETAIL.ORD_DET_SEQNO}) + " of " + ToText({%Max});
在此公式中,%Max
是上例中 SQL 表达式字段的名称。
如果您的数据中没有重置序列号的地方,那么您的 SQL 表达式字段将如下所示。
(
SELECT MAX(Serial)
FROM VW_Sizes
)
如果您需要在某些点进行重置,只需添加一个引用 table.column 的 WHERE 子句,该子句用于对一组 SERIAL 值进行分组。
我认为有一种更简单的方法可以做到这一点,您需要从字段资源管理器中创建 运行 字段的报告:
设置字段名称,例如(max_Serial)
select 您要总结的领域。
在 select 处理您的字段后 crystal 报告根据字段数据类型提供多种类型的摘要。
select 最大值并根据您的要求重新设置,例如每组之后。
传递给报表的数据源有一个Serial
属性,我需要为每个细节部分写一个这种格式的字段:[Serial] from [Top serial]
我为顶级连载写了这个公式:
Maximum({VW_Sizes.Serial})
但它得到的是当前序列号,所以不是:1 of 2, 2 of 2 它得到 1 of 1, 2 of 2.
您可以在详细信息部分的公式字段中将该变量与以下内容连接起来:
{VW_Sizes.Serial} & " from " & Maximum ({VW_Sizes.Serial})
否则您只能将具有最大值的汇总字段放在详细信息部分之外,例如 总计(报表页脚)。
您 运行 遇到的问题是,当详细信息部分的每次迭代都打印到报表时,它只知道已经打印到报表的行的 SERIAL 的最大值。
我更喜欢使用 SQL 表达式字段来解决这个问题。这允许您在将所有行打印到报告之前使用 SQL 查询检索分组数据的 SERIAL 的最大值。
像这样的东西通常对我有用。
(
SELECT MAX("ORD_DETAIL"."ORD_DET_SEQNO")
FROM ORD_DETAIL
WHERE "ORD_DETAIL"."ORDERS_ID" = "ORDERS"."ID"
)
在我的示例中,我有两个表,ORDERS
和 ORD_DETAIL
。 ORD_DETAIL.ORD_DET_SEQNO
包含订单详细信息行的序号。我的数据按 ORDERS.ID
分组以遍历每个订单,以下公式字段将为每个明细行打印一个输出,指示其序列超出该订单的所有序列号的最大值。
ToText({ORD_DETAIL.ORD_DET_SEQNO}) + " of " + ToText({%Max});
在此公式中,%Max
是上例中 SQL 表达式字段的名称。
如果您的数据中没有重置序列号的地方,那么您的 SQL 表达式字段将如下所示。
(
SELECT MAX(Serial)
FROM VW_Sizes
)
如果您需要在某些点进行重置,只需添加一个引用 table.column 的 WHERE 子句,该子句用于对一组 SERIAL 值进行分组。
我认为有一种更简单的方法可以做到这一点,您需要从字段资源管理器中创建 运行 字段的报告:
设置字段名称,例如(max_Serial)
select 您要总结的领域。
在 select 处理您的字段后 crystal 报告根据字段数据类型提供多种类型的摘要。
select 最大值并根据您的要求重新设置,例如每组之后。