代码之家  ›  专栏  ›  技术社区  ›  mshwf

在Crystal Reports中获取最大数量?

  •  0
  • mshwf  · 技术社区  · 8 年前

    传递给报表的数据源具有 Serial 属性,我需要为此格式为每个详细信息部分写入一个字段:【序列号】从【顶部序列号】 我写了这一公式的顶部系列:

    Maximum({VW_Sizes.Serial})
    

    但它得到了当前的序列号,所以不是:1/2,2/2 它得到1/1,2/2。

    3 回复  |  直到 8 年前
        1
  •  0
  •   R. McMillan    8 年前

    您遇到的问题是,当详细信息部分的每个迭代打印到报表时,它只知道已经打印到报表的行的最大序列值。

    我更喜欢使用SQL表达式字段来解决这个问题。这允许您在将所有行打印到报表之前,使用SQL查询检索分组数据的最大序列值。

    像这样的东西通常对我有用。

    (
    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子句,该子句用于对一组序列值进行分组。

        2
  •  0
  •   Manel    8 年前

    可以将该变量连接到 公式字段 在详细信息部分中包含有关此内容的内容:

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

    否则,您只能将最大值的摘要字段放在“详细信息”部分之外,例如 总计(报表页脚) .

        3
  •  -1
  •   Abdulrahman_88    8 年前

    我认为有一种更简单的方法可以做到这一点,从您需要从FieldExplorer创建运行字段的报告中:

    • 设置字段名,例如(max_serial)

    • 选择要汇总的字段。

    • 选择字段后,Crystal Report根据字段数据类型提供多种类型的摘要。

    • 根据您的要求选择最大值并重置,例如在每组之后。