Lire une table d'une base access

Bonjour,
je travaille dans access 2003, j'ai créé une table nommé listing. je voudrais maintenant travailler sur les enregistrements de cette table et pour cela je voudrais les lire les uns apres les autres.
j'ai créé un module dans acces afin de programmer en VBA. j'arrive à ouvrir un fichier texte sur le disque (j'ai trouvé de l'aide à ce sujet)
Open "c:\donnees-sandra\listing2.txt" For Input As #1

mais comment ouvrir une table ?
merci d'avance de votre aide.
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Dim db as database
    dim rst as recordset

    Set db= currentdb
    Set rst = db.openrecordset("Le Nom de ma table", db_open_snapshot)
    rst.movefirst

    Do until rst.eof
    debug.print rst(0)
    loop

    set rst= nothing
    set db = nothing

    Voilà, à toi d'arranger dans une procédure pour que cela réponde à tes désidératas!
    1. En plus propre...

      Function Lire () as boolean
      On Error goto LireErr

      Dim db as database
      Dim rst as recorset
      Dim tbl as tabledef
      Dim i as integer, j as integer

      set db= currentdb ' ouvre une occurence de ton application
      set tbl = db.opentabledef("listing") ' ouvre la définition de ta table
      i= tbl.fields.count ' retiens le nombre de champs dans la table
      set tbl = nothing 'referme la définition de la table
      set rst = db.openrecordset("Listing", db_open_snashot) ' ouvre la table en lecture seule
      if not rst.eof ' vérifie si la table n'est pas vide
      rst.movefirst ' se pose sur le 1er enregistrement de la table
      do until rst.eof ' permet de lire enregistrement par enregistrement jusqu'à la fin de la table
      for j = 0 to i-1 ' la liste des objets en access commence toujours à 0 donc le 1er champ est en fait le champ n°0
      debug.print rst(j).name & " : " & rst(j) ' affiche dans l'immediate window le nom et la valeur du champs sélectionné
      next j ' permet de passer au champs suivant de l'enregistrement
      loop ' passe à l'enregistrement suivant

      lire = true ' si la function a vien tournée renverra "true"

      ResumeErr:
      On error resume next ' Empeche de générer une erreur si une des 2 conditions suivantes n'est pas remplie
      set rst = nothing ' referme la table
      set db = nothing ' referme l'occurence de la db

      LireErr:
      msgbox err.number & " : " & err.description ' Si la procédure se plante t'indique la raison
      lire = false ' Puisque la procédure n'est pas bonne autant l'indiquer ;-)
      Resume ResumeErr 'Permet de quitter la procédure

      End Function
      1. Juste rajouter dans ResumeErr
        exit function => sinon tu boucleras...

        Mea Maxima Culpa