如何将此 Crystal Report 公式编写为 s-s-rS 表达式?
Posted
技术标签:
【中文标题】如何将此 Crystal Report 公式编写为 s-s-rS 表达式?【英文标题】:How to write this Crystal Report formula as an s-s-rS Expression? 【发布时间】:2019-03-05 08:49:00 【问题描述】:我想将此 Crystal 公式转换为 s-s-rS 表达式:
公式:
numberVar iDay := ToNumber(Right(Cstr(@PrntStartDate), 2)) + 9;
select iDay
case 1 : wk_TORIO0430_b.AcquisitionAmnt1
case 2 : wk_TORIO0430_b.AcquisitionAmnt2
case 3 : wk_TORIO0430_b.AcquisitionAmnt3
case 4 : wk_TORIO0430_b.AcquisitionAmnt4
case 5 : wk_TORIO0430_b.AcquisitionAmnt5
如何在 s-s-rS 表达式中编写这个?
【问题讨论】:
您坚持转换的哪一部分?我们可以看看你的作品吗? @halfer 感谢您纠正我的错误先生,我是 StackOver 流程的新手,下次我会牢记指南 @halfer 先生,我需要转换这个 Crystal Report 公式,上面有 43 个公式,我需要转换它们,所以如果你知道的话,我请求你,请帮助我。 你是否已经有一个s-s-rS参数来替换@PrntStartDate
?你知道这个表达式在概念上做什么吗? select case
的 s-s-rS 等效项是 switch
。 ToNumber
的等价物是CInt
我认为
如果一个月中的某一天(显然)加上 9,那么 iDay 怎么可能是 1 - 5?
【参考方案1】:
不完全确定第一行是做什么的,因为我自己不使用 Crystal Reports,但 Nick 在 cmets 中说,select case
可以使用switch
语句重写。修复第一行的可能解决方案是将类似的语句添加到计算字段并在开关中使用该字段。您必须弄清楚 numberVar iDay
行所使用的逻辑,以便您可以按原样放入。
=SWITCH(Fields!iDay.Value = 1, wk_TORIO0430_b.AcquisitionAmnt1,
Fields!iDay.Value = 2, wk_TORIO0430_b.AcquisitionAmnt2,
Fields!iDay.Value = 3, wk_TORIO0430_b.AcquisitionAmnt3,
Fields!iDay.Value = 4, wk_TORIO0430_b.AcquisitionAmnt4,
Fields!iDay.Value = 5, wk_TORIO0430_b.AcquisitionAmnt5)
【讨论】:
我认为 iDay 是一个临时变量,而不是一个字段。Fields!iDay.Value
应替换为 VAL(Right(Cstr(Parameters!PrntStartDate.value), 2)) + 9
。
我无法破译第一行,所以我只回答了切换的逻辑。他将不得不弄清楚如何将iDay
设置为 1-5。如果他回应并澄清那条线,我会相应地更新我的答案。
@HannoverFist 感谢先生给我解决方案,但它不起作用,我试图替换 numberVar iDay := ToNumber(Right(Cstr(@PrntStartDate), 2)) + 9; over VAL(Right(Cstr(Parameters!PrntStartDate.value), 2)) + 9 this 但我无法理解如何制作所有 This Expression 请帮助我。
@Steve-o169 正如我在上面写的代码 iDay 是变量而不是参数或字段,它是变量,我无法制作这个 s-s-rS 表达式,请帮助我。以上是关于如何将此 Crystal Report 公式编写为 s-s-rS 表达式?的主要内容,如果未能解决你的问题,请参考以下文章
Crystal Report,根据Criteria将行分组为单行
如何在 Crystal Report 中获取日期范围的每周或 7 天