【问题标题】:Crystal Reports Filter by Most Recent Date of FieldCrystal Reports 按字段的最近日期过滤
【发布时间】:2022-02-12 02:00:55
【问题描述】:

我有一个通过 ODBC 连接创建的报告。该报告包括多张发票,其中每张发票都有多个产品。还有一个表格,其中包含每个产品的所有历史价格变化(字段:单价)。目前有重复的产品记录被提取,每次价格变化时都有一个。因此,我需要过滤我的数据,以便只显示最近的单价(日期字段:生效日期)。我如何通过“选择专家”来做到这一点?

简而言之,显示最近生效日期的产品单价。

谢谢!

【问题讨论】:

  • 除非您需要从数据库中检索所有数据,否则如果您只能从数据库中提取最近的生效日期,您的报告将生成得更快。如果您有一个小集合可以使用,这可能并不重要,但您的方法不能很好地扩展。
  • 我可以在 Crystal 中仅从数据库中提取最近的生效日期吗?
  • @user3616771:你为什么不创建一个存储过程来为你带来正确的结果??
  • 我无权访问数据库。我想出了解决方案。在选择专家中,您可以选择按“组”进行过滤。在这里,我使用了“有效日期 = 最大值(有效日期,产品)”,它解决了问题。

标签: crystal-reports


【解决方案1】:

您需要创建一个 sql 表达式字段来获取最近的生效日期,然后在记录选择公式中使用该字段。

// {%MAX_EFFECTIVE_DATE}
// most-likely you'll need to alias the table in the main report for this to work
(
SELECT Max(effective_date)
FROM   price_history
WHERE  product_id = price_history_alias.product_id
)

记录选择公式:

{price_history_alias.effective_date}={%MAX_EFFECTIVE_DATE}

【讨论】:

  • 不敢相信我刚刚看到这个。我从来没有在 CR 中使用过 SQL 表达式字段,即使是最基本的查询也经常出错。是语法问题吗?从 ("APPRISE"."PUB"."product_price") WHERE ("product_price"."product-key" = '1004138') 中选择“生效日期”
  • 您需要将所有内容都用括号括起来。
【解决方案2】:

而不是在选择专家中进行。按生效日期分组并设置排序为Descending

【讨论】:

  • 这仍然包括数据集中的所有产品,使我的计算不正确。
  • 是的,通过这种方法,它包含所有内容。如果您不需要创建参数并给出运行报告时需要检索的值并在选择专家中提供该参数。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 2023-03-04
  • 2013-09-14
  • 2022-06-11
  • 1970-01-01
相关资源
最近更新 更多