Lire une table d'une base access

Fermé
sandra - 28 déc. 2007 à 08:49
 bnb - 28 déc. 2007 à 13:08
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.
A voir également:

4 réponses

pourquoi l ouvrir en basic et pas sur une requete?
0
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!
0
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
0
Juste rajouter dans ResumeErr
exit function => sinon tu boucleras...

Mea Maxima Culpa
0