Pb avec SELECT sous Access

Bonjour,
Je voudrais exécuter une commande contenant "SELECT..." et récupérer le résultat de cette requête.
Voici mon code :
Private Sub Commande10_Click()
bla = "SELECT age FROM desc_age WHERE (num_collection =63)"
DoCmd.RunSQL (bla)

End Sub
L'erreur indiquée par le compilateur est la suivante ; "Une action Executer une commande SQL doit contenir une instruction SQL"
Merci d'avance pour votre grande aide
Configuration: Windows 2000
Firefox 3.0.1

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,
    Avec un DoCmd.RunSql (rq), tu dois forcément avoir une requête d'ajout, de modif ou de suppression, mais pas une requête de sélection.

    La méthode est la suivante :

    Dim sql As String
    Dim rs As Recordset

    sql = "SELECT age FROM desc_age WHERE (num_collection =63)"
    Set rs = CurrentDb.OpenRecordset (sql)

    Dans ce cas tu ouvres, dans le recordset, l'ensemble de tes enregistrements, que tu peux ensuite utiliser comme bon te semble!

    @+
    1. Salut !
      Merci pour le coup de main.
      Pour transformer le recordSet en texte, je peux faire comment ?
      Merci pour l'aide
      1. Le but est de récupérer cette vameur d'"âge" pour pouvoir ensuite l'insérer dans une autre requête SQL. De plus dans certains cas, j'aurais besoin de l'afficher dans une MessageBox pour signaler à l'utilisateur que cette valeur est abérante.
        Merci pour ton aide :)
        1. Ok.
          Donc tu as effectué ta requête, ouvert ton recordset.
          Pour en effectuer un traitement, ma démarche habituelle (mais non universelle) est la suivante :

          Dim sql As String
          Dim rs As Recordset

          sql = "SELECT age FROM desc_age WHERE (num_collection =63)"
          Set rs = CurrentDb.OpenRecordset (sql)

          While rs.EOF <> True
          --
          -- Traitement
          --
          rs.MoveNext
          End While

          Ainsi, dans la boucle While, tu parcours chaque enregistrement de ton Select.
          Pour récupérer la valeur de l'enregistrement en cours, tu n'as qu'à utiliser rs(0).

          Si tu avais fait un "SELECT Table.Champ1, Table.Champ2, Table.Champ3 .... FROM Table....", tu aurais pu récupérer :

          Champ1 dans rs(0)
          Champ2 dans rs(1)
          Champ3 dans rs(2)
          etc...

          En espérant t'avoir aidé...
          @+