Crystal Reports:在报表中实现昨天的日期或日期范围

2020-09-07 03:55发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我目前正在报表中使用下面的SQL来管理用户的要求。

1。 安排报告以显示前一天的数据。

2。 根据需要运行数据范围的报告。

声明
 @beginDate日期时间,
 @endDate日期时间

 if(convert(date,{?BeginDate})= convert(date,'1/1/1800')and convert(date,{?EndDate})= convert(date,'1/1/1800'))
   开始
    设置@beginDate = dateadd(day,datediff(day,1,getdate()),0);
    设置@endDate = dateadd(day,datediff(day,1,getdate()),0);
   结束
 其他
   开始
    设置@beginDate = {?BeginDate};
    设置@endDate = {?EndDate};
   结束

 选择Staffing_Calendar_Da,payhours,Staffing_Start_Dt,unit_name_ch,t.Pos_Desc_Ch,Wstat_Abrv_Ch,Payhours_day,Payhours_night,total_payhours,p.category2,
 如果Payhours_day> 0,则"天"以"天"结尾,
 如果Payhours_night> night> 0然后" Night"以" Night"结尾,
 在total_payhours> 0的情况下,"全部"以" day_night"结尾
  来自vw_position_OTP t
 内部连接vw_mcfrs_Position_Hours p on t.Pos_Desc_Ch = p.Pos_Desc_Ch
 在@beginDate和@endDate之间的t.Staffing_Calendar_Da
 和Category2不像'%chief';
 

我将" 1/1/1800"用作参数值,以便在计划报告时将其传递给报告。 用户将不知道该参数值。 他将只获得包含前一天数据的报告。

现在,我的问题是,是否有办法从SQL中删除此" 1/1/1800"并对其进行配置,以便它可以使用例如getdate()自动生成前一天的数据? 我一直在寻找实现此目的的方法,但问题是,我不知道如何保留日期范围输入行-@beginDate和@endDate之间的t.Staffing_Calendar_Da。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我目前正在报表中使用下面的SQL来管理用户的要求。

1。 安排报告以显示前一天的数据。

2。 根据需要运行数据范围的报告。

声明
 @beginDate日期时间,
 @endDate日期时间

 if(convert(date,{?BeginDate})= convert(date,'1/1/1800')and convert(date,{?EndDate})= convert(date,'1/1/1800'))
   开始
    设置@beginDate = dateadd(day,datediff(day,1,getdate()),0);
    设置@endDate = dateadd(day,datediff(day,1,getdate()),0);
   结束
 其他
   开始
    设置@beginDate = {?BeginDate};
    设置@endDate = {?EndDate};
   结束

 选择Staffing_Calendar_Da,payhours,Staffing_Start_Dt,unit_name_ch,t.Pos_Desc_Ch,Wstat_Abrv_Ch,Payhours_day,Payhours_night,total_payhours,p.category2,
 如果Payhours_day> 0,则"天"以"天"结尾,
 如果Payhours_night> night> 0然后" Night"以" Night"结尾,
 在total_payhours> 0的情况下,"全部"以" day_night"结尾
  来自vw_position_OTP t
 内部连接vw_mcfrs_Position_Hours p on t.Pos_Desc_Ch = p.Pos_Desc_Ch
 在@beginDate和@endDate之间的t.Staffing_Calendar_Da
 和Category2不像'%chief';
 

我将" 1/1/1800"用作参数值,以便在计划报告时将其传递给报告。 用户将不知道该参数值。 他将只获得包含前一天数据的报告。

现在,我的问题是,是否有办法从SQL中删除此" 1/1/1800"并对其进行配置,以便它可以使用例如getdate()自动生成前一天的数据? 我一直在寻找实现此目的的方法,但问题是,我不知道如何保留日期范围输入行-@beginDate和@endDate之间的t.Staffing_Calendar_Da。

付费偷看设置
发送
6条回答
哎,真难
1楼 · 2020-09-07 04:02.采纳回答

您好 Kenshin Himura

我已在您的更新旁边添加了评论。

1。 通过中央管理控制台在Crystal Server上安排报告。 为了进行计划,必须输入并保存一个设置值,以便每次按计划运行报表时,该值都将用于检索数据。

->好的,请注意。 在这种情况下,如果用户未看到" 1/1/1800"并且按预期生成了报告,为什么还要替换为" 1/1/1800"。

2。 因此,当用户登录Crystal Reports网站时,用户会看到与我从Crystal Reports开发人员看到的相同的参数窗口。 用户可以在参数窗口中输入开始日期和结束日期。

->感谢您的解释。 我明白。 因此,这意味着用户可以选择所需的"开始日期","结束日期"并自行生成报告。

4。 先生,您的密码 @endDate必须是getdate()-1才能获取前一天的数据,不是吗? 另外,我需要输入什么值作为前一天数据与您的代码的匹配-这是我需要安排的时间?

->参考我的原始代码(在下面注明),您可以根据需要更改enddate的值。

如果此主题上没有其他问题,或者您的问题已解决,请将适当的回答标记为"答案"。

最良好的祝愿和问候

山姆

声明
 @beginDate日期时间,
 @endDate日期时间
 选择@beginDate = getdate()-1;/*设置前一天的日期的开始日期*/
 选择@endDate = getdate();/*设置今天的日期,即运行报表的日期*/
 选择@beginDate作为BeginDate;/*显示由变量设置的值。 如果不需要,可以将其删除。  */
 选择@endDate作为endDate;/*显示由变量设置的值。 如果不需要,可以将其删除。  */
宇峰Kouji
2楼-- · 2020-09-07 04:08

您好 Kenshin Himura

如果当前没有新问题,请随时将回答标记为答案,并关闭该线程。

感谢与问候,

Sam

骆驼绵羊
3楼-- · 2020-09-07 04:28

您好 Kenshin Himura

谢谢。 参考您的回答,请参考我的评论/问题。

问候

山姆

您的回复:

1。 是。 " 1/1/1800"用户仅用于计划目的,因为Crystal Web需要用于计划报告的设置值。 但是用户可以获取前一天的日期的报告。 他们只需要在日期参数中输入上一个日期即可。

新评论/问题:希望了解您当前正在使用的调度系统。 例如,Crystal Reports Server/BO Enterprise/任何其他第三方Web应用程序。

您可能会发现该视频特别有用,特别是在选择开始日期和结束日期时:使用SAP Crystal Server进行计划- https://www.youtube.com/watch?v=JZxbCYd4LU8

2。 在运行报告之前,用户必须输入开始日期{?BeginDate}和结束日期{?EndDate} ..

新评论/问题:在当前情况下,用户如何输入开始日期和结束日期? 他使用哪种前端? Crystal Reports Server/BO Enterprise/任何其他第三方Web应用程序。

3。 是的,你是正确的。 报告需要开始日期和结束日期才能提取数据。

新评论/问题:已记录。

4。 我需要{?BeginDate}和{?EndDate}:

新评论/问题:已记录。 您能试试这个代码吗?

声明
 @beginDate日期时间,
 @endDate日期时间
 设置@beginDate = {?BeginDate};
 设置@endDate = {?EndDate};
 选择@beginDate = getdate()-1;/*设置前一天的日期的开始日期*/
 选择@endDate = getdate();/*设置今天的日期,即运行报表的日期*/
 选择@beginDate作为BeginDate;/*显示由变量设置的值。 如果不需要,可以将其删除。  */
 选择@endDate作为endDate;/*显示由变量设置的值。 如果不需要,可以将其删除。  */
nice_wp
4楼-- · 2020-09-07 04:08

提供了更新。

5楼-- · 2020-09-07 04:18

回答您的问题/意见:

1。 通过中央管理控制台在Crystal Server上安排报告。 为了进行计划,必须输入并保存一个设置值,以便每次按计划运行报表时,该值都将用于检索数据。

2。 因此,当用户登录Crystal Reports网站时,用户会看到与我从Crystal Reports开发人员看到的相同的参数窗口。 用户可以在参数窗口中输入开始日期和结束日期。

4。 先生,您的密码 @endDate必须是getdate()-1才能获取前一天的数据,不是吗? 另外,我需要输入什么值来提取代码中前一天的数据-我需要进行排程?

Violet凡
6楼-- · 2020-09-07 04:09

您好 Kenshin Himura

好的。 如果您是我,我将使用单独的测试环境并使用到目前为止收集的所有响应进行进一步的调查。 我也将毫不犹豫地搜索各种论坛(例如该社区)或与此查询相关的互联网上可能存在的任何其他论坛。 如果在调查后没有看到进一步的进展,我会聘请Crystal Reports开发人员或专业服务公司,他们可以利用他们的专业知识和资源来解决我的问题。

我希望这会有所帮助。

此致

山姆

一周热门 更多>