Requête Sélection(BD Access)

badr -  
Belim Messages postés 18 Statut Membre -
Bonjour à tous,
SVP je souhaite qqn qui peut m'aider.Voilà, j'ai 2 tables ds une BD(Access) dont relation est ( 1 - n).
- Table 1: Id Nom - Nom.
- Table 2: Id Congé - Id Nom - Reliquat antérieur - Droit de congé - Durée de congé.
Ds une Requête Sélection basée sur les 2 tables, j'ai créé un champ calculé intitulé "Reste" dont voici l'expression:
[Reste]:([Reliquat antérieur]+[Droit de congé])-[Durée de congé])
Mais que dois-je faire par la suite pour que le champ "Reste" soit toujours un nouveau reliquat? j'explique par l'exemple suivant:
1) un employé désire bénéficier d'un congé de 20 jours(durée de congé). Il a un reliquat de 40 jours+ son droit de congé=30 jours (par an et qui peut être fractionné) ce qui donne un cumul de:70 jours; Le résultat du reste=50 jours.
2) Par la suite et ds la^m année, le ^m employé demandera une durée de 30 jours. Là, comment avoir un reliquat antérieur=50 jours? sachant que cette fois, l'intéressé n'a pas droit de congé ( Pour éviter le double emploi du droit de congé au cours de la saisie car en est toujours ds la^m année).
Maintenant, je dois avoir un cumul=50 jours et un nouveau reliquat=20 jours.
3) Une autre fois(toujours ds la^m année), la ^m personne demandera un congé d'une durée de 15 jours.
Opération: Reliquat antérieur=20 jours - Durée de congé=0 jours - Cumul= 20 jours - nouveau reliquat=05 jours.
4) Au début de l'année qui suit, je dois avoir comme données:
- Reliquat antérieur=05 jours - droit de congé=30 jours - Cumul= 35 jours, ainsi de suite...
Configuration: Windows XP
Firefox 3.0.3

10 réponses

Résumé de la discussion

Gestion d'un reliquat de congés dans une base Access avec deux tables en relation 1-n, et questionnement sur la génération d'un nouveau reliquat annuel, et les conditions pour le recalculer. Les réponses indiquent que le calcul du champ Reste doit être adapté pour générer automatiquement un reliquat nouveau au début de chaque période, afin de refléter les années successives. Selon la réponse la plus pertinente, le problème dépend fortement du contenu réel des tables et d'un exemple initial; aucune solution unique peut être proposée sans structure exacte. D'autres échanges évoquent l'envoi de pièces jointes et l'apparition de pistes comme une table 'période' ou une approche basée sur des historiques, suggérant des directions complémentaires pour automatiser les reliquats.

Bobot (l'IA à votre service)
  1. cocotehier
     
    Bonsoir,
    ....search in progess....
    1
  2. badr
     
    Bonjour,
    SVP, aidez-moi je suis bloqué.
    Je pense que mon sujet (Requête Sélection) ressemble aux relevés bancaires:Nouveau solde est reporté sur le relevé suivant comme ancien solde, et ainsi de suite).
    Merci infiniment
    badr
    0
    1. badr
       
      Bonjour,
      mais personne ?!!!
      Qu'est ce qui arrive au monde?
      j'attends vos aides S.V.P

      Cordialement
      badr
      0
  3. cocotehier
     
    OK,
    Vous avez trop de champs deux se "chevauchent" reliquat en fait = reste...logique non ?
    Même si je comprends "le reliquat"...au départ vous avez
    à prendre / pris / donc reste = à prendre - pris
    puis dans la période des congés viennent s'ajouter : les droits : il augmente le total à prendre..
    Par contre vous devrez penser à réinitialisé chaque année en fonction des droits acquis..
    0
    1. badr
       
      Salut Cocotehier,
      merci de votre réponse,
      le moment où j'ai lancé mon sujet, j'ai omis d'expliquer que le reliquat antérieur(40j dans l'exemple) doit être saisi seulement au début. Dans ce cas, je crois que j'ai besoin d'un autre champ qui doit recevoir la valeur du champ Reste et qui sera considéré par la suite comme un reliquat antérieur. Mais comment ? c'est ça la question.
      Ainsi,je vous informe que j'ai créé un champ intitulé "Année" en fonction des droits de congé.

      Cordialement
      Belim
      0
  4. cocotehier
     
    Bonsoir,
    En fait il s'agit simplement d'addtionner au bon moment les bon champs.
    L'architecture de votre base semble être....un cercle ! Un recommencement.
    L'idée est donc de faire coincider la fin du calcul (le solde) avec le début d'un autre (le reliquat) les deux pouvant eventuellement être positif, ou négatif (congés anticipés)
    Le plus simple est d'avoir une table qui peut s'appeler "initiale". C'est une table qui ne contient que le champs [reste_anterieur] c'est le solde n-1, la première fois vous initialisez cette table en saisissant le reste par personne (ou en l'important)...
    Dans une autre table "periode" le champs [reliquat] = initial!.[reste_anterieur]
    Pendant la période vous avez la formation des droits - pris = solde
    A la fin de l'année vous prévoyez de transférer solde dans [reste_anterieur]..
    Carpe Diem
    0
    1. badr
       
      Bonsoir Cocotehier,
      Merci infiniment de votre réponse.
      1) je vais lire attentivement votre suggestion,c'est parce que je ne suis pas doué en la matière.
      2) j'essaierai par la suite de restructurer ma BDD selon vos suggestions
      3) j'ai d'autres tables dans Ma BDD; dans ce cas,est ce que je relie la table1 ou la table2 avec la table "initiale"?
      Merci beaucoup

      Cordialement
      badr
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cocotehier
     
    Bonsoir,
    Cela dépend de ce que contiennent les tables. Initial est un exemple.
    0
    1. badr
       
      Non les autres tables que j'ai ds ma BDD , n'ont pas les mêmes données que celles q' on parle
      0
  7. cocotehier
     
    En reliant Table 1 et 2 a initial vous pourriez effectivement reconstituer une table dans laquelle vous pourrez retrouver les champs (nom...) pourquoi pas.
    0
    1. badr
       
      Merci beaucoup
      Est ce que vous me permettez de vous envoyer un message privé, par lequel je vous exposerai la restructuration e ma BDD?
      Dans l'attente de votre confirmation
      Cordialement
      badr
      0
  8. cocotehier
     
    Oui bien sur mais vous déposerez la solution elle pourra intéresser d'autres demandeurs.
    0
    1. Belim Messages postés 18 Statut Membre
       
      Bonsoir,
      Oui bien sûr et avec un grand plaisir.
      Merci de vous pencher sur mon cas;j'ai essayé avec vos suggestions, mais, S.V.P explique mois plus surtout avec la 3è table par exemple "période"
      Merci d'avance
      0
      1. cocotehier > Belim Messages postés 18 Statut Membre
         
        pour déposer votre fichier apres avoir tester anti-virus

        https://www.cjoint.com/
        0
  9. cocotehier
     
    Bonsoir,
    Je fonctionne en access 2000.
    Prenez soin d'enregistrer votre base en format qui me soit possible de lire si vous êtes en 2003 ou 2007.
    Puis, déposez-le par CIJOINT lié à ce site (le site qui permet de déposez un fichier) afin que je regarde cela.
    0
    1. Belim Messages postés 18 Statut Membre
       
      Bonsoir,
      je m'excuse du retard; j'étais entrain de restructurer ma BDD et écrire un message à votre intention.
      02 fichiers vous ont été envoyé; l'un concernant la base de données et l'autre un message (format Word)
      Merci infiniment, et je vous serais très reconnaissant
      Cordialement,
      Belim, ex badr
      0
      1. Belim Messages postés 18 Statut Membre > Belim Messages postés 18 Statut Membre
         
        NB: j'ai oublié, Maître, de vous dire que le fichier de la BDD qui vous a été envoyé n'est qu'un fichier que j'ai créé pour effectuer des essais, par contre, le fichier principal est intact.

        Merci d'avance
        0
      2. cocotehier > Belim Messages postés 18 Statut Membre
         
        Bonsoir, quelques données :

        base composée de
        1 table depart avec champs nom et initial (l'ancien reliquat)
        1 table legal avec champs nom et legal (les droits de l'année)
        1 table planning avec champs nom debut fin (date debut et date de fin) idéalement table attachée et gérée en excel une colonne nom ou l'on repete autant de fois le nom et faire correspondre en face les plages de conges debut et fin

        1 requete de selection consommation ainsi : ouvrez une requete de selection en sql et copie ceci

        SELECT planning.nom, planning.debut, planning.fin, [fin]-[debut] AS pris
        FROM planning
        WHERE (((planning.fin)<=Now()));

        1 requete de selection consommé ainsi : ouvrez une requete de selection en sql et copie ceci
        SELECT consommation.nom, Sum(consommation.pris) AS pris
        FROM consommation
        GROUP BY consommation.nom;

        enfin 1 derniére requete de selection solde ainsi : ouvrez une requete de selection en sql et copie ceci


        SELECT depart.nom, depart.initial, legal.droits, consommé.pris, ([initial]+[droits])-[pris] AS solde
        FROM (depart LEFT JOIN legal ON depart.nom = legal.nom) LEFT JOIN consommé ON depart.nom = consommé.nom;

        a date, vous entrerez les reliquats dans la table initial....et même de faire un etat que vous pourrez éditer en faisant etat utilisez l'assistant et choisir requete solde

        à vous de compléter le planning
        0
  10. cocotehier
     
    Bonsoir,
    A priori votre fichier n'est pas arrivé. Le lien https://www.cjoint.com/
    limite à 500 ko..une base doit peser plus lourd..envoyez mois des imprim' écran de vos tables et de vos requêtes.
    Pour fair un imprim ecran vous cliquez sur le bouton entre F12 et Arrêt défil puis vous ouvez word et faite edition coller, faites plusieurs envois pour la taille
    0
    1. Belim Messages postés 18 Statut Membre
       
      Bonjour Maître,
      je vous remercie de mon profond cœur de votre réponse.
      Mais avant de se pencher sur leurs éléments, je vous demande de bien vouloir m'expliquer un peu la partie concernant la création de ces tables.
      Si je l'ai bien saisie, je dois les créer à partir d'un fichier Excel et les attacher à ma base de données, n'est-ce pas ?sachant que dans Access, j'aurai effectivement des redondances en créant le champs "Nom" dans plusieurs tables.
      Mais, le problème c'est que je n'ai aucune idée sur les tables, les plages,...dans Excel.
      Quand au sujet de l'envoi des fichiers,je ne sais pas pourquoi ils ne sont pas partis,sachant que:
      - la taille du fichier .mdb = 244 Ko( créé pour effectuer des essais et il s'agit uniquement de la partie"critique" de ma base de données initiale).
      - la taille du fichier .Doc = 164 Ko( message expliquant mon cas).
      Je viens maintenant de vous envoyer à nouveau les dits fichiers comme suit:
      1- Fichier .Doc, avec l'option "imprim' écran".
      2- Fichier .mdb, sans option sus-citée, parce que je n'ai pas trouvé comment vous envoyer uniquement mes tables et ma requête.
      Merci encore de votre aide et de votre patience.

      Cordialement,
      Belim (Ex-badr)
      0
    2. cocotehier > Belim Messages postés 18 Statut Membre
       
      Je n'avais pas remarqué mais s'il vous plait, cessez de m'appeler Maitre, même si je prends cela par humour.
      Je n'ai pas vos fichiers mais nous pourrions faire sans si vous en êtes d'accord.
      Bien,
      Effectivement, si nous reprenons au départ,
      j'ai ouvert excel et creer sur une feuille que j'ai nommée un tableau de plusieurs colonnes dont la colonne nom que j'ai importé dans access via table nouveau importer (sélectionner ledit fichier excel et repérer la feuille nommée)
      l'invite de commande vous demandera ensuite si la première ligne contient les titre dire oui et importer, pour ma part je ne détermine jamais de clé ni ne laisse le soin à l'ordi de le faire) vous aurez alors une table avec les champs qui seront les entetes de votre feuille.....
      certe vous pouvez sur un seul fichier excel avoir plusieurs feuilles chacune nommées differements repéte la méthode pour creer vos tables
      Il ne s'agit d'un fichier de support temporaire.
      Ceci fait, reprenez l'exemple du précedent script en créant vos requete de selection (requéte nouveau mode sql et copier les données décrites)
      Enfin l'une des tables au lieu d'être importée pourrait être attachée : la table ou sont les plage de congés - car dans ce fichier excel dés que vous saisissez des données elles sont automatiquement prise dans access et dans les requêtes.
      Ce qui permet de saisir dans excell les plage par personnes et de gérer dans access la volumétrie..
      0
    3. cocotehier > Belim Messages postés 18 Statut Membre
       
      Pour l'envoi, je me suis tres mal expliqué...l'invite vous donne à la fin un lien que vous copier coller dans votre post..ce qui permet d'atteindre l'endroit ou est stocké votre information..
      0
    4. Belim Messages postés 18 Statut Membre > cocotehier
       
      Bonjour,
      merci beaucoup de votre réponse détaillée.Elle va me prendre du temps pour l'exécuter. Je vous ferai part des résultats dès que je terminerais sa structure.
      Quant à l'appellation "Maître", je vous assure que cela signifie le grand respect envers vous de m'avoir aider à apprendre ce qui me manque dans la matière.
      En outre, celui qui m'apprends un mot, est considéré comme Maître pour moi.
      A très bientôt

      Cordialement
      Belim
      0
    5. Belim Messages postés 18 Statut Membre > Belim Messages postés 18 Statut Membre
       
      Je me reprends,
      en ce qui concerne l' envoi de mes fichiers concernés, je vous informe que j'ai enregistré le lien dans mon poste. Mais la question est de savoir comment lier directement des pièces jointes à mon message.
      Merci d'avance,
      Belim
      0
  11. cocotehier
     
    Bonsoir,
    Pas d'erreur, il faut s'arreter au point trois, a ce moment le lien est automatiquement copié dans le presse papier (sorte de mémoire instantanée) vous pouvez de suite le copier via Ctrl+V dans le post.

    Mais avez-vous essayé de mettre en application dans votre base les posts précédents ?
    0
    1. Belim Messages postés 18 Statut Membre
       
      Bonsoir,
      merci de votre confirmation,mais où réside le problème?
      Je n'ai rien saisi ici: " mettre en application les postes précédents",et de quels postes?
      Voulez-vous me l'éclaircir S.V.P?
      Merci encore
      Cordialement,
      Belim
      0
    2. Belim Messages postés 18 Statut Membre > cocotehier
       
      Bonsoir,
      merci infiniment de m'avoir aidé.
      je vais le voir, mais post 19 ?!!! je ne sais pas ce que ça signifie; pardonne mon ignorance

      Bonne fin de soirée
      Belim
      0
    3. cocotehier > Belim Messages postés 18 Statut Membre
       
      Bonjour,
      En haut et à gauche de votre message (un post) figure un numéro, le N° du post, votre dernier était le N°30, celui-ci le 31, il y a un N° 19.
      Sur le post N°29 vous trouverez un lien sur lequel vous cliquerez, ceci vous donnera un fichier à télécharger qui est un exemple de base.
      0
    4. Belim Messages postés 18 Statut Membre > cocotehier
       
      Bonsoir,
      je vous remercie infiniment, je l'ai reçu et je vais continuer
      A bientôt
      Cordialement
      Belim
      0