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

IHM Discussion :

Problème de somme dans un sous-formulaire [AC-2010]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut Problème de somme dans un sous-formulaire
    Bonjour,

    J'ai créé une requête par regroupement pour calculer la somme d'un champ suivant un critère donné. Le nom de cette requête est R_Dettes
    Voiçi le code sql de la requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_Dettes.id_membre, Sum(T_Dettes.cotisation) AS SommeDecotisation
    FROM T_Membres INNER JOIN (T_Saison INNER JOIN T_Dettes ON T_Saison.id_saison = T_Dettes.[Période]) ON T_Membres.ID = T_Dettes.id_membre
    WHERE (((T_Dettes.datecotisation) Is Null))
    GROUP BY T_Dettes.id_membre;

    Pour l'instant, la requête semble fonctionner correctement et me donne bien la somme du champ cotisation par id_membre lorsque T_Dettes.datecotisation est vide.

    J'ai ensuite créé un formulaire dans lequel j'insère les champs de la table T_dettes dans le corps principal.
    Voici le code sql servant de données source à ce formulaire:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Dettes.*, T_Saison.saison
    FROM T_Saison LEFT JOIN T_Dettes ON T_Saison.id_saison = T_Dettes.[Période];
    Dans le pied de ce formulaire, j'ai inséré un champ texte dans lequel j'essaie d'afficher SommeDecotisation calculé par la requête R_Dettes.
    J'ai donc affecté à la propriété source contrôle l'expression "=[R_Dettes]![SommeDecotisation]".
    Lorsque je passe en mode formulaire, le champ texte affiche "#Nom*?" au lieu de la valeur attendue.

    Pourriez-vous me donner une piste d'investigation pour résoude le problème?
    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,

    Pour obtenir la somme des valeurs d'une colonne de ta source, la syntaxe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme([LeNomDeLaColonne])

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Merci pour ton aide.

    Mais ce n'est pas exactement la somme d'un champs que je veux, mais la somme des enregistrements d'un champ par membres de l'ASBL (regroupement), comme indiqué dans la requête ci-dessus.
    Si j'utilise la formule que tu as indiqué (=Somme([LeNomDeLaColonne])), je vais avoir la somme de l'ensemble des enregistrements de ce champ.

    Si j'utilise la formule "=Somme([R_Dettes]![cotisation])", access me retourne la valeur "#Erreur"

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,

    OK. J'avais mal compris ta question.

    Utilise alors la fonction de domaine DSum() avec le 3e paramètre qui fait référence au membre de l'ASBL de l'enregistrement en cours.

    Pour te documenter sur les fonctions de domaine :
    http://starec.developpez.com/tuto/fonctionsdomaines/

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    OK, il y a un léger mieux.

    Lorsque j'utilise l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SomDom("[T_Dettes]![cotisation]";"T_Dettes";"(Formulaires![F_Fiche_Membre]![ID]= [T_Dettes]![id_membre])")
    j'obtiens bien la somme des cotisations pour le membre de l'ASBL en cours d'édition dans le formulaire principal.

    Je modifie alors l'expression pour ne calculer la somme que sur les membres de l'ASBL en cours d'édition ET pour lesquels, le champ datecotisation est vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SomDom("[T_Dettes]![cotisation]";"T_Dettes";"(Formulaires![F_Fiche_Membre]![ID]= [T_Dettes]![id_membre]) Et EstVide([T_Dettes]![datecotisation])")
    Et là,access me retourne "#Erreur" dans le champ calculé.
    Je me dis qu'il y a peut-être une erreur de syntaxe et j'essaie l'expression suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SomDom("[T_Dettes]![cotisation]";"T_Dettes";"Formulaires![F_Fiche_Membre]![ID]= [T_Dettes]![id_membre]" Et "Est Null( [T_Dettes]![datecotisation]")
    Dans ce cas, access me retourne la somme de tout les enregistrements du champ [T_Dettes]![cotisation] et ce de manière inconditionnelle (le critère ne semble plus agir).

    Peut-on avec SomDom établir un critère complexe tel celui que j'essaie d'établir et si oui, ou trouver la bonne syntaxe pour définir ce critère?

    Merci.

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Voilà, j'ai trouvé.
    L'expression à utiliser est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme(VraiFaux(EstNull([datecotisation]);[cotisation];0))
    Somme tout simplement les enregistrements du champ "cotisation" si le champ "datecotisation" est nul.
    Cette opération se faisant directement sur les champ du sous-formulaire, je ne dois plus m'occuper de sélectionner le bon membre de l'ASBL vu que la requête sur laquelle est basée le sous-formulaire n'affiche que les membres de l'ASBL pointés par le formulaire principal.

    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/06/2009, 11h59
  2. [formulaire] Somme dans un sous formulaire
    Par Ancy91 dans le forum IHM
    Réponses: 3
    Dernier message: 18/09/2007, 17h31
  3. Problème de requête dans un sous formulaire
    Par La crevette dans le forum IHM
    Réponses: 3
    Dernier message: 09/07/2007, 17h00
  4. Réponses: 3
    Dernier message: 20/04/2007, 16h37
  5. cacul d'une somme dans un sous formulaire
    Par T'chab dans le forum IHM
    Réponses: 5
    Dernier message: 22/01/2007, 14h17

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