Probleme de syntaxe SQL-VBA

Résolu/Fermé
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 11 mai 2017 à 16:55
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 15 mai 2017 à 17:43
Bonjour a tous,

J´effectue des requetes a mon serveur depuis VBA-Excel, mon probleme et que j´ai une table qui contient le signe @... et lors de ma connection il ne reconnait pas ma table, le probleme est certaienement que ce signe est une variable a la fois en sql et en vba.

En sql pour palier a ceci on met le nom de la table entre crochet: [@OBOE ], pour le definir en texte

En vba ma requete sql est entre " ", ce qui ne devrait pas me poser de pb car définit comme un texte...
Sql = "select * from [@OBOE ]"

Mais cela ne marche pas, peut etre que le vba me retire les crochet et ce qui fait que l'@ n´est plus comme texte en Sql...

Enfin j´ai fait des tests dans tous les sens et rien de concluant, et je n´ai rien trouvé sur le net. Donc si klk un a une soltion je lui en serait tres reconnaissant!!

Merci d'avance
A voir également:

2 réponses

Zero-One Messages postés 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
11 mai 2017 à 17:17
Bonjour,

peut être que tu doit déclarer la variable Sql comme STRING au début,

Et c'est quoi l'erreur que tu as en retour pour que tu as pu constater que c'est le signe @ qui pose problème ?

0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
Modifié le 11 mai 2017 à 17:21
Bonjour et merci,

J´ai une autre table qui s´appelle OBOE et lorsque je fais
Sql = "select * from [OBOE ]"

Cela fonctionne

et en debut de module j´ai:

Dim stSql As String

Je suis prenneur pour toutes idées, mais pour ce que je comprends le pb et l' @
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
11 mai 2017 à 17:31
Pour etre un peu plus explicite, vu que je ne parle pas le SQL on me transmet les requetes SQL et ma partie est trvaillaer le resultat en Excel.

Pour tester la syntaxe de la requete je passe par une fonction pour tester ma connection et pour tester mon recordset, il n´y pas de message dérreur réel, seulement que ma requete n´est pas valide.

Con.OpenConnetion
MsgBox Array("Pas Bon!", "Bueno !")(Abs(Con.OpenConnetion))
Set RS = Con.OpenRecordSet(Sql)
MsgBox Array("Pas Bon!", "Bueno !")(Abs(TypeName(RS) <> "Nothing"))
RS.Close
Con.CloseConnection
Set RS = Nothing


Le détail est lorsque je le fait sans vba et je passe directment par connection a base de données depuis Exce, ma requete est valide; ce qui me fait d´autant plus penser que mon pb est du a une desinterprétation de ma requete de VBA qui fait quélle devient invalide lors de ma connection a mon serveur SQL...

Je suis pas spécialiste dans le domaine et un peu perdu donc si vous avez des idées voir meme la solution je suis prenneur car ca va faire des heures que je suis bloqué...
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
12 mai 2017 à 21:07
bonsoir, quel est le type de ta base de données?
peux-tu partager ton code plus complet, ainsi que le message d'erreur que tu reçois?
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
15 mai 2017 à 17:43
Bonjour yg_be,

Pour repondre a ta question:

J´ai trouvé une fonction pour avoir tous les noms de mes tables

Public Function OpenSchema()
If Connexion.State = 0 Then
    OpenConnetion
End If
Set OpenSchema = Connexion.OpenSchema(20)
End Function


Et a ce que j´ai compris c´est ADODB reformate le nom des objet si un caractère ne lui convient pas il le formate a son gout...

Donc en SQL la table est nommé: @OBDE
Et quand je j´applique openschema il míndique: @_OBDE...

Dans tous les cas merci pour ta réponse et mon probleme est résolu!

Merci
0