DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Wie zerlege ich Zeitformat in Diadem 9.1 per vbs

HH, 14.12.2005
 
Moin allerseits,
 
ich habe zwei Datensaetze mit jeweils einem Zeitkanal mit rund 8.000 Eintraegen von 25.08.2005 00:01:00.000 bis 13.11.2005 22:45:00.000
 
Waehrend dieses Zeitraumes erfolgte die Umstellung von MESZ auf MEZ. Der eine Datensatz ist durchgehend in MESZ erfasst, waehrend im zweiten Datensatz die Umstellung von Sommerzeit auf "Winterzeit" erfolgte.
 
Diese Umstellung moechte ich jetzt rueckgaengig machen und stelle mir folgende Schritte dazu in vbs vor:
 
for i = 1 to 8000
    Datum = chd(i , "DatumZeitKanal")
 
    if Datum > cdate("30.10.2005") then
        chd(i , "DatumZeitKanal") = chd(i , "DatumZeitKanal") + 3600
    end if
 
next
 
nun meine Frage:
Wie ist die if-Abfrage zu formulieren, damit das Script funktioniert? In der angegebenen Schreibweise funktioniert es nicht. Die Bedingung ist offensichtlich immer erfuellt. Alle Zeilen im Zeitkanal werden mit dem Offset von 3600 beaufschlagt.
 
Gruss
Bernhard
 
p.s.:
"Gluecklicherweise" liegen am 30.10.2005, dem Tag der Zeitumstellung, nach 3:00 Uhr keine Daten vor, so dass dieser Fall nicht abgefangen werden muss.
 
0 Kudos
Message 1 of 4
(3,735 Views)

Hi BK_LVUser,

Da ich in den USA wohne, weiss ich nicht genau wann in Deutschland die Zeitumstellung stattgefunden hat.  Nehmen wir an, dass diese Umstellung waehrend der Nacht zwischen 30.10.2005 und 31.10.2005 passiert hat, und zwar um genau Mitternacht (in den USA ist es glaube ich um 2:00 Uhr morgens), dann wuerde folgendes Code klappen:

R1 = TTR("30.10.2005 00:00:00", "#dd.mm.yyyy hh:nn:ss")
L1 = CNo("DatumZeitKanal")
Call FormulaCalc("Ch(L1):= Ch(L1) + 3600*(Ch(L1)>=R1)")

Man benutzt die DIAdem-Funktion "TTR()", um die Nummer der Sekunden seit 0 AD abzufragen, dann kann man diese Nummer mit jedem Wert in der Zeitkanal vergleichen.  Das macht man am effizientesten mit dem FormelInterpreter in DIAdem, mittels der "FormulaCalc()" Funktion.
 
Fragen?
Brad Turpin
DIAdem Product Support Engineer
National Instruments
0 Kudos
Message 2 of 4
(3,716 Views)

Hamburg, 23.12.2005

Hi Brad,

that's it. In Deutschland findet die Zeitumstellung ebenfalls in der Nacht statt. Im Fruehjahr von 2:00 auf 3:00 und im Herbst wieder zurueck von 3:00 auf 2:00.

Die Loesung ueber "FormularCalc()" finde ich sehr elegant. Verstehe ich es richtig, dass hier die Pruefung "ch(L1)>=R1" das Ergebnis 1 (=true)  oder 0 (=false) ergibt und damit dann die Berechnung ausgefuehrt wird? Bei der Zuordnung fuer R1 koennte ich mir dann jeden beliebigen Zeitpunkt einstellen?

best regards and merry x-mas

Bernhard

 

 

0 Kudos
Message 3 of 4
(3,663 Views)

Hallo Bernhard,

Genau richtig erkannt!   Boolsche Formularteile liefern 1 (=true)  oder 0 (=false), und der R1 Wert enthaelt den Vergleichsdatum.

Brad Turpin

0 Kudos
Message 4 of 4
(3,592 Views)