Problème reqêtes

Fermé
Mbarek - 12 oct. 2011 à 16:37
 mbarek - 25 oct. 2011 à 16:58
Bonjour,
merci a vous
si qlq un peurait m'aider mon problème est le suivant:
à partir d'une table je dois calculer le nombre de fois que une enregistrement se répét ( par exemple un Nom ) et les avoir dans des zonne de texte
exp: Nom1 nbr = 20
Nom2 nbr = 15
Nom3 nbr =7
Nom4 nbr = 35
mon code est le suivant =

Set cnnADO = New ADODB.Connection
cnnADO.Provider = "Microsoft.jet.OLEDB.4.0"
cnnADO.ConnectionString = App.Path & "\bd1.mdb"
cnnADO.Open
Set rstadd = New ADODB.Recordset
rstadd.CursorType = adOpenKeyset
rstadd.LockType = adLockOptimistic
rstadd.Open "RGL", cnnADO, , , adCmdTable
Dim entree As String
Dim Signet
Dim b As Long
entree = " select count(*) as Nom from RGL where PROVINCE = '" & Replace(Grid1.TextMatrix((b), 1), "'", "''") & "'"
Set rstadd = cnnADO.Execute(entree)
If Not rstadd.EOF Then
Do Until rstadd.EOF
For b = 1 To 10
Controls("text" & (b)).Text = rstadd("Nom")(b)
rstadd.MoveNext
Next b
Loop
Else
MsgBox " vous devez commencez par le remplissage du Formulaire", vbOKOnly + vbCritical, "Erreur"
Grid1.Sort = flexSortStringAscending
End If



11 réponses

blux Messages postés 26365 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 octobre 2024 3 303
13 oct. 2011 à 11:36
Salut,

et quel est le problème ?
0
le problème c'est que:
dans le chargement de la feuille j'ai un msflexgrid contenant une liste des Noms (82 Noms ) et je veux avoir le nombre de fois que chaqu'un se répète dans ma base de donnée, et comme j'ai une série très grande de Nom presque 82 Nom l'utilisateur ne doit pas cliquer 82 fois pour chaque Nom j'ai essayé de créer des zones de texte ( 82 ) et d'un seul clique les remplir par le nombre de fois qu un nom se répète et chaqe zone lui corespend un Nom.
0
blux Messages postés 26365 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 octobre 2024 3 303
13 oct. 2011 à 16:44
et au niveau requête, ça coince où ?
0
non pas au niveau de la requête mais c'est au niveau d'affichage des résultats dans les différentes zone de texte.
pour la création de la première boucle pour le remplissage de toute les zone de texte ça marche mais ils sont toute rempli par le même chiffre ce qui veut dire que c'est aussi au niveau de recerdset (rstadd) qu'est le problème
et merci bien
0
le message d'erreur est le suivant:
"nombre d'argument incorrecte ou affectation de propriété incorrecte "
et c'est au niveau d'affichage de résultat:
"Controls("text" & i).Text = rstadd("Nom")(a)"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 26365 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 octobre 2024 3 303
13 oct. 2011 à 17:38
C'est rstadd("Nom")(a)" ou rstadd("Nom")(b) ?

Quoi qu'il en soit, un recordset ne renvoie que le nom de la colonne qu'on lui indique (ou son numéro d'ordre), mais en aucun cas, un tuple comme tu sembles le demander avec les deux membres entre () de rstadd...
0
merci bien
oui j'ai renversé le a avec le b mais dans les deux ca ca ne marche pas
le recordset ne doit pas envoyer le nom d'une colone mais doit faire une boucle de somme de chiffre coréspondant chaque fois un nom
0
blux Messages postés 26365 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 octobre 2024 3 303
17 oct. 2011 à 13:52
Pardon, quand je disais le nom d'une colonne, je parlais de la valeur de la colonne dont la ligne est celle de l'enregistrement du recordset courant.

Dans ton code, je ne comprends pas pourquoi tu fais une boucle de 1 à 10 pour chaque ligne renvoyée par le recordset...
0
dans la table il y a 10 Nom différents (Nom1, Nom2....., Nom10) chaque nom se répète un nombre aléatoire de fois.
l'objectif et d'avoir a la sortie un tableau de deux colonnes
une contient les Nom et l'autre le nombre de fois qu'il se répète
0
blux Messages postés 26365 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 octobre 2024 3 303
17 oct. 2011 à 16:21
Non !
Ta requête ne fait que compter le nombre d'enregistrements qui satisfont au critère PROVINCE = ...
Lorsque tu l'exécutes, tu ne dois avoir qu'une seule ligne de résultat, sinon il faut faire un GROUP BY PROVINCE, et là tu auras autant de lignes que de provinces.
Je te conseillerais plutôt d'utiliser la fonctiond dcount(), si tu y as accès...
0
effectivement je n'est comme résultat qu'une seule ligne,
pour la fonction dcount je l'ai jamais utilisé est ce que vous pouvez me dire la syntaxe
mais aussi mon problème et aussi l'affichage des résultats après une sommation
Merci bien
0
blux Messages postés 26365 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 octobre 2024 3 303
17 oct. 2011 à 16:42
Si tu es en VBA sous access, c'est dans l'aide, sinon si tu es en VB, je crois que la fonction n'existe pas...
0
je suis en VBA
0
blux Messages postés 26365 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 octobre 2024 3 303
18 oct. 2011 à 10:48
donc, tu peux utiliser dlookup si tu es sous vba access, vba excel ne connait pas cette fonction.
0
désolai blux pour le dérangement mais j'ai pas de solution jusqu'à maintenant
0
R bonjour
ce que je cherche c'est c de répondre à la question suivante : combien de fois un enregistrement se répète dans un champs et comme j'ai presque 80 enregistrement je veux regrouper le tout dans un clique et recevoir un tableau de deux colonne une pour les nom et une autre pour le nombre de fois que ces noms se répète
0