2010-07-27 6 views
1

J'ai hérité d'une énorme base de données MS Access volumineuse et je suis affecté pour résoudre un problème. Le problème est le suivant ...Fonction Microsoft Access TransferText: problème avec la page de codes

Le système A exporte ses données dans un fichier .txt délimité par un pipeline. Les fichiers ont des caractères spéciaux qui fonctionnent correctement, par exemple la valeur "Müller" s'affiche lors de l'ouverture de ce fichier dans le bloc-notes ou Excel.

Ensuite, la base de données Access importe le fichier .txt et stocke le résultat dans une table interne des employés. Le champ de nom est de type "mémo". La méthode pour importer des données à partir du fichier txt à MS Access est la suivante:

Call DoCmd.TransferText(acImportDelim, _ 
         "tblEmployees", _ 
         "tblEmployees", _ 
         me.txtImportFile, _ 
         True) 

Après avoir exécuté cette importation et l'affichage de la table des employés, j'ai remarqué que les noms avec des caractères spéciaux sont foiré. "Müller" devient "Mùller" par exemple. J'ai étudié un peu d'aide en ligne et a trouvé que peut inclure un paramètre « codepage » dans l'appel TransferText, donc je l'ai mis à 65001 (qui est appearantly la page de code pour unicode):

Call DoCmd.TransferText(acImportDelim, _ 
         "tblEmployees", _ 
         "tblEmployees", _ 
         me.txtImportFile, _ 
         True, _ 
         , _ 
         65001) 

Maintenant que je l'ai couru la importer à nouveau le script, je ne vois aucune différence, les caractères spéciaux sont encore mal renseignés. Je suis à bout de souffle et j'espère que l'un de vous aura des conseils sur la façon de résoudre ce problème ...

Répondre

2

Les deux versions de votre opération TransferText utilisent un nom de spécification nommé tblEmployees. Quelle page de code est spécifiée dans cette spécification?

Essayez d'importer le fichier texte manuellement. Choisissez "Avancé" de l'Assistant Importation de texte. Sélectionnez ensuite Unicode dans la zone de liste Page de code. Vous devrez peut-être tester avec différentes sélections de page de code jusqu'à ce que vous trouviez lequel importe votre texte correctement.

Quelle que soit la sélection de la page de codes, sauvegardez vos choix en tant que spécification et utilisez-la dans votre commande TransferText, sans fournir de paramètre CodePage distinct.

0

aide CodePage = 1200 (msoEncodingUnicodeLittleEndian) résolu la question dans mon cas.

Questions connexes