Compter le nombre enregistrement recordset
Résolu
artis31
Messages postés
49
Statut
Membre
-
blux Messages postés 27823 Statut Modérateur -
blux Messages postés 27823 Statut Modérateur -
Bonjour à la communauté,
Je cherche à connaitre le nombre d'enregistrements retournés dans un recordset par une requête sql.
Voici les deux codes essayés :
Rsql = "SELECT TOP 10 * FROM " & TableBDD & ";"
(Dans ma requête j'ai volontairement limité le nombre d'enregistrements à 10 pour le test.)
Méthode 1:
NbRecord = Rst.RecordCount
MsgBox ("Nbre d'enregistrements = " & NbRecord)
Méthode 2:
NbreLignes = 0
Do While Not Rst.EOF
NbreLignes = NbreLignes + 1
Rst.MoveNext
Loop
MsgBox ("Nbre d'enregistrements = " & NbreLignes)
Rst.MoveFirst
La méthode 1 me renvoie la valeur -1
La méthode 2 me renvoie bien la valeur 10, mais est très longue... quelques secondes avec 10 enregistrements j'ose pas imaginer avec 50.000...
Quelle solution pour compter rapidement ce nombre d'enregistrement ?
Je cherche à connaitre le nombre d'enregistrements retournés dans un recordset par une requête sql.
Voici les deux codes essayés :
Rsql = "SELECT TOP 10 * FROM " & TableBDD & ";"
(Dans ma requête j'ai volontairement limité le nombre d'enregistrements à 10 pour le test.)
Méthode 1:
NbRecord = Rst.RecordCount
MsgBox ("Nbre d'enregistrements = " & NbRecord)
Méthode 2:
NbreLignes = 0
Do While Not Rst.EOF
NbreLignes = NbreLignes + 1
Rst.MoveNext
Loop
MsgBox ("Nbre d'enregistrements = " & NbreLignes)
Rst.MoveFirst
La méthode 1 me renvoie la valeur -1
La méthode 2 me renvoie bien la valeur 10, mais est très longue... quelques secondes avec 10 enregistrements j'ose pas imaginer avec 50.000...
Quelle solution pour compter rapidement ce nombre d'enregistrement ?
A voir également:
- Compter le nombre enregistrement recordset
- Nombre de jours entre deux dates excel - Guide
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Enregistrement - Guide
- Erreur lors de l'enregistrement du contact - Forum Xiaomi
3 réponses
Salut,
il faut utiliser la méthode 1, mais avec une astuce, faire un .movelast avant de demander le .recordcount.
il faut utiliser la méthode 1, mais avec une astuce, faire un .movelast avant de demander le .recordcount.
Bonjour et merci pour ta réponse, j'ai testé mais toujours le même résultat : .RecordCount = -1
Voici le bout de code modifié pour la méthode 1 :
If Not Rst.EOF Then
Rst.MoveLast
NbRecord = Rst.RecordCount
MsgBox ("Nbre d'enregistrements = " & NbRecord)
Rst.MoveFirst
Else
MsgBox ("Aucun enregistrement trouvé.")
End If
Nota : J'ai bien 10 enregistrements qui s'affichent lorsque je fais ".CopyFromRecordset Rst" ce n'est donc pas un problème de requête ou de données.
Voici le bout de code modifié pour la méthode 1 :
If Not Rst.EOF Then
Rst.MoveLast
NbRecord = Rst.RecordCount
MsgBox ("Nbre d'enregistrements = " & NbRecord)
Rst.MoveFirst
Else
MsgBox ("Aucun enregistrement trouvé.")
End If
Nota : J'ai bien 10 enregistrements qui s'affichent lorsque je fais ".CopyFromRecordset Rst" ce n'est donc pas un problème de requête ou de données.
Bonsoir,
J'ai fais exactement ce que tu m'as demandé. Tester la présence ou non d'enregistrements ne change rien à l'affaire, juste à rassurer qu'il y a bien des enregistrements. Et ajouter rst.movefirst ne fonctionne pas.
J'ai trouvé la solution, il faut ajouter dans mon code la ligne Rst.CursorLocation = adUseClient
Merci pour ton aide qui m'a mis sur la voie de la solution :o)
Thierry
J'ai fais exactement ce que tu m'as demandé. Tester la présence ou non d'enregistrements ne change rien à l'affaire, juste à rassurer qu'il y a bien des enregistrements. Et ajouter rst.movefirst ne fonctionne pas.
J'ai trouvé la solution, il faut ajouter dans mon code la ligne Rst.CursorLocation = adUseClient
Merci pour ton aide qui m'a mis sur la voie de la solution :o)
Thierry
Et ajouter rst.movefirst ne fonctionne pas.
Je pourrais voir ce que tu as mis, comme code, car je suis surpris qu'un movefirst ne marche pas.
Et le cursorlocation demande à access de gérer un curseur sql côté client plutôt que côté serveur...
Tes données sont où : sur un serveur, sur ton poste, tables liées, odbc ?
Je pourrais voir ce que tu as mis, comme code, car je suis surpris qu'un movefirst ne marche pas.
Et le cursorlocation demande à access de gérer un curseur sql côté client plutôt que côté serveur...
Tes données sont où : sur un serveur, sur ton poste, tables liées, odbc ?