WinCC Flex VBS DateDiff Fehlermeldung

Bobbybau91

Level-2
Beiträge
182
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich versuche, eine Zeit-Differenz im VBS zu ermitteln. Hierbei erhalte ich den folgenden Fehler:
"Fehler: Type mismatch: 'Daten2' in Skript LogLaden"
Code:
        ZsD = (DateDiff("d","31.12.1899 00:00:00",Daten2)+1) 
        ZsH = DatePart("h",Daten2)
        ZsM = DatePart("n",Daten2)
        ZsS = DatePart("s",Daten2)
5XFAfPoNCeAAAAAElFTkSuQmCC


Ich verstehe nicht, woher der Fehler kommt. Das gelb markierte ist der Inhalt von Daten 2, dies habe ich überprüft, indem ich das mal in eine Variable gesichert habe:
si10oO9nbhazLdQQcAUfAEXAEHAFH4AMQcLL3AU5wFRwBR8ARcAQcAUfAEdiFwP8DD8odcghLGwcAAAAASUVORK5CYII=



Sollte doch eigentlich passen, oder? Wo übersehe ich den Fehler?
Danke vorab.


Grüße,
Bob
 

Anhänge

  • 2.JPG
    2.JPG
    27,2 KB · Aufrufe: 12
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
So, wie ich das sehe, stört sich DateDiff daran, dass du Strings übergibst. Es erwartet 2 Variablen vom Typ Date :
Laut Link:
date1, date2 Erforderlich; Variant (Date). Zwei Datumsangaben, die Sie in der Berechnung verwenden möchten.
und:
Wenn date1 oder date2 ein Datumsliteral ist, wird das angegebene Jahr zu einem dauerhaften Bestandteil dieses Datums. Wenn date1 oder date2 aber in doppelte Anführungszeichen eingeschlossen ist ("") und Sie das Jahr weglassen, wird jedes Mal, wenn das aktuelle Jahr in den Code eingefügt wird, der date1- oder date2-Ausdruck ausgewertet. Auf diese Weise können Sie Code schreiben, der in unterschiedlichen Jahren verwendet werden kann.
Das deute ich so, dass date1 und date2 durchaus Strings sein können/dürfen/(müssen), solange VB sie als Datums-[mit Zeit-]Angaben zu interpretieren vermag.
Wo allerdings genau die Grenzen sind zwischen von VB als Datum interpretierbar und nicht interpretierbar ... ;)

PS&OT:
Amüsant war mal wieder die Übersetzung des Textes: 'second' -> 'Zweiter'
Ich erwähne das nur, um euch auf die SchreckZweiter beim Lesen vorzubereiten oder sie euch sogar zu ersparen! ;)
Btw, who happens to know, what a 'second hand second hand' is? Ein 'gebrauchter SekundenZeiger' natürlich. :ROFLMAO:
 
ich versuche, eine Zeit-Differenz im VBS zu ermitteln. Hierbei erhalte ich den folgenden Fehler:
"Fehler: Type mismatch: 'Daten2' in Skript LogLaden"
Bist Du sicher, daß Daten2 den Inhalt "15.03.2021 15:55:40" hat? Was ist Daten2, wo kommt der Inhalt her? Ist das ein Übergabeparameter an das Skript? Vielleicht kann der Inhalt nicht als Datum interpretiert werden? Vielleicht ist der Inhalt leer? Kommt der Inhalt aus einer csv-Datei? Vielleicht wird die csv-Datei nicht so zerlegt wie von Dir erwartet? Lass Dir den Inhalt von Daten2 mal anzeigen/ausgeben.

Dieses kurze Testskript wird bei meinem WinCC flex 2008 SP5 ohne Fehler ausgeführt und erzeugt am Ende die Ausgabe: "ZsD=44270 ZsH=15 ZsM=55 ZsS=40"
Code:
Dim Daten2, ZsD, ZsH, ZsM, ZsS

Daten2 = "15.03.2021 15:55:40"
ShowSystemAlarm "Daten2='" & Daten2 & "'"

        ZsD = (DateDiff("d","31.12.1899 00:00:00",Daten2)+1)
        ZsH = DatePart("h",Daten2)
        ZsM = DatePart("n",Daten2)
        ZsS = DatePart("s",Daten2)

ShowSystemAlarm "ZsD=" & ZsD & " ZsH=" & ZsH & " ZsM=" & ZsM & " ZsS=" & ZsS
[COLOR="#008000"]'Ausgabe: "ZsD=44270 ZsH=15 ZsM=55 ZsS=40"[/COLOR]
Damit man sehen kann was ein Skript tut, kann man sich mit ShowSystemAlarm Testausgaben einbauen. Mache noch in ein Bild eine Meldeanzeige für Meldeereignisse der Meldeklasse "System", dann kannst Du in Ruhe die Ausgaben lesen.

Auf welchem Gerät läuft Deine Runtime? Wie ist da das Datumsformat eingestellt? Mag das DateDiff vielleicht nicht dieses Datumsformat?
Funktionieren denn die DatePart-Anweisungen? (die Zeile mit dem DateDiff auskommentieren)


@Larry
Achtung, das ist die Beschreibung von DateDiff in VBA. Hier geht es aber um VBS. In VBS kann man Datentypen eigentlich nicht vorgeben, da ändert sich der Datentyp automatisch ad hoc nach Gutdünken von VBS.

Harald
 
Hallo,

ja ich bin mir sicher, habe bereits schon den fixen String und die Variable "Daten2" als Systemmeldung anzeigen gelassen. Ich sehe keinen Unterschied.
Vielleicht hilft ja die Vorgeschichte:

Wir loggen verschiedene Daten in .csv-Dateien mit einem TP700. Dieses Logging wurde ersetzt durch Node-Red. Anzeigen möchten wir die Daten aber trotzdem noch als Graph auf dem Panel, weshalb ich mir aus der .csv-Datei eine Archiv-Datei "bastle". Dies wurde vorher auch so gemacht, die Probleme gibt es jetzt erst, seitdem die .csv-Dateien aus einer anderen Quelle stammen.

Hier mal die Systemmeldung:
123.JPG
eAAAAAElFTkSuQmCC
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Fehler gefunden, manchmal sollte man echt eine Nacht drüber schlafen.

Diese Routine hat sich an einer falschen Stelle in einer Schleife befunden. Da die Systemmeldung jedoch immer nur die letzte Meldung anzeigt, hat sie immer den vollständigen Inhalt von Daten2 angezeigt, der Fehler wurde aber wohl schon vorher generiert.

Danke für die Hilfe :-)
 
Zurück
Oben