Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2755 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB6] Nbre d'enregistrements dans un Recordset

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB6] Nbre d'enregistrements dans un Recordset

n°957565
harelde
Posté le 20-01-2005 à 16:11:11  profilanswer
 

Salut à tous.
 
Je suis en train d'halluciner  :pt1cable:  
J'interroge une base Access avec une requète SQL.  
Je colle le résultat du Select dans un Recordset.
Et quand je demande le nbre d'enregistrements, j'obtient des trucs à se taper la tête contre les murs :
 
rstMonRecordSet.MaxRecords = 0
rstMonRecordSet.RecordCount = -1
 
Je me dis, y a un soucis : ma requete ramene une sélection vide.
Et bien non !
Je peux écrire les données du Recordset dans un .txt, et il y a bien des données dedans !
 
Vous avez une idée ?
Pourquoi ce pbe ?
Comment récupérer le nbre d'enregistrements ?
 
Merci de votre aide
 
Laurent

mood
Publicité
Posté le 20-01-2005 à 16:11:11  profilanswer
 

n°957587
ixemul
Nan mais sans blague ! ⚡
Posté le 20-01-2005 à 16:27:51  profilanswer
 

bienvenu dans le monde ADO...
 
avec Access, ton pb, est tt a fait normal, comme avec toute autre base de donnée en mode "client ADO".
 
Avec access, aucun moyen de passer ta connection en mode "server" donc, pour recuperer le nombre d'enreg, tu fais un "select count(...)" AVANT ta requete
 

n°957626
harelde
Posté le 20-01-2005 à 17:00:33  profilanswer
 

Génial !
 
:-(((
 
merci de ton aide.

n°960748
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-01-2005 à 14:45:13  profilanswer
 

Autre méthode que le COUNT (parceque c'est pas terrible) :
 

Code :
  1. Dim cpt as Integer
  2. cpt = 0
  3. ' On teste que la requête n'est pas vide
  4. If Not (rs.BOF and rs.EOF) Then
  5.    ' On retourne la première ligne du rs.
  6.    rs.MoveFirst
  7.    ' On parcours le rs d'un bout à l'autre
  8.    Do While Not rs.EOF
  9.       ' Hop, on a trouvé une ligne
  10.       cpt = cpt + 1
  11.    Loop
  12.    ' On retourne à la première ligne
  13.    rs.MoveFirst
  14. End


 
Ce système est mieu qu'un "count()", parceque :
1) Ca t'évite de faire une requête supplémentaire (ce qu'il y a de plus coûteux)
2) Da toute façon, ton RS tu vas devoir le parcourir, donc dans tous les cas, il faudra bien le charger en mémoire à un moment où à un autre.
 
Ce système est mieu, uniquement si le nombre de lignes est limité, et leur taille limitée.
Evidement, si t'as des champs de type "text" et un grand nombre de lignes ( > 100 000) ce sytème sera peut-être plus lent qu'un count(), mais en règle générale, il est mieu.

n°960859
ixemul
Nan mais sans blague ! ⚡
Posté le 24-01-2005 à 16:19:46  profilanswer
 

Arjuna a écrit :

Autre méthode que le COUNT (parceque c'est pas terrible) :
 

Code :
  1. Dim cpt as Integer
  2. cpt = 0
  3. ' On teste que la requête n'est pas vide
  4. If Not (rs.BOF and rs.EOF) Then
  5.    ' On retourne la première ligne du rs.
  6.    rs.MoveFirst
  7.    ' On parcours le rs d'un bout à l'autre
  8.    Do While Not rs.EOF
  9.       ' Hop, on a trouvé une ligne
  10.       cpt = cpt + 1
  11.    Loop
  12.    ' On retourne à la première ligne
  13.    rs.MoveFirst
  14. End


 
Ce système est mieu qu'un "count()", parceque :
1) Ca t'évite de faire une requête supplémentaire (ce qu'il y a de plus coûteux)
2) Da toute façon, ton RS tu vas devoir le parcourir, donc dans tous les cas, il faudra bien le charger en mémoire à un moment où à un autre.
 
Ce système est mieu, uniquement si le nombre de lignes est limité, et leur taille limitée.
Evidement, si t'as des champs de type "text" et un grand nombre de lignes ( > 100 000) ce sytème sera peut-être plus lent qu'un count(), mais en règle générale, il est mieu.


 
Et il faut egalement préciser que cela ne fonctionne pas si la connec ADO est en forward only ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB6] Nbre d'enregistrements dans un Recordset

 

Sujets relatifs
[SQL SERVER + C++Builder] Nbre d'instances et instances valides[VB6] : Export sous excel
Changer de page de démarrage sous VB6...VB6: ScrollBar et TextBox ne coincident pas!
comment utiliser les enregistrements provenant d'un procédure stockée[VB6 - VBA] Format de date
[VB6] Recordset et ListBoxUtiliser les erreures avec vb6 entreprise
[VB6] Requète SQL (LIKE) 
Plus de sujets relatifs à : [VB6] Nbre d'enregistrements dans un Recordset


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR