【问题标题】:Crystal: Display Nth record based off ParameterCrystal:根据参数显示第 N 条记录
【发布时间】:2023-04-06 14:32:01
【问题描述】:

很快——我想显示在我选择的特定参数日期之前发生的最后一个详细记录。我试图写这样的东西:

recordnumber = count(({assign.date} > {?Date}) - 1)

或

recordnumber = onlastrecord - count({assign.date} > {?Date}) - 1

当我点击“检查”时,它会突出显示 assign.date 并声明“此处需要一个字段”

每当我在谷歌上搜索时,我都会看到一些我认为应该非常简单的问题的真正复杂的答案;而且我对 Crystal 的了解还不够,无法部署其中一个复杂的答案。

【问题讨论】:

  • 禁止所有其他详细记录?报告是如何排序的?
  • 我按客户编号排序。该报告当前显示如下内容:客户端# |||开始日期 |||分配的员工 5 ||| 2013 年 1 月 1 日 |||马克 5 ||| 2013 年 2 月 16 日 |||桑迪 5 ||| 2013 年 6 月 1 日 |||乔希我做了一些编程来在我的 {?Date} 参数之后切断分配,但我不能切断“除了最近的”员工分配之外的所有。这样做的目的是能够说(使用参数)“谁在 2013 年 3 月 1 日为我们的客户提供服务”,并为每个人得到正确的答案。

标签: crystal-reports crystal-reports-2010


【解决方案1】:

按照以下步骤进行

  • 创建一个新的公式字段,将其命名为 LastDate_Details 并在公式编辑器中添加以下代码。

    WhilePrintingRecords;
    
    Shared DateVar LastDate;
    
    if CDate({assign.date}) < CDate({?Date}) then
        LastDate:= CDate({assign.date})
    
  • 将公式字段拖放到详细信息部分的某处并通过右键单击字段 -> 格式对象 -> 通用选项卡 -> 并选中抑制复选框来抑制它。

  • 创建另一个名为 LastDate_Footer 的公式并添加以下代码。

    Shared DateVar LastDate;
    
  • 将新公式字段拖放到页脚部分。

编辑

有关 Crystal Reports 中变量范围的更多信息,请查看this。

【讨论】:

  • 您不需要使用Shared 变量,除非您将值传递到子报表或从子报表传递值。请改用Global。
  • 你是对的。我通常根据我自己的编程约定将它们声明为共享 :)。感谢您的通知。
  • 我尝试创建新的公式字段,当我点击“检查错误”时,它会突出显示 {assign.date} 状态“此处需要日期时间”?
猜你喜欢
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多