Problème reqêtes

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. désolai blux pour le dérangement mais j'ai pas de solution jusqu'à maintenant
      1. je suis en VBA
        1. Modérateur
          donc, tu peux utiliser dlookup si tu es sous vba access, vba excel ne connait pas cette fonction.
      2. 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
        1. Modérateur
          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...
      3. 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
        1. Modérateur
          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...
      4. 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
        1. Modérateur
          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...
      5. Modérateur
        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...
        1. 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)"
          1. 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
            1. 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.
              1. Modérateur
                et au niveau requête, ça coince où ?