Arraywert läßt sich nicht in Datei schreiben
Hallo,
ich arbeite mit kommaseparierten Datendateien (CSV). Hin und wider kommt mir mal eine Datei mit über 200 Datensätzen unter, die weniger Datenfelder als üblich (hier 18) enthält. Das letzte Feld ist immer das Datum in der üblichen Schreibeweise (TT.MM.JJJJ). Manchmal fehlt dies auch (es sind also nur 17 Datenfelder) und mein Skript bricht mit dem Typunverträglichkeitsfehler ab.
So möchte ich also die Ausgabe in eine andere Datei in der Art manipulieren, daß bei einer Anzahl der Datenfelder kleiner als 18 (UBound) ein String in die Ausgabedatei geschrieben wird. Leider kommt immer wieder bei dem "kürzeren Datensatz" der obige Fehler. Was kann man tun ? CStr und CDate funktioneren nicht. Hier Teile des Codes:
Eine andere Möglichkeit wäre wohl gewesen, über objEingabe.Readline zu prüfen ob das vierte Zeichen von rechts eine 2 ist. Aber das wäre auch gescheitert, denn das vorletzte Datenfeld kann manchmal auch Zahlen enthalten.
Freundliche Grüße
GH
ich arbeite mit kommaseparierten Datendateien (CSV). Hin und wider kommt mir mal eine Datei mit über 200 Datensätzen unter, die weniger Datenfelder als üblich (hier 18) enthält. Das letzte Feld ist immer das Datum in der üblichen Schreibeweise (TT.MM.JJJJ). Manchmal fehlt dies auch (es sind also nur 17 Datenfelder) und mein Skript bricht mit dem Typunverträglichkeitsfehler ab.
So möchte ich also die Ausgabe in eine andere Datei in der Art manipulieren, daß bei einer Anzahl der Datenfelder kleiner als 18 (UBound) ein String in die Ausgabedatei geschrieben wird. Leider kommt immer wieder bei dem "kürzeren Datensatz" der obige Fehler. Was kann man tun ? CStr und CDate funktioneren nicht. Hier Teile des Codes:
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(EingabeDatei) Then
Set objEingabe = fso.OpenTextFile(EingabeDatei, 1)
Set objAusgabe = fso.CreateTextFile(Ausgabedatei, 2)
objEingabe.Skipline ' Die erste Zeile weglassen
Do While not objEingabe.AtEndOfLine
Inhalt=objEingabe.ReadLine ' ReadAll
arrFeld=Split(Inhalt, ";") ' in Arrays aufsplitten
....
' mit UBound prüfen ob 18 Datenfelder vorhanden
Zahl=Ubound(arrFeld) ' Die höchste Zahl
If Zahl=17 Then
Datum=CDate(arrFeld(17)) ' <------------ Typen unverträglich
else
Datum=" Datum fehlt !"
end if
MsgBox Datum ' zur Kontrolle !
accNamen=arrFeld(10) & ";" & arrFeld(15) & ";" & arrFeld(11) & ";" & arrFeld(12) & ";" & Datum & ";1920x1080;D;" & UCase(arrFeld(16)) & ";"
objAusgabe.WriteLine accNamen
Loop
objEingabe.Close
objAusgabe.Close
Set objAusgabe = Nothing
Set objEingabe = Nothing
Set fso = Nothing
Eine andere Möglichkeit wäre wohl gewesen, über objEingabe.Readline zu prüfen ob das vierte Zeichen von rechts eine 2 ist. Aber das wäre auch gescheitert, denn das vorletzte Datenfeld kann manchmal auch Zahlen enthalten.
Freundliche Grüße
GH
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 193090
Url: https://administrator.de/forum/arraywert-laesst-sich-nicht-in-datei-schreiben-193090.html
Ausgedruckt am: 06.01.2025 um 23:01 Uhr
4 Kommentare
Neuester Kommentar