Crystal Reports:动态日期参数

2020-09-07 19:26发布

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

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


在这里寻找一些提示。

我有两个使用相似的SQL命令的报告。

选择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'
 

然后。

选择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
 内部联接[dbo]。[MCFRS_10OKUP_POSITION] p在t.Pos_Desc_Ch = p.Pos_Desc_Ch上
 其中t.Staffing_Calendar_Da = dateadd(day,datediff(day,1,getdate()),0)
 和p.Category2不喜欢'%chief'
 

您会看到,区别在于输入日期的方式。

我要做的是合并这两个报告,因此取决于参数选择,例如" Prevous day"或" Date range",该报告将使用相应的SQL命令提取数据。 关于如何在报告的"命令"部分中修改SQL的任何提示或建议?

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

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


在这里寻找一些提示。

我有两个使用相似的SQL命令的报告。

选择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'
 

然后。

选择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
 内部联接[dbo]。[MCFRS_10OKUP_POSITION] p在t.Pos_Desc_Ch = p.Pos_Desc_Ch上
 其中t.Staffing_Calendar_Da = dateadd(day,datediff(day,1,getdate()),0)
 和p.Category2不喜欢'%chief'
 

您会看到,区别在于输入日期的方式。

我要做的是合并这两个报告,因此取决于参数选择,例如" Prevous day"或" Date range",该报告将使用相应的SQL命令提取数据。 关于如何在报告的"命令"部分中修改SQL的任何提示或建议?

付费偷看设置
发送
2条回答
渐行渐远_HoldOn
1楼 · 2020-09-07 20:03.采纳回答

假设您在命令中添加了一个名为"日期类型"的参数,请在Where子句中尝试类似的操作:

 where(
   ('{?Date Type}'='前一天'和
     t.Staffing_Calendar_Da = dateadd(day,datediff(day,1,getdate()),0))
   要么
   ('{?Date Type}'='Date Range'和
     在{?BeginDate}和{?EndDate}之间的t.Staffing_Calendar_Da)
 )
 

无论"日期类型"是什么选择,所有参数都必须具有值(这就是命令的工作方式……)。 但是,您可以在命令编辑器或主报表中编辑参数,并为BeginDate和EndDate设置默认值,以便即使不需要它们也始终具有值。

这样做将是使用子报表-每个命令一个-并根据日期类型的值隐藏适当的节和子报表。

-Dell

Doze时光
2楼-- · 2020-09-07 20:02

无法使用命令完成-即使不使用Crystal,Crystal也会要求使用所有提示符的值。

-Dell

一周热门 更多>