IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Addition de chiffre a partir d'une colonne


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Points : 94
    Points
    94
    Par défaut Addition de chiffre a partir d'une colonne
    Bonjour à tous,

    Voilà mon chti souci...
    J'aimerais additioner toutes les quantité "Qté" de chaque ligne pour une table nommée "Medias".
    Il ya environs 650 lignes et se serai cool si en plus on pouvait faire apparaitre le total dans un label "Me.lblQteTotale.Caption".
    J'ai cru comprendre que sa se faisait avec un recordset type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL = "SELECT SUM(Qté) from Medias"
    Do While rs.EOF
    Me.lblQteTotale.Caption = Me.lblQteTotale.Caption + rs.Fields("Qté")
    rs.MoveNext
    Loop
    Mais sa ne fonctionne pas
    J'ai chercher dans l'aide d'access, sur le forum, sur le net mais les reponse à ma question reste flou ou ne fonctionne pas.

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je vais te proposer une solution toute simple, la fonction de domaine DSum.

    Ce qui devrait te donner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblQteTotale.Caption = DSum("[Qté]","[Média]")
    Avec Qté pour le nom du champ et Média pour le nom de la table.

    Vu le peut d'enregistrement, c'est simple, mais pour de grosses tables il faut mieux passer par du SQL, c'est plus rapide.

    Un coup de pour plus de détail.

    Starec

  3. #3
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Tu vas avoir du mal à afficher ta valeur dans une étiquette (label). Tu dois utiliser un champ texte. Pour l'alimenter, essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.controls("tonchamp").value = dsum("champ1", "table1")
    Dans cet exemple, champ1 est le champ de ta table dont tu veux sommer les valeurs, et table1 est bien sûr le nom de la table. Tu peux aussi spécifier à la suite un critère pour ne sommer que les lignes que tu veux. Consulte l'aide Visual Basic pour avoir toutes les infos.

    Pour que ton champ ne soit pas modifiable, précise dans les propriétés qu'il est verrouillé, ou écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.controls("tonchamp").locked = true

  4. #4
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Autant pour moi, je ne savais pas que l'objet label prenait des expressions comme valeurs...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par spaiku Voir le message
    Autant pour moi, je ne savais pas que l'objet label prenait des expressions comme valeurs...
    Pour changer la propriété Caption d'un Label il faut passer par la programmation, tandis qu'avec une textbox indépendante tu peux saisir directement ta fonction à l'intèrieure, et sans code VBA.

    Starec

  6. #6
    Membre régulier Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Points : 94
    Points
    94
    Par défaut
    Un Grand Merci pour vos réponse.

    J'ai testé et à priori tout fonctionne correctement car Access ne me signal aucune erreur.

    Cependant , le contrôle texte disparait lors de l'ouverture du formulaire, et du coup le chiffre attendue n'est pas visible... ?

    J'ai effacer ce contrôle, j'en est créé un autres sans le renommer. Le contrôle est visible, mais dès lors que je le rattache au code vba en le renommant "txtQteTotale", il disparaît lors de l'ouverture du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("txtQteTotale").Value = DSum("Qté", "Medias")
    Columbo est déjà sur l'affaire, mais si des avis d'expert avisé pouvais éclairer mon pti cerveau, ce serai de bon coeur que je les accepterais.

    Merci.

  7. #7
    Membre régulier Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Points : 94
    Points
    94
    Par défaut


    Concernant le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblQteTotale.Caption = DSum("[Qté]","[Média]")
    Il fonctionne bien car il affiche le total de la colonne "Qte" mais...

    je n'arrive pas à afficher la quantité totale combinée à un/plusieurs filtre(s).

    Voici un exemple des filtres utilisés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    If Me.chkN°CI Then
        SQL = SQL & "And Medias!N°CI like '*" & Me.txtRechN°CI & "*' "
    End If
    If Me.chkBL Then
        SQL = SQL & "And Medias!BL like '*" & Me.txtBL & "*' "
    End If
    If Me.chkRC Then
        SQL = SQL & "And Medias!Réf_Client like '*" & Me.textRC.Value & "*' "
    End If
    If Me.chkRR Then
        SQL = SQL & "And Medias!Réf_RAFI like '*" & Me.textRR.Value & "*' "
    End If
    If Me.chkCC Then
        SQL = SQL & "And Medias!N°_Cde_Client like '*" & Me.textCC.Value & "*' "
    End If
    Si je rajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblQteTotale.Caption = DSum("[Qté]", "[Medias]")
    ici par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.chkRR Then
        SQL = SQL & "And Medias!Réf_RAFI like '*" & Me.textRR.Value & "*' "
        Me.lblQteTotale.Caption = DSum("[Qté]", "[Medias]")
    End If
    Et bien ça m'affiche le totale de la colonne "Qté" de la table "Medias", sans tenir compte du filtre actif.

    Comment remédier à ce soucis ?
    Le SQL ? (la liste s'incrémente tout les jours donc à l'heure actuelle j'ai 650 ligne mais dans 2 mois j'en aurais peut-être 1000, etc.)
    Merci d'avance pour vos réponse

  8. #8
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    C'est normal que ça ne te prenne pas le filtre en compte : la chaîne SQL que tu construis avec tes conditions et le dlookup sont indépendants.

    Il faut que tu intègres ton filtre dans la fonction lookup : le troisième argument de la fonction dlookup est un filtre qui s'écrit comme une clause SQL WHERE, sans le WHERE.

    Bref, au lieu de contruire une chaîne SQL complète, construis une chaîne qui sera le troisième argument que tu passeras à la fonction dlookup ?

    En espérant avoir été clair...

  9. #9
    Membre régulier Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Points : 94
    Points
    94
    Par défaut

    C'est bon,

    sa fonctionne nikel, un grand merci à tout le monde

    Starec pour le DSum
    et,
    spaiku pour le filtrage.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tri à partir d'une colonne auto_increment
    Par jobrousse dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/11/2009, 10h54
  2. affichage d'un arbre a partir d'une colonne
    Par samdou dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/06/2009, 12h26
  3. Réponses: 3
    Dernier message: 08/01/2009, 13h48
  4. Remplir une dorpdowlist a partir d'une colonne d'une table
    Par wissem.ba dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/01/2009, 13h43
  5. Combobox à partir d'une colonne
    Par GTbenj dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/06/2008, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo