【问题标题】:Crystal Reports 2011 time -24 hours水晶报表2011时间-24小时
【发布时间】:2014-05-16 15:00:48
【问题描述】:

我创建了一个报告,该报告从前一天的生产中提取所有数据。问题是我们的操作是两班倒,第二天早上 230 点左右输入第二班的信息(例如,生产是 15 号,但他们直到 16 号凌晨 230 点才输入数据)。

这是我使用的公式:
date({REJECTS.PROD_DATE})=dateadd('d',-1,currentdate)。

我尝试了这个公式,结果相同:date({REJECTS.TIME_STAMP})=dateadd('h',-24,currentdatetime)。

我已验证 REJECTS.TIME_STAMP 是一个日期时间字段。

任何帮助都会很棒,

谢谢 特雷弗

【问题讨论】:

  • 您的公式引用了 2 个不同的日期时间字段。他们之间有什么区别?我建议只选择一个并坚持下去。另外,您选择的日期时间字段是否包含时间,还是默认为午夜?
  • 您的具体要求是什么?您需要前一天或第二天...如果是前一天,那么您的公式是正确的..公式有什么问题?
  • Rejects.prod_date 只是一个日期字段,这就是我更改为 Rejects.time_stamp 的原因。看起来是午夜到午夜。
  • 我希望从这份报告中发生的事情是报告从运行之日起 24 小时范围内的所有内容。如果它在凌晨 3 点运行,请向我展示从前一天凌晨 3 点到今天凌晨 3 点产生的所有内容。谢谢特雷弗

标签: crystal-reports


【解决方案1】:

将此添加到报告的记录选择公式中:

// timestamp should be new than 24 hours before the current date/time (calculated dynamically)
{REJECTS.TIME_STAMP} >= DateAdd("h", -24, CurrentDateTime)

// include other restrictions as necessary
AND ...

【讨论】:

  • 如果我在 2014 年 5 月 20 日上午 10:00 运行此报告,它应该显示从 2014 年 5 月 19 日上午 10:00 到 2014 年 5 月 20 日上午 10:00 的信息。
  • @Greentr:这将为您提供下限。上限将是数据(生成报告时系统中的内容)。如果您需要在不同的日期/时间运行它,则需要对报告进行参数化。
  • 谢谢大家的帮助。 @Craig:你的公式效果很好......现在我删除了在不同位置运行的旧公式,它产生了正确的结果。
【解决方案2】:

我的做法是:

  1. 创建一个String 参数并以所需的格式(either half hour format 或Hour format)为24 小时提供默认值。

如果您需要检查link 的参数。

2 在Record Select Expert 中使用以下公式

{REJECTS.TIME_STAMP}>=Cdatetime(Cdate(dateadd('d',-1,currentdate)),Ctime({?tme})) and
   {REJECTS.TIME_STAMP}<Cdatetime(CDate(dateadd('d',0,currentdate)),Ctime({?time})) and

现在,当您运行报告时,系统会提示您输入时间。选择时间,您的查询将按照您的要求形成。

【讨论】:

  • 那是我忘记提到的转折点,它是一个自动报告。不能有任何提示。
  • 我没有得到自动报告的概念?你能详细说明一下吗......如果你不能添加参数那么你怎么能添加公式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多