Тусклый високосный год, VBScript

У меня есть ряд коэффициентов, рассчитанных в VBScript, которые включают в себя общее количество дней в году. В 2016 году нам нужно использовать «366» дней вместо обычных «365».

Я создал переменную Dim для заполнения в зависимости от года, но ясно, что скрипт не работает и вместо этого обнуляется.

VB-скрипт:

'/ 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 и другие значения загружаются правильно.

Любая идея, что я могу делать неправильно?

Программное обеспечение: Oracle 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" 

person Mike    schedule 12.04.2016    source источник


Ответы (1)


Ваш код может быть лучше в виде оператора Select Case.

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, поэтому вам, возможно, придется вернуть их обратно или изменить оставшуюся часть кода. Вы можете объединить истинное число в строку.

person Community    schedule 12.04.2016
comment
Заявление select Case работает отлично - мне пришлось бросить кавычки, но этот комментарий помог мне указать, что должно и не должно быть в них. «Добавление YrDays для учета високосных лет/ SELECT CASE POV_YEAR CASE 2012, 2016, 2020, 2024, 2028 YrDays = 366 Case Else YrDays = 365 End Select» - person Mike; 12.04.2016