Signaler

Probleme de syntaxe SQL-VBA [Résolu]

Posez votre question GermPeru 100Messages postés mercredi 7 décembre 2016Date d'inscription 25 mai 2017 Dernière intervention - Dernière réponse le 15 mai 2017 à 17:43 par GermPeru
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
Afficher la suite 
Utile
+0
plus moins
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 ?

GermPeru 100Messages postés mercredi 7 décembre 2016Date d'inscription 25 mai 2017 Dernière intervention - 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' @
Répondre
GermPeru 100Messages postés mercredi 7 décembre 2016Date d'inscription 25 mai 2017 Dernière intervention - 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é...
Répondre
Donnez votre avis
Utile
+0
plus moins
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?
GermPeru 100Messages postés mercredi 7 décembre 2016Date d'inscription 25 mai 2017 Dernière intervention - 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
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !