OVH Cloud OVH Cloud

Nombre d'enregistrements d'une table

4 réponses
Avatar
Nicolas
Bonjour,

Mon appli vb6 utilise en base access 2000. Je souhaiterais=20
r=E9cup=E9rer le nombre de lignes d'une table qui fait pr=E8s de=20
50000 lignes.

J'ai bien essay=E9 avec un SELECT COUNT ou encore des trucs=20
du genre Rs.MoveLast puis Rs.Recordcount mais c'est=20
monstrueusement long.

Existe t il un moyen d'obtenir ce nombre de lignes de=20
mani=E8re quasi instantan=E9e, ou dois-je en etre reduit =E0=20
faire patienter l'utilisateur 30 secondes =E0 chaque=20
d=E9marrage de l'appli, le temps de compter le nombre de=20
lignes ?

Merci d'avance pour toute astuce

Nicolas

4 réponses

Avatar
seb-seb
y suffisait de les compter dans une variable sauvegardée sinon


"Nicolas" a écrit dans le message de
news:053f01c3be3e$59e89390$
Bonjour,

Mon appli vb6 utilise en base access 2000. Je souhaiterais
récupérer le nombre de lignes d'une table qui fait près de
50000 lignes.

J'ai bien essayé avec un SELECT COUNT ou encore des trucs
du genre Rs.MoveLast puis Rs.Recordcount mais c'est
monstrueusement long.

Existe t il un moyen d'obtenir ce nombre de lignes de
manière quasi instantanée, ou dois-je en etre reduit à
faire patienter l'utilisateur 30 secondes à chaque
démarrage de l'appli, le temps de compter le nombre de
lignes ?

Merci d'avance pour toute astuce

Nicolas
Avatar
Jamal I
Bonjour Nicolas,

Je viens d'effectuer des tests tu as deux solutions pour faire:
-Soit tu fais un "Select count(Tu mets le champ qui fais office de clé
primaire)" dans table pour 50000 lignes ça devrait couté à peu prés 0
secondes il ne faut pas faire un "Select count(*)" il prend plus de temps
- Ou tu fais un Rs.RecordCount avec une ouverture de curseur avec le
paramétre "adOpenKeyset".

Sur les deux cas j'ai fais le test sur plus 150000 enregistrements, il a mis
moins d'une seconde.

Cdt,
Jamal I



"Nicolas" a écrit dans le message de
news:053f01c3be3e$59e89390$
Bonjour,

Mon appli vb6 utilise en base access 2000. Je souhaiterais
récupérer le nombre de lignes d'une table qui fait près de
50000 lignes.

J'ai bien essayé avec un SELECT COUNT ou encore des trucs
du genre Rs.MoveLast puis Rs.Recordcount mais c'est
monstrueusement long.

Existe t il un moyen d'obtenir ce nombre de lignes de
manière quasi instantanée, ou dois-je en etre reduit à
faire patienter l'utilisateur 30 secondes à chaque
démarrage de l'appli, le temps de compter le nombre de
lignes ?

Merci d'avance pour toute astuce

Nicolas
Avatar
Nicolas
Merci Jamal pour ta réponse détaillée.
J'ai omis de préciser que je travaillais sur des tables
SAGE de gestion commerciale attachées en ODBC (DSN créé
sur les fichiers *.gcm et *.mae)

Il est évident que pour des tables locales, le résultat
est instantané, mais qu'en est-il pour des tables
attachées ?


Merci

Nicolas
Avatar
Jamal I
Ce que je te conseille dans ce cas là au lieu de passer par les tables
attachés via Access, Je te suggére d'ouvrir une connection ADO ou DAO (si tu
veux) vers ces sources ODBC chacune et de faire comme je l'ai indiqué dans
ma première réponse un "Select COUNT(Clé primaire)" de la table qui
t'intéresse. Si tu n'as pas un champ avec une clé, tu prends un champ indexé
sinon tu prends le champ ayant la plus petite taille.

Je pense que tu devrais gagner du temps comme ça, tiens moi au courant.

Courage,
Jamal I

"Nicolas" a écrit dans le message de
news:0e7201c3be59$2ce667d0$
Merci Jamal pour ta réponse détaillée.
J'ai omis de préciser que je travaillais sur des tables
SAGE de gestion commerciale attachées en ODBC (DSN créé
sur les fichiers *.gcm et *.mae)

Il est évident que pour des tables locales, le résultat
est instantané, mais qu'en est-il pour des tables
attachées ?


Merci

Nicolas