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

Gretch34 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   -
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.
A voir également:

3 réponses

bnb
 
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   Statut Membre Dernière intervention  
 
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 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
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