2016-11-28 1 views
0

Le nom de la feuille est DATA sur Excel, en utilisant les propriétés F4 dans VBA au lieu de sheet1 Je l'ai changé en sData.Requête Sql vba ADO

Ma requête aql ne renvoie aucun résultat. J'ai besoin d'extraire une colonne de la feuille de données du même classeur dans VBA.

Mon code est:

Sql = "Select productNumber from [shtData$] where produvtDesc = "&pDes&" " 
'pDesc is a string variable that stores description. 

Est-ce que nous mettons le nom de la feuille dans la requête SQL? J'ai aussi essayé [Data $] mais ça ne marche pas.

Aidez-nous s'il vous plaît.

Répondre

0

Comme vous n'avez pas ajouté de code concernant le je suppose que vous configurez la connexion correctement.

  • utilisez le nom de feuille que vous voyez dans Excel, pas le code F4 (name). Utilisez-le avec un $ de fin et des crochets comme vous l'avez fait
  • Je suppose que pDes ne contient pas une chaîne entre guillemets. Alors, ajouter des guillemets autour de votre où-critérium
  • regard here sur la façon de mettre en place une connexion de bruit pour exceller
  • alternativement, cet exemple d'un sql sur un fichier Excel fonctionne même si votre connexion réelle ado fait référence à une autre base de données :

    SELECT * FROM [data$A1:E1000] IN 'C:\path\MyFile.xlsx' [Excel 12.0;HDR=YES;IMEX=0] 
    

Edit: Pour un xls dont vous avez besoin des propriétés différentes, comme décrit dans le lien ci-dessus.

  • Je suppose que votre fichier est appelé data.xls et qu'il contient une feuille qui est appelée data

  • cela fonctionne si elles sont stockées dans une chaîne, puis utilisée comme chaîne de connexion:

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\data.xls; 
    Extended Properties="Excel 8.0;HDR=YES"; 
    

    et appairé avec ce sql

    Sql = "Select productNumber from [data$] where produvtDesc = '" & pDes & "'" 
    
  • puisque vous voulez utiliser un chemin dynamique essayer

    myCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filepath & "\data.xls;Extended Properties=""Excel 8.0;HDR=YES"";" 
    

    La clé est d'échapper aux guillemets doubles " avec un 2ème "

+0

Alors mon sql devient: sélectionnez PRODUITNUMERO de [Data $] où productDesc = '"& pDesc ​​&"' ".Lors de la définition de la connexion, ma connexion est correcte, mais comme vous l'avez mentionné, le chemin est d'obtenir le chemin de manière dynamique, stocker dans une variable, puis je veux mettre Data.xls, concaténation peut-on dire. –

+0

Donc "Data Source =" & pathname & "Data.xls" & ";", Est-ce exact? –

+0

Je ne sais pas comment mettre le chemin, je reçois une erreur de suntax –

0

Je pense qu'il y a une faute de frappe dans votre variable pDesc. Dans la note, vous l'avez appelé 'pDesc' mais dans la chaîne de commande SQL, il s'appelle 'pDes'.

En outre, est-il possible que vous ayez quel que soit le SGBD que vous utilisez pour faire la distinction entre les majuscules et les minuscules lorsque vous faites référence aux noms de table (donc soyez [DATA $])? Je sais que la plupart des SGBD par défaut à la casse sensible, mais je crois qu'il est possible de configurer pour être sensible à la casse pendant le processus d'installation ...