Syntaxe sql pour passer le nom d'une table depuis une variable

Signaler
Messages postés
9
Date d'inscription
jeudi 13 décembre 2007
Statut
Membre
Dernière intervention
12 mars 2009
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,


J'ai un petit soucis avec la requete ci dessous, je voudrais passer le nom de la
 table via une variable ( dans l'exemple a) car cela peut concerner differentes tables
Mais je ne trouve pas la  bonne syntaxe


Pouvez vous m'aider ?


Voici le bout de code


 


Sub ajout_liste()
        Dim strsql, a As String
        a = " & txtidcours1.Text & "
        strsql = " insert into   a   (id_eleve,) values ('" & txtidchoixcours.Text & "',)"
        Call ExecuteRequete(strsql)
End Sub

Merci

Odammas

7 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Essaye cela :
 
Sub ajout_liste()
        Dim strsql, sTable As String
        sTable = txtidcours1.Text
        strsql = "insert into " & sTable & " (id_eleve) values ('" & txtidchoixcours.Text & "')"
        Call ExecuteRequete(strsql)
End Sub

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Supprime les virgules qui se trouvent devant les parenthèses de fin
+ considère 'a' comme une variable, pas comme le vrai nom d'une table

      a = " & txtidcours1.Text & "
      strsql = "insert into " & a & " (id_eleve) values ('" & txtidchoixcours.Text & "')"

Comme tu l'auras lu dans le forum sur les questions liées au SQL (?), si ton champ est :
- numérique : pas d'encadrement - à mon avis, id_eleve est surement un chiffre, donc il ne faudrait pas de '
- texte : encadrement par '
- date : encadrement par #

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Ah, pour une fois, Exploreur, tu me bats à plus d'une minute !   lol
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Rappel aussi :
   Dim strsql, sTable As String
ne signifie pas que strsql sera dimensionné en String, mais en Variant
Ca marchera quand même, mais ...
Toujours définir le type pour chaque variable
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Lol...Jack...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
9
Date d'inscription
jeudi 13 décembre 2007
Statut
Membre
Dernière intervention
12 mars 2009

Merci pour votre réponse mais cela ne fonctionne pas, erreur dans l'instruction into.

J'avais essayé de la passé avec "&  &" les caractères encadrements  mais NOK

Les deux virgules ( séparateurs car j'ai supprime une partie des champs)

Merci

Odammas
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Re
Copie/colle ici les deux lignes corrigées, qu'on y jette un oeil.
As-tu supprimé les ' qui encadrent txtidchoixcours.Text ?
Car, a mon avis, le champ id_eleve est numérique

D'autre part, tu auras lu aussi dans les milliers de questions du forum sur ce genre de problème que :
Si le nom d'une table ou d'un champ comporte des accents ou des espaces ou des caractères spéciaux, il faut encadrer le nom de ce champ ou de cette table avec des crochets [ et ]
Exemple :
"insert into [ma table spéciale] ..."

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)