2016-04-12 9 views
2

Ich habe eine Reihe von Ratios in VBScript berechnet, die die gesamten Tage im Jahr enthält. Für 2016 müssen wir "366" Tage anstelle des normalen "365" verwenden.Dim Leap Jahr, VBScript

Ich erstellte eine Dim-Variable, um basierend auf dem Jahr zu füllen, aber es ist klar, das Skript funktioniert nicht und stattdessen Nullen.

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" 

Als ich die Business Rules in Oracle HFM, die VBScript-Uploads ohne Fehler laden aber nicht das Verhältnis zu berechnen.

Es gibt kein Konto in HFM für YrDays, da ich den Wert (YrDays) während der Konsolidierung und Berechnung berechnen möchte. Ich habe überprüft, dass POV_Year, Numberdays und andere Werte korrekt geladen werden.

Irgendeine Idee, was ich falsch machen könnte?

Software: Oracle HFM 11.1.2.3.500 VBScript Rule.rle Dateibearbeitung in Notepad ++

Edit: Dies ist die Lösung, die ich mit gegangen:

'/ 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 

ich auch Um die Art zu ändern, wie YrDays in der Formel referenziert wurde, hätte ich wissen müssen, dass es sich um Anführungszeichen handelt, auf die in der Berechnung Bezug genommen wird.

HS.Exp "A#Ratio007.C1#[None]" & DynC1 & " = 
((A#Tohinc" & Tops & " * ("& YrDays & "/ A#numberdays.E#PVTB Admin)) 
/(A#Totass" & Tops &")) * 100" 

Antwort

1

Ihr Code könnte besser sein als Select Case statement.

Select Case POV_Year 
    Case 2012, 2016, 2020, 2024, 2028 
     YrDays = 366 
    Case Else 
     YrDays = 365 
End Select 

Es kann jedoch eine einfachere Methode geben.

'/ 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) 

Ich habe die zitierten Zahlen entfernen; Zahlen sollten als Zahlen bleiben. Jedoch "2016" ist nicht gleich 2016, also müssen Sie sie möglicherweise zurückstellen oder den Rest Ihres Codes justieren. Sie können eine echte Zahl in eine Zeichenfolge verketten.

+0

Die ausgewählte Case-Anweisung funktioniert perfekt - ich musste die Anführungszeichen einwerfen, aber dieser Kommentar half mir, zu referenzieren, was sie haben sollte und was nicht. \t ‚Hinzufügen YrDays für Schaltjahre/ \t SELECT CASE POV_YEAR zu berücksichtigen \t \t CASE "2012", "2016", "2020", "2024", "2028" YrDays = 366 Case Else YrDays = 365 \t Ende Auswahl ' – Mike