昏暗的闰年,VBScript
Dim Leap Year, VBScript
我有一系列用 VBScript 计算的比率,其中包含一年中的总天数。对于 2016 年,我们需要使用“366”天而不是正常的“365”天。
我创建了一个 Dim 变量来根据年份进行填充,但很明显该脚本无法正常工作,而是清零了。
VBScript:
'/ Adding YrDays to account for Leap Years'/
If POV_Year = "2012" OR "2016" OR "2020" OR "2024" OR "2028" Then
YrDays = "366"
Else YrDays = "365"
End If
HS.Exp "A#Ratio007.C1#[None]" & DynC1 & " =
((A#Tohinc" & Tops & " * (YrDays / A#numberdays.E#PVTB Admin))
/ (A#Totass" & Tops &")) * 100"
当我将业务规则上传到 Oracle HFM 时,VBScript 上传没有错误,但无法计算比率。
HFM 中没有YrDays 帐户,因为我想在合并计算时计算值(YrDays)。我已验证 POV_Year、Numberdays 和其他值正在正确加载。
知道我可能做错了什么吗?
软件:
甲骨文 HFM 11.1.2.3.500
VBScript Rule.rle 在 Notepad++ 中编辑文件
编辑:
这是我使用的解决方案:
'/ Adding YrDays to account for Leap Years'/
SELECT CASE POV_YEAR
CASE "2012", "2016", "2020", "2024", "2028"
YrDays = 366
Case Else
YrDays = 365
End Select
我还需要更改公式中引用 YrDays 的方式,我应该知道它需要放在引号中才能在计算中引用。
HS.Exp "A#Ratio007.C1#[None]" & DynC1 & " =
((A#Tohinc" & Tops & " * ("& YrDays & "/ A#numberdays.E#PVTB Admin))
/ (A#Totass" & Tops &")) * 100"
您的代码作为 Select Case statement 可能会更好。
Select Case POV_Year
Case 2012, 2016, 2020, 2024, 2028
YrDays = 366
Case Else
YrDays = 365
End Select
不过,可能还有更简单的方法。
'/ Adding YrDays to account for Leap Years'/
YrDays = DateSerial(POV_Year + 1, 1, 1) - DateSerial(POV_Year, 1, 1)
'alternate
YrDays = 365 - (POV_Year = 2012 Or POV_Year = 2016 Or POV_Year = 2020 Or POV_Year = 2024 Or POV_Year = 2028)
我删除了引用的数字;数字应保留为数字。但是 "2016"
不等于 2016
因此您可能必须将它们放回去或调整其余代码。您可以将一个真实数字连接成一个字符串。
我有一系列用 VBScript 计算的比率,其中包含一年中的总天数。对于 2016 年,我们需要使用“366”天而不是正常的“365”天。
我创建了一个 Dim 变量来根据年份进行填充,但很明显该脚本无法正常工作,而是清零了。
VBScript:
'/ Adding YrDays to account for Leap Years'/
If POV_Year = "2012" OR "2016" OR "2020" OR "2024" OR "2028" Then
YrDays = "366"
Else YrDays = "365"
End If
HS.Exp "A#Ratio007.C1#[None]" & DynC1 & " =
((A#Tohinc" & Tops & " * (YrDays / A#numberdays.E#PVTB Admin))
/ (A#Totass" & Tops &")) * 100"
当我将业务规则上传到 Oracle HFM 时,VBScript 上传没有错误,但无法计算比率。
HFM 中没有YrDays 帐户,因为我想在合并计算时计算值(YrDays)。我已验证 POV_Year、Numberdays 和其他值正在正确加载。
知道我可能做错了什么吗?
软件: 甲骨文 HFM 11.1.2.3.500 VBScript Rule.rle 在 Notepad++ 中编辑文件
编辑: 这是我使用的解决方案:
'/ Adding YrDays to account for Leap Years'/
SELECT CASE POV_YEAR
CASE "2012", "2016", "2020", "2024", "2028"
YrDays = 366
Case Else
YrDays = 365
End Select
我还需要更改公式中引用 YrDays 的方式,我应该知道它需要放在引号中才能在计算中引用。
HS.Exp "A#Ratio007.C1#[None]" & DynC1 & " =
((A#Tohinc" & Tops & " * ("& YrDays & "/ A#numberdays.E#PVTB Admin))
/ (A#Totass" & Tops &")) * 100"
您的代码作为 Select Case statement 可能会更好。
Select Case POV_Year
Case 2012, 2016, 2020, 2024, 2028
YrDays = 366
Case Else
YrDays = 365
End Select
不过,可能还有更简单的方法。
'/ Adding YrDays to account for Leap Years'/
YrDays = DateSerial(POV_Year + 1, 1, 1) - DateSerial(POV_Year, 1, 1)
'alternate
YrDays = 365 - (POV_Year = 2012 Or POV_Year = 2016 Or POV_Year = 2020 Or POV_Year = 2024 Or POV_Year = 2028)
我删除了引用的数字;数字应保留为数字。但是 "2016"
不等于 2016
因此您可能必须将它们放回去或调整其余代码。您可以将一个真实数字连接成一个字符串。