TIA Date and Time sortieren nach altestem zeitpunkt mit vbscript

CNC840D

Level-2
Beiträge
161
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich soll eine csv Datei die wie untenstehend aussieht nach dem ältestem zeitpunkt sortieren, mit dem Format "Date" hat es mit bubble sort auch funktioniert.
Anschliessend hab ich dann versucht "Date_and_Time" zu sortieren dabei ist dann das Script hängen geblieben. Ich vermute das es an der Abfrage ob der nächste Wert grösser ist als der aktuelle stehen bleibt.
Die Version ist WINCC advanced V13 Sp1 mit PC- Runtime

Kann mir hier einer weiterhelfen?? Wäre echt toll :)

Danke schonmal im voraus



Die funktionierende Datei sieht so aus:

Artikelnr.;Stückzahl;Werkstücknr.;Solltermin;Palettenplatz;Status;
0;0;0;20.06.2017;1;1;
0;0;0;20.06.2017;2;1;
0;0;0;20.06.2017;3;1;
0;0;0;20.06.2017;4;1;

Die nicht funktionierende sieht so aus:

Artikelnr.;Stückzahl;Werkstücknr.;Solltermin;Palettenplatz;Status;
0;0;0;20.06.2017 14:15:18;2;1;
0;0;0;20.06.2017 14:15:22;3;1;
0;0;0;20.06.2017 14:15:26;4;1;
0;0;0;20.06.2017 14:15:13;1;1;



Hier der Auszug aus meinem Script wo die Bubblke Sort Geschichte gemacht wird
'****************************** Datei zeilenweise einlesen und auf internen Array legen********************************
Do While Not f.AtEndOfStream
MyZf = f.ReadLine
field = Split(MyZf, ";")

For i=0 To 5 ' Zeile zerlege und auf Array legen
HiField(j,i) = field(i) ' Syntax HiField j--> Zeilennr, HiField i--> Spaltennr
Next
j = j + 1 ' Zeilenanzahl erhöhen
Loop
'************************Tabelle sortieren****************************************
Do
tauschen =False
For k = 1 To j-1 'k-->Zeilennr (j-> maximale Zeilenanzahl)

If HiField(k,3) > HiField(k+1 ,3) And HiField(k,3) > 0 Then
Artikel= HiField(k,0)
Stueckzahl= HiField(k,1)
Werkstuecknr= HiField(k,2)
Solltermin= HiField(k,3)
LeerplatzNr= HiField(k,4)
Zustand= HiField(k,5)

'Zellinhalte tauschen
HiField(k,0)=HiField(k+1,0)
HiField(k,1)=HiField(k+1,1)
HiField(k,2)=HiField(k+1,2)
HiField(k,3)=HiField(k+1,3)
HiField(k,4)=HiField(k+1,4)
HiField(k,5)=HiField(k+1,5)

' Original Inhalte in nächste Zelle
HiField(k+1,0)=Artikel
HiField(k+1,1)=Stueckzahl
HiField(k+1,2)=Werkstuecknr
HiField(k+1,3)=Solltermin
HiField(k+1,4)=LeerplatzNr
HiField(k+1,5)=Zustand
tauschen=True
End If
Next
Loop Until Not tauschen
 
Hallo,

habe mal deinen Skript nachprogrammiert:

Dim arr(4) ' Eingelesenes Datum
Dim data ' ein Datum
Dim i ' Laufvariable
Dim chg ' Keine Änderung

arr(0) = "20.06.2017 14:15:18"
arr(1) = "20.06.2017 14:15:22"
arr(2) = "20.06.2017 14:15:26"
arr(3) = "20.06.2017 14:15:13"
i = 0

Do
chg = False

For i = 0 To 2
If CStr(arr(i)) > CStr(arr(i + 1)) And CStr(arr(i)) <> "" Then
chg =True
data = arr(i)
arr(i) = arr(i+1)
arr(i+1)= data
End If
Next

Loop Until Not chg

SmartTags("data_0") = arr(0)
SmartTags("data_1") = arr(1)
SmartTags("data_2") = arr(2)
SmartTags("data_3") = arr(3)

Das Einzige was ich anders mache, ist ein Cast nach String (CStr) beim Vergleich und ein Vergleich auf <> "".

Gruß
 
Zurück
Oben