Crystal Reports:清理IF语句的方法(还有其他方法吗?)?

2020-09-08 21:25发布

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

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


我在一份报告中列出了IF Else语句,并且IF语句工作得很好; 没有什么问题。 但是由于报告参数的性质,它相当长。 因此,我想知道是否有一种方法可以使IF语句更短并使整个事情在眼睛上看起来更轻松?

这是IF语句的一部分。

如果({?Day_Night} ='Day')和({?Position} =" ALL"),则({?Day_Night} = {Command.Day}; {Command.category}如" *")
 否则,如果({?Day_Night} ='Night')和({?Position} =" ALL"),则({?Day_Night} = {Command.Night}; {Command.category}如" *")
 否则,如果({?Day_Night} ='All')和({?Position} =" ALL"),则({?Day_Night} = {Command.day_night}; {Command.category}如" *")
 
 否则,如果({?Day_Night} ='Day')和({?Position} =" Captain"),则({?Day_Night} = {Command.Day}; {Command.category}如" Captain *")
 否则,如果({?Day_Night} ='Night')和({?Position} =" Captain"),则({?Day_Night} = {Command.Night}; {Command.category}如" Captain *")
 否则,如果({?Day_Night} ='All')和({?Position} =" Captain"),则({?Day_Night} = {Command.day_night}; {Command.category}如" Captain *")
 

从字面上看,这就像整个事情的1/6。 不,我不能将参数设置移至SQL命令。 我这样做了,但效果很好,但被告知要将参数移到报表的公式中。

谢谢!

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

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


我在一份报告中列出了IF Else语句,并且IF语句工作得很好; 没有什么问题。 但是由于报告参数的性质,它相当长。 因此,我想知道是否有一种方法可以使IF语句更短并使整个事情在眼睛上看起来更轻松?

这是IF语句的一部分。

如果({?Day_Night} ='Day')和({?Position} =" ALL"),则({?Day_Night} = {Command.Day}; {Command.category}如" *")
 否则,如果({?Day_Night} ='Night')和({?Position} =" ALL"),则({?Day_Night} = {Command.Night}; {Command.category}如" *")
 否则,如果({?Day_Night} ='All')和({?Position} =" ALL"),则({?Day_Night} = {Command.day_night}; {Command.category}如" *")
 
 否则,如果({?Day_Night} ='Day')和({?Position} =" Captain"),则({?Day_Night} = {Command.Day}; {Command.category}如" Captain *")
 否则,如果({?Day_Night} ='Night')和({?Position} =" Captain"),则({?Day_Night} = {Command.Night}; {Command.category}如" Captain *")
 否则,如果({?Day_Night} ='All')和({?Position} =" Captain"),则({?Day_Night} = {Command.day_night}; {Command.category}如" Captain *")
 

从字面上看,这就像整个事情的1/6。 不,我不能将参数设置移至SQL命令。 我这样做了,但效果很好,但被告知要将参数移到报表的公式中。

谢谢!

付费偷看设置
发送
2条回答
愤怒的猪头君
1楼-- · 2020-09-08 21:49

嗨Kenshin,

嵌套的IF很难阅读和使用。 我更喜欢使用Select ... Case语句。 它更干净,对于这样的东西,更容易阅读。

选择{?Day_Night}
     案例"日":
       选择{?位置}
           情况" ALL":({?Day_Night} = {Command.Day}; {Command.category}如" *")
           案例"队长":({?Day_Night} = {Command.day_night}; {Command.category}类似于"队长");
     案例"夜":
       选择{?位置}
           情况" ALL":({?Day_Night} = {Command.Night}; {Command.category}如" *")
           案例"队长":({?Day_Night} = {Command.day_night}; {Command.category}类似于"队长");  

它应该看起来像这样。 注意,案例行不以";"结尾。 只有选择。 我还建议将默认值作为每个选择的最后一种情况,这样,如果用户选择了意外内容,它就不会出错。

祝你好运,

Brian

小c菟菟
2楼-- · 2020-09-08 22:05

放入";" 在每次选择的最后,Crystal认为以下选择语句不属于公式。 因此,我修改了这样的代码。

选择{?Day_Night}
 案例"日":
 (
   选择{?位置}
         情况" ALL":({?Day_Night} = {Command.Day}; {Command.category}如" *")
         案例"队长":({?Day_Night} = {Command.day}; {Command.category}如"队长")
 )
 案例"夜":
 (
   选择{?位置}
         情况" ALL":({?Day_Night} = {Command.Day}; {Command.category}如" *")
         案例"队长":({?Day_Night} = {Command.night}; {Command.category}如"队长")
 )

一周热门 更多>