VBA Access : Nombre d'enregs d'une requête

Fermé
Gretch34 Messages postés 2 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 9 décembre 2008 - 9 déc. 2008 à 16:27
blux Messages postés 26769 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 9 avril 2025 - 9 déc. 2008 à 17:25
Bonjour,

Lorsqu'on ouvre une requête dans Access, le nombre d'enregistrements total s'affiche au bas de l'écran.
Actuellement, avant d'ouvrir une requête, je lance un DCOUNT(...) dessus en VBA pour voir si elle contient des enregistrements et, si oui, je l'ouvre. Mais, au final, ma requête a été exécutée 2 fois (une fois au DCount et une autre fois à l'ouverture).

Pour optimiser le traitement, je voudrais ouvrir la requête et regarder si elle contient quelque chose. S'il n'y a rien, je la ferme. (Résultat, une seule ouverture et un test).

Mon problème est que, lorsque la requête est affichée à l'écran, je ne sais pas comment chercher si elle contient quelque chose (sans passer par un Recordset).

D'avance merci

G.

3 réponses

Primo: "Mon problème est que, lorsque la requête est affichée à l'écran, je ne sais pas comment chercher si elle contient quelque chose (sans passer par un Recordset)." Si elle est affichée à l'écran tu vois ce qu'elle contient, donc pas besoin de chercher!

Secundo, je ne vois qu'un recordset pour résoudre ton problème:

dim db as database
dim rs as recordset

set db = currentdb
set rs= db.openrecordset("TaTable")
rs.movevirst
if not rs.eof then
rs.movelast
msgbox rs.recordcount
'continuer ici le code
else
msgbox "Pas de record !!!'
end if

'...

set rs = nothing
set db = nothing
0
Gretch34 Messages postés 2 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 9 décembre 2008
9 déc. 2008 à 17:22
Merci pour ta réponse rapide.

Néanmoins, l'application étant destinée à des utilisateurs, je ne veux pas leur afficher la requête si elle est vide (ou la fermer automatiquement si elle est vide).

Pour des questions de performances, je ne souhaite pas passer par un recordset. Sinon, on ouvre une fois la requête dans un recordset et on teste pour voir si elle contient qqchose. Si oui, on l'ouvre à l'écran. Résultat, on a ouvert 2 fois la requête.

Je souhaiterais avoir l'information affichée au bas de l'écran quabd la requête s'affiche.

Merci quand même ;-)

G.
0
blux Messages postés 26769 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 9 avril 2025 3 334
9 déc. 2008 à 17:25
Salut,

dur problème à résoudre.

Il y a des SGBD qui ne remontent pas la totalité des résultats d'une requête (d'ailleurs, où les mettrait-on si on avait 250 millions de lignes en résultat ?), la plupart se contentent de mettre à la disposition de l'utilisateur un curseur (fetch en anglais) qui va parcourir les résultats à la demande.

C'est à cause de ce genre de problèmes que l'on est obligé de parcourir une requête en entier pour en connaître le nombre, comme la solution donnée précédemment avec un .movelast sur un recordset.
0