|
Droit de diffusion et
d'utilisation:
Tous les documents ou partie de document ainsi que le code
sont libres d'accès, mais ne peuvent pas être diffusés
sur d'autres sites HTTP, FTP ou autres, sans mon accord.
L'ensemble de mon code mis à votre diposition est libre d'utilisation
tant qu'il ne sert pas à la réalisation d'applications
payantes. Je demande juste aux personnes incluant mon code dans
leurs applications d'y laisser le commentaire mis en entête.
Il existe deux objets ADO pour réaliser les requêtes
: Command et Recordset. Quelle est la différence ?
L'objet Recordset, comme son nom l'indique, permet de
récupérer un ensemble d'enregistrements. La seule
requête SQL permettant de récupérer un jeu d'enregistrements
est le SELECT. Vous pouvez tout aussi bien utiliser cet objet pour
faire des UPDATE, DROP, ALTER, ...
Dans le cas de ces dernières opérations on utilisera
plutôt Command qui fera l'objet du prochain chapitre.
Je tiens tout de même à spécifier
qu'il existe plusieurs façons d'exécuter une requête,
mais j'ai fait le choix de vous présenter celle qui me semble
la plus propre et la plus claire. Donc ne soyez pas surpris si vous
trouvez sur d'autres cours et tutoriaux d'autres façons de
faire.
3. Réaliser des requêtes avec l'objet Recordset
Comme pour l'objet Connection vous devez commencer par déclarer une variable de type Recordset.
ou alors
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset |
Une fois ces lignes de code tappées, vous pouvez exécuter
votre requête. Pour celà vous devez utiliser la méthode
Open de l'objet Recordset. Cette méthode prend en
paramètre :
- la requête
- la connexion sur laquelle vous souhaitez exécuter la requête
- le type du curseur (je vous renvoie à des cours de
SGBD)
- le type de blocage
- le type de requête
L'ensemble de ces champs sont facultatifs, mais je vous
conseille d'au moins passer les deux premiers paramètres
à la méthode. Celà rend le code plus clair.
Dans les exemples qui vont suivre je n'utiliserai que les deux premiers
paramètres. Si vous souhaitez plus d'informations, je vous
renvoie sur MSDN qui est très bien documenté.
Voici un petit exemple :
Une fois le Open exécuté, l'ensemble des
enregistrements retournés par le SELECT se trouvent dans
l'objet Recordset, ici rst.
Pour accéder à ces enregistrements vous
devez utiliser le champ Field. Chaque champ Field contient une
colonne. Dans notre cas nous en avons 3 numérotées
de 0 à 2. Vous avez donc deux solutions pour accéder à
un champ. Prenons l'exemple du champ prenom. Vous faites rst.Fields(1)
ou bien rst.Fields("prenom"). Vous avez pû voir
certainement du code avec rst(1) ou bien rst("prenom"),
c'est la même chose. Et oui les développeurs sont un
peu faignants dès qu'il s'agit de tapper du code ;o)
Accèder à un champ c'est bien, mais pouvoir
naviguer dans l'ensemble des enregistrements c'est mieux. Pour celà,
il existent des méthodes permettant de le faire :
- MoveFirst : sélectionne le premier enregistrement
- MoveLast : sélectionne le dernier enregistrement
- MoveNext : sélectionne l'enregistrement suivant
- MovePrevious : sélectionne l'enregistrement précédent
Il y a deux propriétés de l'objet Recordset à
connaître pour la navigation qui sont:
- BOF (Begin Of File) : est à vrai si l'objet
Recordset pointe sur le début d'enregistrement
- EOF (End Of File) : est à vrai si l'objet
Recorset pointe sur la fin de l'enregistrement
Voici un exemple de boucle permettant de parcourir un
jeu d'enregistrement et d'afficher le résultat.
Il arrive que certaines fois, il y est un problème avec l'objet
Recordset et il ne pointe pas au début de l'enregistrement.
Donc pour remédier à ce problème vous pouvez
tappez les lignes suivantes après avoir effectué le
Open.
rst.MoveLast
rst.MoveFirst
|
Une fois que vous n'utilisez plus le Recordset, pensez
à le fermer avec la méthode Close.
Il existe une autre propriété qui peut
être intéressante qui est RecordCount. Elle vous permet
de savoir le nombre d'enregistrements stockés dans l'objet
Recordset.
Voici un petit exemple de fonction pouvant exécuter
tout type de requêtes via un Recordset.
Documents réalisés par
Sébastien Curutchet
|