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

Access Discussion :

Additionner la valeur d'un champ de plusieurs requêtes [AC-2010]


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut Additionner la valeur d'un champ de plusieurs requêtes
    Bonjour,

    J'ai plusieurs requêtes avec critères qui contiennent un champ contenant une valeur numérique (attention certaine requête peuvent envoyer une valeur NULL et non 0 car aucune ligne !) et j'aimerais en faire la somme.

    J'ai essayer de créer une requête globale contenant toutes les requêtes et en n'utilisant que le champ voulu pour chaque requête et en créant une Expr: [CHAMP1]+... et cela fonctionne si toutes les requêtes ont un résultats, mais malheureusement si une seule requête est vide alors cela ne fonctionne plus.

    Si vous avez une solution, je suis preneur...

    Mais si cela n'est pas possible, comme le résultat (somme des requêtes) doit être simplement afficher dans un champ formulaire, une code VBA pourrait peut-être suffire, mais comment aller chercher en VBA la valeur d'un champ requête de plusieurs requêtes et de les additionner pour ensuite les afficher dans un champ formulaire ?

    Merci d'avance pour votre aide

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Addition de champs avec valeur NULL
    Bonjour,

    j'ai déjà contourné le pb avec une fonction du type vraifaux(resultat isnull;0;resultat) pour remplacer par 0 la valeur Null renvoyée par un champ.
    Simple mais efficace, à essayer...

    Bon courage

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    pourquoi pas tout simplement NZ(Requete1.champ1,0) + NZ(Requete2.champ2,0) ... ?

    il y a aussi Dlookup("nz([champ1],0)","requete1") + Dlookup("nz([champ2],0)","requete2") ...

    Les requêtes renvoient-elles qu'un seul enregistrement ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Addition de requètes
    Bonsoir Crachover,

    J'utilise en fait la fonction vraifaux dans une requète classique mais je fais en 3 temps:
    soit une table année1 avec 2 champs : frais et reduc
    cette est vide pour l'exemple donc une requète qui somme les champs (totfrais1 et totreduc1) est vide aussi !
    donc si on s'amuse à additionner ces champs aux champs des autres tables (année2, année3, etc..) on retrouve un résultat vide;
    maintenant je crée une autre requete où je teste le contenu de cette requette "somme" et remplace Null par 0 comme suit :
    champ1 :
    totfrais:VraiFaux(EstNull([totaux_année1]![totfrais1])=Vrai;0;[totaux_année1]![totfrais1])
    champ2 :
    idem avec reduc à la place de frais

    le resultat de la requete "verif_année1" donne une ligne avec 0 pour les 2 champs !!
    on peut donc additionner une série de requete "verif" sans pb dans une requète globale

    Je sais c'est un peu lourd, pas très élégant mais c'est super efficace et sans code...

    Ca peut aider...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    Je n'y arrive pas, voici un exemple en pièce jointe... j'aimerais que la requête [REQUETE_SOMME] affiche un résultat, même si c'est 0/NULL...

    Dans cette exemple, cela devrait afficher la somme pour ERIC, mais cela ne fonctionne pas car je n'ai pas de ERIC dans la table [FACTURE2]

    Pour que la requête [REQUETE_SOMME] affiche un résultat, il suffit d'encoder au nom de ERIC une ligne dans la table [FACTURE2], mais...

    Ps : Cela devrait aussi fonctionner si il y a avait d'autres tables FACTURE3, 4, 5...

    Merci d'avance pour votre aide

    exemple.rar

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,

    deux requêtes dans une autre requête et sans jointure entre les 2 est une aberration et c'est la raison pour laquelle cela ne fonctionne pas: il faut une jointure externe pour le cas où une des requêtes n'a pas d'enregistrement concordant.
    Sachant que cela peut être le cas sur l'une ou l'autre des tables factures, il vaut mieux s'appuyer sur la table PERSONNE pour construire la requête, car oui, il n' y a besoin que d'une seule requête:

    Nom : _requete_somme.JPG
Affichages : 1153
Taille : 54,8 Ko

    Note bien que j'ai créé une Opération Expression dans chaque colonne mais que la Somme est faite dans l'expression:
    totfrais1: Nz(Somme([FACTURE1].[MONTANT]);0) et pas besoin de se casser la tête avec Vraifaux, puisqu'il s'agit de se prévenir du Nul, autant utiliser la bonne fonction avec Nz().

    Dans une requête on ne peut pas utiliser une colonne contenant un calcul pour l'utiliser ensuite dans un autre calcul (on ne peut pas faire totfrais1+totfrais2), à moins d'enregistrer la requête et de l'utiliser dans une autre ou encore faire une sous requête).
    Il faut recopier le calcul de chaque colonne, c'est ce que j'ai fait pour le champ Total.
    Ci-joint la base corrigée:
    exemple_V1.rar

    P.S.: nommer le champ PRENOM en ACTIF dans les 2 sous-requêtes, alors que le champ existe par ailleurs dans la table PERSONNE : j'espère que c'était une blague de ta part pour me compliquer la tâche ? D'autant plus quand ACTIF est coché c'est que la personne est inactive !?!? (())
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    480
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 480
    Points : 164
    Points
    164
    Par défaut
    Merci beaucoup pour ton aide et tes lumières

    Ps : ce n'était pas une blague, juste un fichier test fait en vitesse...

    Bonne soirée et encore merci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/11/2011, 23h42
  2. Réponses: 1
    Dernier message: 17/02/2011, 11h08
  3. La meme valeur dans un champ sur plusieurs lignes
    Par JeanduB dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2008, 14h52
  4. additionner les valeurs d'un champs
    Par gussoner dans le forum VBA Access
    Réponses: 12
    Dernier message: 15/09/2007, 15h32
  5. diff valeurs pr un champs, result plusieurs cols
    Par sampq dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/12/2005, 05h46

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