C'est quoi la faute dans mon code SQL?

thedavix Messages postés 466 Statut Membre -  
thedavix Messages postés 466 Statut Membre -
Voila j'ai fait un bouton dans un formulaire access,
qui est sencé prendre tout les formulaires qui sont répertorié dans MsysObects et copiers les noms dans une table, alors j'ai écrit ce code
---------
Dim SQLTxt As String
Dim SQLSelect As String

SQLSelect = "SELECT MSysObjects.Name FROM MSysObjects WHERE ((MSysObjects.Type)=-32768) ORDER BY MSysObjects.Name; "

SQLTxt = "INSERT INTO tTest(tables) VALUES (SQLSelect) "

Mais ca marche pas.. il ne se passe rien...
qqun peut m'expliquer?

" Le vrai savant n'est pas celui qui apprend,
mais celui qui comprend... " =;o)

4 réponses

  1. Utilisateur anonyme
     
    SQLSelect c'est juste un chaîne.

    faut que tu crées un objet QueryDef, même temporaire, à partir de ça, et seulement ensuite tu insères, sinon, tout simplement:

    insert into tTest(tables)
    select Name FROM MSysObjects
    WHERE Type=-32768
    ORDER BY Name;

    kinder.surprise,
    le maton du matou
    0
    1. thedavix Messages postés 466 Statut Membre 35
       
      J'ai pas trop compris, t'arriverai a etre un peu plus explicite? lol.. désolé mais le SQL.. je ne suis pas a l'aise avec...
      voila mon code c'est quoi que je dois rajouter et ou?
      -------------
      Private Sub Command12_Click()
      Dim SQLTxt As String
      Dim SQLSelect As String
      Dim bds As Database
      Dim rst As Recordset

      SQLSelect = "SELECT MSysObjects.Name FROM MSysObjects WHERE ((MSysObjects.Type)=-32768) ORDER BY MSysObjects.Name; "

      Set bds = CurrentDb

      SQLTxt = "INSERT INTO tTest(tables) VALUES (SQLSelect) "

      Set rst = bds.OpenRecordset(SQLTxt)

      End Sub
      ---------

      je te remercie vraiment si tu as le temps de m'aider.. sinon tampis..

      " Le vrai savant n'est pas celui qui apprend,
      mais celui qui comprend... " =;o)
      0
  2. Utilisateur anonyme
     
    je n'ai plus trop le temps là mais c'était juste pour te montrer, dans la deuxième partie, qu'en une seule requête tu fais tout, pas la peine de sélectionner d'abord puis insérer, et par ailleurs, QueryDef il faut que tu jètes un oeil dans la hiérarchie d'objets DAO.

    Sinon, jette aussi un oeil sur Execute, des bricoles comme ça.

    Tu a une requête action devant toi, donc typiquement, tu n'as pas besoin qu'elle te renvoie d'autre résultat que "OK ça a marché" en gros, donc, l'objet recordset n'est pas le plus aproprié.

    Désolé, le forum en vrac toute la journée ne m'a pas fait gagner de temps, mais avec ces pistes là tu peux sans problème régler tout ça assez rapidement
    kinder.surprise,
    le maton du matou
    0
  3. mouse Messages postés 136 Statut Membre 10
     
    Tu peux utiliser

    docmd.runSQL "ta chaine de caractere contenant le SQL"

    donc a la place de
    Set rst = bds.OpenRecordset(SQLTxt) qui ne marche pas je pense
    ecris

    docmd.runSQL SQLTxt

    A+
    0
    1. thedavix Messages postés 466 Statut Membre 35
       
      Merci ca marche maintenant,
      J'ai juste modifié
      le insert xxxxx values et j'ai tout mit en un
      et ca marche parfaitement
      Je te remercie encore une fois...

      bonne journée

      " Le vrai savant n'est pas celui qui apprend,
      mais celui qui comprend... " =;o)
      0
  4. Utilisateur anonyme
     
    oui voilà, typiquement

    kinder.surprise,
    le maton du matou
    0