Logo faq-o-matic.net
Logo faq-o-matic.net

CSV als Datenbank: Unterschiede zwischen Vista und XP

von veröffentlicht am6. Juni 2008, 14:53 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Scripting, VBScript, Vista, Windows XP   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Zugegeben, es ist ein etwas exotischer Fall. Trotzdem wird der eine oder andere vielleicht wie ich darüber stolpern: Windows Vista verhält sich bei der Datenbankansprache an einigen Stellen etwas anders als seine Vorgänger. Im konkreten Fall hatte ich ein Skript entwickelt, das zwei CSV-Dateien (Textdateien mit Datenfeldern, die per Komma getrennt sind) per ADO (ActiveX Data Objects) zusammenführen sollte. Unter Vista lief alles problemlos. Unter XP lief dasselbe Skript gar nicht.

Nach etwas Suchen fand ich die Lösung: Beim ADO-Zugriff auf Textdateien (dafür ist der Jet-Datenbanktreiber zuständig) erwartet XP, dass die Datei im ASCII-Format (bzw. ANSI) vorliegt. Ist die Datei als Unicode gespeichert, kann XP sie nicht richtig auswerten. Vista ist da offenbar toleranter. Und genau das war das Problem: Die Daten, die mein Skript unter Vista erzeugt und gelesen hatte, akzeptierte dasselbe Skript in XP nicht.

Lösung: Beim Erzeugen der Textdateien habe ich nun ausdrücklich das ASCII-/ANSI-Format erzwungen. Das geht bei der Methode CreateTextFile über den dritten Parameter, der „false“ sein muss. Folgendermaßen sieht die Zeile nun in der Fassung aus, die sowohl mit Vista als auch mit XP funktioniert:

Set objExport = objFSO.CreateTextFile(strExportPfad, vbTrue, vbFalse)

 

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!