pb comptage dans base de donnée access [VB] - Programmation
Marsh Posté le 01-04-2002 à 21:49:18
UP
Marsh Posté le 01-04-2002 à 21:57:27
ca marche pas avec ca il me retourne tjs 1
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]
Marsh Posté le 01-04-2002 à 22:05:33
merci je v tester tou ca
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
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
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
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.
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
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
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
Marsh Posté le 02-04-2002 à 00:25:38
merci je v aller faire un tour ds mon msdn
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é
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
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+
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" )
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]
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 !!
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
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..
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]
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
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
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
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 :
|
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 -
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
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.
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
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é!!
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
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 ...