winforms 在Crystal Reports中获得最大数量?

5vf7fwbs  于 2023-06-24  发布在  其他
关注(0)|答案(3)|浏览(162)

传递给报表的数据源有一个Serial属性,我需要为每个细节部分编写一个这种格式的字段:[Serial] from [Top serial]我为最高序列写了这个公式:

Maximum({VW_Sizes.Serial})

但它获取当前序列号,所以不是1 of 2,而是2 of 2
它得到1的1,2的2。

jogvjijk

jogvjijk1#

您遇到的问题是,当详细信息部分的每次迭代打印到报表时,它只知道已经打印到报表的行的SERIAL的Max值。
我更喜欢使用SQL表达式字段来解决这个问题。这使您可以在将所有行打印到报表之前,使用SQL查询检索分组数据的SERIAL最大值。
这样的事情通常对我有用。

(
SELECT MAX("ORD_DETAIL"."ORD_DET_SEQNO") 
FROM ORD_DETAIL 
WHERE "ORD_DETAIL"."ORDERS_ID" = "ORDERS"."ID"
)

在我的示例中,我有两个表,ORDERSORD_DETAILORD_DETAIL.ORD_DET_SEQNO包含订单明细行的序列号。我的数据在ORDERS.ID上分组,以迭代每个Order,下面的公式字段将为每个明细行打印一个输出,该输出指示其在该订单的所有序列号的最大值中的序列。

ToText({ORD_DETAIL.ORD_DET_SEQNO}) + " of " + ToText({%Max});

在此公式中,%Max是上例中SQL表达式字段的名称。
如果数据中没有SERIAL编号重置的点,则SQL表达式字段将如下所示。

(
SELECT MAX(Serial)
FROM VW_Sizes
)

如果您需要在某些点重置,只需添加一个WHERE子句,该子句引用用于对一组SERIAL值进行分组的table.column。

yhived7q

yhived7q2#

您可以将该变量连接到详细信息部分中的 * 公式字段 * 中,并包含以下内容:

{VW_Sizes.Serial} & " from " & Maximum ({VW_Sizes.Serial})

否则,您只能将具有最大值的汇总字段放在明细部分之外,例如在 * 总计(报表页脚)* 中。

bprjcwpo

bprjcwpo3#

我认为有一个更简单的方法来做这样的事情,从报告中你需要从字段资源管理器创建运行字段:

  • 设置字段名称,例如(max_Serial)
  • 选择要汇总的字段。
  • 选择字段后,crystal报表根据字段数据类型提供多种类型的摘要。
  • 根据您的要求选择最大值并重置,例如每一组之后。

相关问题