Microsoft Access TransferText-Funktion: problem mit Zeichensatz
Habe ich geerbt eine riesige, sperrige MS Access-Datenbank und beauftragt werde, ein problem zu lösen in ihm. Das problem ist wie folgt...
System Einen Export Ihrer Daten in eine pipeline getrennte .txt-Datei. Die Dateien mit Sonderzeichen korrekt funktioniert, beispielsweise den Wert "Müller" zeigt beim öffnen dieser Datei in notepad oder Excel.
Nächsten, die Access-DB importiert .txt-Datei und speichert das Ergebnis in einer internen Mitarbeiter-Tabelle. Das Feld Nachname wird der Datentyp "memo". Die Methode zum importieren von Daten aus der .txt-Datei zu MS-Access ist wie folgt:
Call DoCmd.TransferText(acImportDelim, _
"tblEmployees", _
"tblEmployees", _
me.txtImportFile, _
True)
Nach dem das importieren und anzeigen von mit der employees-Tabelle habe ich bemerkt, dass die Namen mit Sonderzeichen werden nach oben geschraubt. "Müller" wird "M├⌐ller" zum Beispiel. Ich untersuchte einige der online-Hilfe und fand heraus, dass die können eine "codepage" - parameter in der TransferText-Aufruf, so dass ich ihn an 65001 (was augenscheinlich ist die codepage für die unicode):
Call DoCmd.TransferText(acImportDelim, _
"tblEmployees", _
"tblEmployees", _
me.txtImportFile, _
True, _
, _
65001)
Nun, die ich habe lief das import-Skript wieder, ich sehe keinerlei Unterschied, die Sonderzeichen sind noch misformed. Ich bin running out of steam, so dass ich hoffe einer von Euch hat einige beraten, wie diese zu lösen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide Versionen der TransferText-Betrieb sind mit einem SpecificationName namens tblEmployees. Was Codepage angegeben ist, dass Spezifikation?
Versuchen Sie den Import der text-Datei manuell. Wählen Sie "Erweitert" aus dem Text Import-Assistenten. Dann wählen Sie Unicode in der Code-Listenfeld Seite. Sie können zum test mit verschiedenen Code-Seite Auswahlen, bis Sie finden, die man importiert den text richtig.
Denen je ein Code Page selection funktioniert, speichern Sie Ihre Auswahl als Spezifikation und verwenden Sie es in Ihrem TransferText-Befehl ohne Angabe eines separaten CodePage-parameter.
Mit Zeichensatz=1200 (msoEncodingUnicodeLittleEndian) das Problem gelöst, in meinem Fall.
es ist eine unicode-Liste in VBA:
http://msdn.microsoft.com/en-us/library/office/aa432511(v=office.12).aspx