Probléme sur une requéte

Résolu
Bonjour,

J'ai un PB avec une requête sous ACCESS 2016.
En bas de la pièce jointe, le résultat.
En 1, j'ai deux mois donc 2 lignes. C'est bon.

En 2, je devrais avoir deux mois, donc 2 lignes,
mais je n'ai que le mois 1 qui sort.
Ma liaison entre R_EnrBASE et 3_HorsBudget est bonne.
Par contre, je n'ai pas eu de dépense en Hors budget sur les 2 mois.

Ma question:
Y'a t'il une manipulation que je puisse faire afin que même avec un Hors Budget à 0,
je puisse avoir mes 2 mois en résultat.

Merci d'avance pour vos réponses.
Cordialement

6 réponses

  1. Contributeur
    bonjour, je pense que tu peux y arriver en cliquant avec le bouton de droite sur la relation entre les deux tables (la ligne dans l'image 2), éditer les propriétés de la relation, puis éditer le type de jointure, et ensuite préciser que tu veux tous les enregistrements de R_EnrBASE.
    1
    1. Re bonsoir
      J'ai bien les 2 mois qui s'affiche, mais comme tu le vois dans l'image, j'ai une case vide. Donc, lorsque je veux calculer , le résultat ne s'affiche pas. Si tu as une idée? Merci d'avance.
      0
    2. Contributeur
      @ChrisPF13cela me semble normal qu'elle soit vide. que voudrais-tu à la place de la case vide?
      nous pourrions communiquer plus facilement si tu partageais la syntaxe SQL de ta requête.
      tu pourrais peut-être utiliser
      NZ(HB2,0)
      0
  2. Bonjour yg_be

    PAIES-HB2=RestPAIES



    Mon SQL
    SELECT [3_PaiesMensuel].MOIS, [3_PaiesMensuel].PAIES, [3_DepenMensuel].HB2, [PAIES]-[hb2] AS RestPAIES
    FROM 3_DepenMensuel INNER JOIN 3_PaiesMensuel ON [3_DepenMensuel].MOIS = [3_PaiesMensuel].MOIS
    GROUP BY [3_PaiesMensuel].MOIS, [3_PaiesMensuel].PAIES, [3_DepenMensuel].HB2, [PAIES]-[hb2];

    Je précise que je n'utilise pas le code SQL, car je ne connais pas du tout.

    Merci d'avance pour ta réponse.
    0
    1. Contributeur
      suggestion, utiliser
      NZ(HB2,0)
      :
      SELECT [3_PaiesMensuel].MOIS, [3_PaiesMensuel].PAIES, NZ(3_DepenMensuel.HB2,0) as HB2, 
      [PAIES]-NZ(3_DepenMensuel.HB2,0) AS RestPAIES
      FROM 3_DepenMensuel INNER JOIN 3_PaiesMensuel 
      ON [3_DepenMensuel].MOIS = [3_PaiesMensuel].MOIS
       ;
      0
  3. J'ai fais un copier/coller, mais problème syntaxe
    0
    1. Contributeur
      on dirait que le point est devenu une virgule.
      0
  4. Non, c'est moi qui t'es induit en erreur, j'avais essayé de remplacer le point par une virgule lors de mon essai et j'ai transmis la mauvaise image.
    Je te mets le bon imprimecran.
    0
    1. Contributeur
      peut-être en remplaçant la virgule par un point-virgule?
      0
  5. Avec le ; cela ne fonctionne pas, donc en essai, j'ai renommé 3_DEPENMensuel en DepenMensuel et ça marche.

    SELECT [3_PaiesMensuel].MOIS, [3_PaiesMensuel].PAIES, Nz(DepenMensuel.HB2,0) AS HB2, [PAIES]-[hb2] AS RestPAIES
    FROM DepenMensuel INNER JOIN 3_PaiesMensuel ON DepenMensuel.MOIS = [3_PaiesMensuel].MOIS;

    il y'a beaucoup de chiffres après la virgule, mais ils sont là et le calcul est bon.
    Je vais revoir mon post (2) et essayer d'intégrer NZ(HB2,0).
    Je te tiens au courant par la suite.
    Merci encore, je progresse doucement, mais surement.
    0
    1. Bonsoir yg_be
      J'ai essayé de comprendre, etc....mais bon, ça marche pas mon truc.
      Je te mets le détail en image.

      Je te mets le SQL que j'ai essayé de faire

      SELECT ADepenMensuel.MOIS, [DEP]-[HB2]-[VAC2], NZ(DEP-HB2-VAC2.depreel,0) as depreel,
      ADepenMensuel.DEP, NZ(DEP.DEP,0) as DEP,
      ADepenMensuel.HB2, NZ(HB2.HB2,0) as HB2,
      AdepenMensuel.VAC2, NZ(VAC2.VAC2,0) as VAC2,
      FROM AdepenMensuel;

      Par contre, je ne voudrais pas abuser.
      0
      1. Contributeur
        il y a une virgule en trop avant le FROM
        0
      2. @yg_beBon, j'ai enlevé la virgule, c'est pire.
        Je te mets une copie de ma base. https://www.cjoint.com/c/JBfmXjkkuwj
        Tu pourras m'expliquer les erreurs que j'ai commis.
        J'ai enlevé tous ce qui n'est pas utile pour mon problème.
        Ne te prends pas le chou, et merci pour ta patience.
        0
      3. Contributeur
        @ChrisPF131) le fichier n'inclut pas la requête qui pose problème, et la requête que tu montres en #11 n'est plus compatible avec le fichier, tu as fait plusieurs modifications entre-temps (AdepenMensuel n'existe pas).
        suggestion:
        SELECT ZEnrBASE.MOIS, Sum(ZEnrBASE.DEBIT) AS DEP, nz(AHorsBudget.HB2,0) as HB2, nz(AVacances.VAC2,0) as AVC2, 
        Sum(ZEnrBASE.DEBIT)-nz(AHorsBudget.HB2,0)-nz(AVacances.VAC2,0) as depreel
        FROM AVacances RIGHT JOIN (AHorsBudget RIGHT JOIN ZEnrBASE ON AHorsBudget.MOIS = ZEnrBASE.MOIS) ON AVacances.MOIS = ZEnrBASE.MOIS
        GROUP BY ZEnrBASE.MOIS, AHorsBudget.HB2, AVacances.VAC2;

        2) en général, je comprends ce que tu fais, et je ne le ferais pas ainsi. difficile d'être plus précis, comme tu n'as pas expliqué le résultat final auquel tu voudrais arriver.
        3) probablement pour bien présenter tes données, tu ajoutes, via des requêtes, des colonnes par catégorie ou groupe de catégorie. c'est, en général, à éviter.
        4) même si j'ajoutais des champs spécifiques aux catégories, je n'utiliserais pas de requête comme tes requêtes "A...", je ferais cela plutôt dans la requête "Z", en utilisant la fonction iif, ou bien dans une requête qui fait un résumé mensuel sur base de la requête Z, en y ajoutant des colonnes spécifiques aux catégories.
        5) pour éviter les problèmes d'arrondi, tu peux peut-être essayer de déclarer les montants comme des "monétaires" dans la table.
        0
      4. @yg_beEffectivement, à force de faire des essais, je sais plus trop ou j'en suis.
        Je vais remettre tout cela à plat en tenant compte de tes observations.
        C'est un budget perso que j'essaye de faire pour moi, mais surtout me familiariser avec ACCESS.
        Merci encore de t'être pencher sur mon PB.
        Je vais clore la discussion et relancerais une autre discussion si je galère.
        Bonne fin d’après-midi.
        0
      5. @yg_beTon SQL fonctionne très bien, je vais l'étudier afin d'essayer d'en comprendre le fonctionnement.
        Merci encore
        0