Compter les enregistrements d'une requête

Résolu
Signaler
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
bonjour à tous,
j'aimerai savoir s'il était possible de compter le nombre d'enregistrement d'une requête.
j'ai essayé et ça ne marche pas
voilà ce que j'ai écris
rc_visu est mon recordset
nb_enr=rc_visu.recordcount
nb_enr est toujours égal à -1

merci d'avance
coordialement

3 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir,
Je te propse ceci:

Function NbRecords(rst as Recordset) as Long
NbRecords=0
With rst 

  'il faut remplir le recordset.
  'mais si la table est vide cela provoque unr erreur
  'il faut la contourner avec On Error Resume Next 
 
On Error Resume Next
  .MoveLast
  .MoveFirst
  
  ' Tester si la table est vide
   If .Bof And .Eof Then Exit Function
   NbRecords=.RecordCount
 End With
End Function

MsgBox NbRecords(MonRecorSet)

J' espère que c' est ça
Bon courage
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Es-tu sûr que la requête de ton recordset est correcte ?
Tu utilise quelle techonologie ? ADO ? DAO ? Autre ?
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
La fonction recordcount = -1 est connue de Microsoft. C'est un bug répertorié. Je crois ne pas me tromper en disant que le problème est le même en ADO et DAO. Pour compter, il faut boucler dans le recodset :

Function NbRecords(rst as Recordset) as Long
Dim i as Long

i = 0
rst.MoveFirst
Do until rst.EOF
   i = i+1
   rst.MoveNext
Loop

NbRecords = i
End Function

Yann