2017-05-04 3 views
0

J'utilise ADO pour importer des données à partir de classeurs Excel. J'ai quelques problèmes avec des feuilles de calcul où un nom de colonne contient un point: "Col.1".Comment CHOISIR la colonne dont le nom de champ contient un point

J'ai essayé tout ce que j'ai trouvé: guillemets doubles, crochets, backstick. Rien ne fonctionne. Une erreur est générée ou la requête affiche "Col.1" sur chaque ligne.

QUERY_SQL = _ 
"SELECT `Col.1`, Col3 FROM [table$] " & _ 
"IN '" & SourcePath & "' " & CHAINE_HDR 

Compte tenu du fait que je ne peux pas renommer la colonne dans le fichier source,

Comment puis-je sélectionner manuellement cette colonne en utilisant son nom pas son numéro ([F1])?

+2

Voulez-vous dire que vous avez essayé les crochets '[]' ou les parenthèses '()'? –

+0

Qu'en est-il de l'échappement du point avec un antislash? '\ .' –

+0

avez-vous essayé d'écrire le symbole de point comme quelque chose comme le html s'échappant ou utilisant un * '* avant le *. *? – Radinator

Répondre

3

J'ai finalement trouvé comment extraire des données de cette colonne. Vous devez remplacer "." par « # » et de mettre le nom de colonne entre parenthèses ou backsticks carrés:

QUERY_SQL = _ 
"SELECT `Col#1`, Col3 FROM [table$] " & _ 
"IN '" & SourcePath & "' " & CHAINE_HDR 

Cependant, cela ne fonctionne pas dans les requêtes INSERT INTO.:

INSERT INTO [sheet$] (Col2, `Col#4`) IN '" & TargetPath & "' 'Excel 12.0;' " & QUERY_SQL 

Bien que ce soit moins problématique pour moi car je peux renommer tous les champs dans les feuilles cibles, cela est encore un comportement étrange.