[VB] pb comptage dans base de donnée access

pb comptage dans base de donnée access [VB] - Programmation

Marsh Posté le 01-04-2002 à 21:22:11    

Salut a tous  
je suis en train de faire une sorte de carnet d'adresse pour un de mes programme et j'utilise un fichier base de donnée access
et il me faudrait savoir combien j'ai d'enregistrement dans cette base il fo utiliser quelle fonction  
voici l'initialisation de ma db dans vb
 
 
Dim base As Database
Dim contacts As Recordset
Dim db As String
 
db = App.Path + "\contacts.mdb"
Set base = DBEngine.OpenDatabase(db)
Set contacts = base.OpenRecordset("contacts", dbOpenDynaset)
 
Dim nb_contacts As Integer
nb_contacts = contacts.??????  
contacts.MoveFirst
 
Dim i As Integer
For i = 1 To nb_contacts
.
.
.
.
.

 

[jfdsdjhfuetppo]--Message édité par MoRp][eUs--[/jfdsdjhfuetppo]


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 01-04-2002 à 21:22:11   

Reply

Marsh Posté le 01-04-2002 à 21:49:18    

UP  
 
 :hello:


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 01-04-2002 à 21:56:24    

nb_contacts=contact.RecordCount

Reply

Marsh Posté le 01-04-2002 à 21:57:27    

ca marche pas avec ca il me retourne tjs 1


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 01-04-2002 à 22:03:35    

Yes tu a raison en fait c pour savoir si tu as ou nom des enregistrement
execute une requete du type  
Select count(*) From contact et defoule la dessus
sinon si tu aimes pas les requetes tu te tape un
While Not (contact.EOF)
et tu fais peter un compteur
je crois pas qu'il ya ais quelque chose pour savoir le nombre d'enregistrement d'une vue

 

[jfdsdjhfuetppo]--Message édité par Rob Roy--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 01-04-2002 à 22:05:33    

merci je v tester tou ca


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 01-04-2002 à 22:09:18    

pour ton trip sur l'explorateur de fichier
tu as la CommonDialog un objet que tu fous sous ta frame  
et que tu utilise
ca te donne un explorateur de fichier classe comme tout ceux que tes logiciels ont

Reply

Marsh Posté le 01-04-2002 à 22:11:40    

pour l'explorateur c'est bon c pas pour lister des fichier  
c pour recevoir les info que je sort de ma base de donnée et ca marche kand je met le compteur manuellement a plus que 1


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 01-04-2002 à 22:20:14    

Rob Roy a écrit a écrit :

Yes tu a raison en fait c pour savoir si tu as ou nom des enregistrement
execute une requete du type  
Select count(*) From contact et defoule la dessus
sinon si tu aimes pas les requetes tu te tape un
While Not (contact.EOF)
et tu fais peter un compteur
je crois pas qu'il ya ais quelque chose pour savoir le nombre d'enregistrement d'une vue  
 
 




 
hehe tu m'a donnée une bonne idé avec ton eof qui marche en plus
 
Do While Not contacts.EOF
...
Loop


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 01-04-2002 à 22:48:25    

ouais c'est le principe des vues en fait
tu peut quasiment tout faire en parcourant les vues si le SQL te gonfle.

Reply

Marsh Posté le 01-04-2002 à 22:48:25   

Reply

Marsh Posté le 01-04-2002 à 23:41:47    

c'est pas que le sql me gonfle mais en vb c moins clair k'en php le sql


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 00:19:59    

en koi c moins clair ?

Reply

Marsh Posté le 02-04-2002 à 00:21:58    

c k'en php je connais les commande en vb je ne fait pas de db normalement alors je vois pas comment les passer mais si qqn m'explique je préf presque utiliser des requete sql car avec ca je peu traiter les donnée comme j'ai envi


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 00:24:23    

ben tu crées une connection
dim cnn as New ADODB.Connection
cnn.open tachainedeconnexionfautmaterl'aidejesaispluspouraccess
 
pour les request select :
dim rs as new ADODB.RecordSet
rs.open requeteSQL,cnn
 
pour les autres
 
cnn.execute requeteSQL

Reply

Marsh Posté le 02-04-2002 à 00:25:38    

merci je v aller faire un tour ds mon msdn


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 00:33:00    

vala ... je suis pas du tout partisan de vb, mais l'acces aux données est pas trop compliqué

Reply

Marsh Posté le 02-04-2002 à 00:36:06    

bin moi non plus je suis pas partisan de vb mais la c pour un tout petit prog pour moi et je peu pas le faire en php car une page oueb ca irait pas bien
 
de plus en prog normalement moi je suis que sur le net autrement je laisse ca au pro car mon domaine c plutot le rezo


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 09:17:08    

Si j'ai bonne mémoire, le recordset.RecordCount n'est initialisé avec le nombre d'enregistrements qu' après avoir fait un recordset.movelast
 
A essayer
 
a+

Reply

Marsh Posté le 02-04-2002 à 09:20:35    

MoRp][eUs a écrit a écrit :

Salut a tous  
je suis en train de faire une sorte de carnet d'adresse pour un de mes programme et j'utilise un fichier base de donnée access
et il me faudrait savoir combien j'ai d'enregistrement dans cette base il fo utiliser quelle fonction  
voici l'initialisation de ma db dans vb
 
 
Dim base As Database
Dim contacts As Recordset
Dim db As String
 
db = App.Path + "\contacts.mdb"
Set base = DBEngine.OpenDatabase(db)
Set contacts = base.OpenRecordset("contacts", dbOpenDynaset)
 
Dim nb_contacts As Integer
nb_contacts = contacts.??????  
contacts.MoveFirst
 
Dim i As Integer
For i = 1 To nb_contacts
.
.
.
.
.  
 
 




 
Je crois qu'avec CONTACT.RECORDCOUNT...ca devrait
 
ex :
 
Total = "Il y a " & DataJeux.Recordset.RecordCount & " jeux dans la base"
mess = MsgBox(Total, vbInformation, "Total des jeux" )


---------------
Mes mémoires de Retrogamer - Le Retroblog de Turk182! en livres - Suivez le blog sur Facebook
Reply

Marsh Posté le 02-04-2002 à 10:50:49    

pour info je vous met la définition de l'aide au sujet recordcount donc je voit tres clairement pourquoi il me retourne tjs 1 avec mon code
 
Renvoie le nombre d'enregistrements auxquels vous avez eu accès dans un objet Recordset ou le nombre total d'enregistrements dans un objet Recordset de type Table ou dans un objet TableDef.
 
par contre si qqn a un exemple concret pour passer une requete sql genre celle-ci sur ma base je suis preneur
 
"select * from contacts where ...."

 

[jfdsdjhfuetppo]--Message édité par MoRp][eUs--[/jfdsdjhfuetppo]


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 11:13:00    

MoRp][eUs a écrit a écrit :

pour info je vous met la définition de l'aide au sujet recordcount donc je voit tres clairement pourquoi il me retourne tjs 1 avec mon code
 
Renvoie le nombre d'enregistrements auxquels vous avez eu accès dans un objet Recordset ou le nombre total d'enregistrements dans un objet Recordset de type Table ou dans un objet TableDef.
 
par contre si qqn a un exemple concret pour passer une requete sql genre celle-ci sur ma base je suis preneur
 
"select * from contacts where ...."  
 
 




 
Avant le RecordCount fait un MoveFirst suivie d'un MoveLast pour remplir le recordSet...apres ca marche !!


---------------
Mes mémoires de Retrogamer - Le Retroblog de Turk182! en livres - Suivez le blog sur Facebook
Reply

Marsh Posté le 02-04-2002 à 11:27:13    

turk182 a écrit a écrit :

 
 
Avant le RecordCount fait un MoveFirst suivie d'un MoveLast pour remplir le recordSet...apres ca marche !!  




 
merci pour ton conseil mais avec le eof dans un while ca marche et c surement plus rapide


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 11:37:09    

MoRp][eUs a écrit a écrit :

 
 
merci pour ton conseil mais avec le eof dans un while ca marche et c surement plus rapide  




 
Justement je ne pense pas que ce soit plus rapide car a chaque fois il fait une verificaction de fin de base....alors que les commande movefirst movelast sont directe... voila ma formule :
 
DataJeux.Recordset.MoveLast
 
     Total = "Il y a " & DataJeux.Recordset.RecordCount & " jeux dans la base"
 
mess = MsgBox(Total, vbInformation, "Total des jeux" )
 
DataJeux.Recordset.MoveFirst
 
que kelkun me corrige si je me trompe..


---------------
Mes mémoires de Retrogamer - Le Retroblog de Turk182! en livres - Suivez le blog sur Facebook
Reply

Marsh Posté le 02-04-2002 à 11:49:21    

MoRp][eUs a écrit a écrit :

pour info je vous met la définition de l'aide au sujet recordcount donc je voit tres clairement pourquoi il me retourne tjs 1 avec mon code
 
Renvoie le nombre d'enregistrements auxquels vous avez eu accès dans un objet Recordset ou le nombre total d'enregistrements dans un objet Recordset de type Table ou dans un objet TableDef.
 
par contre si qqn a un exemple concret pour passer une requete sql genre celle-ci sur ma base je suis preneur
 
"select * from contacts where ...."  
 
 




 
comme je te l'ai deja dit :
 
dim cnn as new ADODB.Connection
dim rs as new ADODB.RecordSet
ouvrir la connexion avec la bonne chaine de connexion
rs.open "select * from contacts where...",cnn[,3,3,1]

Reply

Marsh Posté le 02-04-2002 à 12:09:19    

turk182 a écrit a écrit :

 
 
Justement je ne pense pas que ce soit plus rapide car a chaque fois il fait une verificaction de fin de base....alors que les commande movefirst movelast sont directe... voila ma formule :
 
DataJeux.Recordset.MoveLast
 
     Total = "Il y a " & DataJeux.Recordset.RecordCount & " jeux dans la base"
 
mess = MsgBox(Total, vbInformation, "Total des jeux" )
 
DataJeux.Recordset.MoveFirst
 
que kelkun me corrige si je me trompe..  




 
coté rapidité comme je doit de toute facon parcourir toute la bd afin d'afficher les entré ds un listview autant parcourir une fois et le comptage l'oublier bon c mon avis mais je v voir du coté sql car je connais pas mal le lanquage sql


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 12:19:35    

MoRp][eUs a écrit a écrit :

 
 
coté rapidité comme je doit de toute facon parcourir toute la bd afin d'afficher les entré ds un listview autant parcourir une fois et le comptage l'oublier bon c mon avis mais je v voir du coté sql car je connais pas mal le lanquage sql  




Moi non plus le recordCount il marche pô mais peut être avec le movefirst, movelast ça pourrait le faire
Mais bon le count(*) fait ça très bien et puis comme ça tu fais du vrai SQL...
 
Bonhomme

Reply

Marsh Posté le 02-04-2002 à 12:23:26    

Bonhomme a écrit a écrit :

 
Moi non plus le recordCount il marche pô mais peut être avec le movefirst, movelast ça pourrait le faire
Mais bon le count(*) fait ça très bien et puis comme ça tu fais du vrai SQL...
 
Bonhomme  




 
ta quoi comme code pour faire ton count(*) car je suis en train de chercher mais aujourd hui g pas trop le temps donc si tu pouvais m'aider ca m'avancerait
merci


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 12:38:09    

Select count(*) FROM TATABLE                                 FIN

Reply

Marsh Posté le 02-04-2002 à 13:22:50    

Salut,
 
Avant de compter tes enregs, tu dois aller au dernier enregistrement. Il faut aussi vérifier que tu as des enreg :
 

Code :
  1. dim rs as recordset
  2. dim cpt as integer
  3. set rs = db.openrecordset ....
  4. if not rs.EOF then
  5.     rs.movelast
  6.     cpt = rs.recordcount
  7. else
  8.     cpt = 0
  9. end if


 
et voilà !
La deuxième méthode est de compter directement dans la requête (expliqué dans les posts précédents), c'est à toi de voir.
 
@+
- Pentiore -


---------------
Une Porsche sinon rien.
Reply

Marsh Posté le 02-04-2002 à 15:03:31    

merci a tous
j'ai troubé un bopn script un viewer de db sur le net je pense ke je v trouver qq id pour amélioré l'acces a ma base de donnée car cette dernière pourra devenir bien grande à la longe donc il faudra que l'acces soit le plus rapide possible


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 02-04-2002 à 19:34:51    

RecordCount ne marche que si le recordset est de type [b]dbOpenTable[/B] (le recordset contient tous les enregistrements de la table)  sinon pour les autres types il te renvoie qu'un seul enregistrement à la fois.

Reply

Marsh Posté le 03-04-2002 à 00:08:23    

je l'ai testé en dbopentable mais il me semble quîl me retournais aussi 1
bon c pas le pb principal pour le moment de mon prog j'aimerais trier par ordre alphabétique par nom et prénom mais ca marche pas dans mon listview je sens ke je v passer tout par le sql car au moins ca marche en tout k kand je fait du php


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le 03-04-2002 à 10:50:39    

MoRp][eUs a écrit a écrit :

je l'ai testé en dbopentable mais il me semble quîl me retournais aussi 1
bon c pas le pb principal pour le moment de mon prog j'aimerais trier par ordre alphabétique par nom et prénom mais ca marche pas dans mon listview je sens ke je v passer tout par le sql car au moins ca marche en tout k kand je fait du php  




Pour le tri c'est pas dur
A la fin de la requête dans laquelle tu remontes les infos tu rajoutes un truc du genre :"ORDER BY nom,prenom
 
Et hop voilà c'est classé!!

Reply

Marsh Posté le 03-04-2002 à 10:53:34    

Bonhomme a écrit a écrit :

 
Pour le tri c'est pas dur
A la fin de la requête dans laquelle tu remontes les infos tu rajoutes un truc du genre :"ORDER BY nom,prenom
 
Et hop voilà c'est classé!!  




 
ouai a condition d'etre en sql pour le moment je suis tjs basé sur le système de db du début du post
 
le sql je le connais c pas un pb mon seul pb c'est que j'ai aps encore u le temps d'impémenter les requete sql uniquement


---------------
L'Internet serait une toile comme les autres si elle n'avait ses millions d'araignées ...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed