2009-10-06 9 views
2

Mon application VB.NET utilise l'importation une feuille Excel dans l'accèsl'importation de données Excel dans l'accès

command.CommandText = "SELECT * INTO [MS Access;Database=" & current_db & "].[" & sheet_name & "] FROM [" & sheet_name & "$]" 

Le problème est que si j'ai quelques cellules avec le message d'erreur verte dans Excel, ils ne sont pas importés dans l'accès . Et ils sont en fait dans le même format, ils n'ont pas de premier plan, mais excellent, il dit que le nombre est formaté en texte.

Une solution simple serait de simplement corriger cela dans Excel mais souvent les utilisateurs oublient de le faire et les données sont ignorées.

Comment puis-je forcer la connexion à importer une colonne spécifiée en tant que numéro?

Répondre

5

Je le faire par

  1. Dans Access, définir la structure de la table (appeler YourNewStagingTable) que vous voulez importer dans (ne faites pas votre table finale - c'est purement votre table de mise en scène (I définir habituellement juste tous les champs texte ici).
  2. utilisation INSERT INTO YourNewStagingTable SELECT Columns FROM SpreadsheetPath
  3. Exécuter toutes vos corrections et validations de données sur ce tableau
  4. Déplacez les données de YourNewStagingTable à FinalDataTable

Si vous rencontrez toujours des problèmes de traduction de type de données, vous devrez modifier les mappages ISAM pour le fichier.

+0

merci, cela fonctionne bien – Iulian

+0

putain, j'utilisais un fichier avec déjà la colonne 'convertis en chiffres', Je reçois toujours la même chose malheureusement. Ma nouvelle chaîne de connexion est "INSERT INTO [MS Access; Base de données =" & current_db & "]. [" & Sheet_name & "] SELECT * FROM [" & feuille_name & "$]" _connection.Open() Et je Définir le type de colonne que je suis intéressé par le texte, mais il ne reçoit toujours pas les données. – Iulian

+0

Pouvez-vous créer un lien vers cette feuille de calcul? –

0

Vous pouvez également importer des données Excel vers l'accès MS en les copiant et collant. Peut-être que cela pourrait être une meilleure solution s'il y a moins de données à traiter.

+0

Il semble qu'il essaie d'automatiser un processus au lieu de le faire manuellement. –

+0

Exactement, et en plus de cela, je fais beaucoup d'interrogation dans la base de données finale après cela pour générer des rapports. C'est pourquoi je fais une application pour libérer les utilisateurs de coller manuellement des centaines de fichiers. – Iulian

+1

vous pouvez toujours automatiser le processus de copier et coller avec l'utilisation de macros – jerjer

0

Je ne pense pas qu'il existe un moyen de dire à l'ODBC pour le moteur Excel de forcer une colonne dans un type de données. Il ne regarde que les 7 premières lignes et prend une décision "intelligente" quant à ce que le dataype est pour cette colonne. Quand j'ai fait des migrations massives, j'ai eu le code "force" les données dans le bon type de données en faisant des trucs comme ce que vous avez mentionné ci-dessus et ensuite faire la commande d'insertion. Mais il semble que this soit toujours une alternative. En bref, vous devez masser vos données avant de les mettre dans la table.

Questions connexes