Requête Sélection(BD Access)
badr
-
Belim Messages postés 18 Statut Membre -
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...
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...
10 réponses
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
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
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..
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..
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En reliant Table 1 et 2 a initial vous pourriez effectivement reconstituer une table dans laquelle vous pourrez retrouver les champs (nom...) pourquoi pas.
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.
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.
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
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
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
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
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)
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)
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..
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..
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
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
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 ?
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 ?