Access 2003/ requete conditionnellle
Résolu
TOUPOU96
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
Christounet Messages postés 1264 Date d'inscription Statut Membre Dernière intervention -
Christounet Messages postés 1264 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je souhaite avoir de l'aide pour resoudre ce problème: j' ai fait une requete qui me donne le nombre de jours passés par un visiteur par mois dans un hebergement, sachant qu'il peut arrivé dans le mois courant et repartir, qu'il peut etre là depuis un ou plusieurs mois aussi. En fait, je voudrais à partir de la date d' arrivée et celle de depart, savoir le nombre de jours que le visiteur aura passé chez moi pour le mois en cours. J'ai une table avec les informations sur le visiteur et une autre sur ses mouvements dans ma structure.
J'ai besoin de vos éclairages, car je bloque sur la requete à faire...
je souhaite avoir de l'aide pour resoudre ce problème: j' ai fait une requete qui me donne le nombre de jours passés par un visiteur par mois dans un hebergement, sachant qu'il peut arrivé dans le mois courant et repartir, qu'il peut etre là depuis un ou plusieurs mois aussi. En fait, je voudrais à partir de la date d' arrivée et celle de depart, savoir le nombre de jours que le visiteur aura passé chez moi pour le mois en cours. J'ai une table avec les informations sur le visiteur et une autre sur ses mouvements dans ma structure.
J'ai besoin de vos éclairages, car je bloque sur la requete à faire...
A voir également:
- Access 2003/ requete conditionnellle
- Office 2003 - Télécharger - Bureautique
- Acer quick access - Forum Logiciels
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Exemple base de données Access de gestion ✓ - Forum Logiciels
9 réponses
Bonjour,
Peux-tu copier/coller la définition de tes deux tables stp ? Cela sera plus facile pour trouver une solution à ton problème.
A plus
Peux-tu copier/coller la définition de tes deux tables stp ? Cela sera plus facile pour trouver une solution à ton problème.
A plus
Bonjour,
Encore trois petites questions
1°) Comment vais-tu le lien entre ta table séjour et clients si tu n'as que le prénom, je suppose que plusieurs clients peuvent avoir le même prénom
2°) Dans ta table séjour, est ce que la date de sortie est toujours remplie ?
3°) Dans ta table séjour, les colonnes Sejour_Mensuel et Sejour_Total sont-elles remplies ou bien veux tu les calculer avec ta requête pour pouvoir les mettre à jour ?
Dès que j'aurais les réponses, je ferai de mon mieux pour te proposer une solution
A plus
Encore trois petites questions
1°) Comment vais-tu le lien entre ta table séjour et clients si tu n'as que le prénom, je suppose que plusieurs clients peuvent avoir le même prénom
2°) Dans ta table séjour, est ce que la date de sortie est toujours remplie ?
3°) Dans ta table séjour, les colonnes Sejour_Mensuel et Sejour_Total sont-elles remplies ou bien veux tu les calculer avec ta requête pour pouvoir les mettre à jour ?
Dès que j'aurais les réponses, je ferai de mon mieux pour te proposer une solution
A plus
Christounet,
pour repondre à tes questions,
- la table CLIENTS a une clé primaire et celle ci est la clé étrangère de la table séjour. D'autre part, j' ai un formulaire qui peuple la table CLIENTS et un sous formulaire imbriqué dedans qui peuple la table séjour. Je souhaite donc que ma requête calcule et remplisse les champs Séjour_mensuel et Séjour_total.
- Le champ Date_Sortie peut être nul lorsque mon client est encore hébergé à la fin du mois et dans ce cas le sejour mensuel compte les jours jusqu'à la fin du mois considéré.
pour repondre à tes questions,
- la table CLIENTS a une clé primaire et celle ci est la clé étrangère de la table séjour. D'autre part, j' ai un formulaire qui peuple la table CLIENTS et un sous formulaire imbriqué dedans qui peuple la table séjour. Je souhaite donc que ma requête calcule et remplisse les champs Séjour_mensuel et Séjour_total.
- Le champ Date_Sortie peut être nul lorsque mon client est encore hébergé à la fin du mois et dans ce cas le sejour mensuel compte les jours jusqu'à la fin du mois considéré.
Toupou96,
Ok, merci pour tes réponses, je vais créer les mêmes tables sur mon ordinateur et essayer de trouver la requête sql qui correspond à ta demande. Je suis malheureusement demain en congé, donc je ne pourrais te répondre que Lundi, si tu peux attendre jusque là.
A plus
Ok, merci pour tes réponses, je vais créer les mêmes tables sur mon ordinateur et essayer de trouver la requête sql qui correspond à ta demande. Je suis malheureusement demain en congé, donc je ne pourrais te répondre que Lundi, si tu peux attendre jusque là.
A plus
Bonjour Toupou96,
Comme prévu, voici un code d'une requête qui devrait faire ce que tu veux
J'ai effectué la jointure sur la colonne ClientId (dans ma table CLIENTS c'est un numéro unique qui est reprise comme clé externe dans la table SEJOUR.
Explication de la colonne Sejour_Mensuel
Explication de la colonne Sejour_Total
Tiens moi au courant, merci
Comme prévu, voici un code d'une requête qui devrait faire ce que tu veux
SELECT Clients.Nom, Clients.Prénom, Sejour.Sexe, Clients.Date_naissance, Sejour.Date_entree, Sejour.Date_sortie, iif(DatePart('M',Sejour.Date_Sortie) < DatePart('M',now()),0,iif(Sejour.Date_Sortie is not NULL, iif(DatePart('M',Sejour.Date_entree) = DatePart('M',now()),datediff('d',Sejour.Date_entree,Sejour.Date_sortie), datediff('d',format(DatePart('yyyy',now()) & "/" & DatePart('M',now()) & "/01" , "yyyy/mm/dd"), Sejour.Date_sortie)), iif(DatePart('M',Sejour.Date_entree) = DatePart('M',now()),datediff('d',Sejour.Date_entree,now()), datediff('d',format(DatePart('yyyy',now()) & "/" & DatePart('M',now()) & "/01" , "yyyy/mm/dd"), now())))) AS Sejour_Mensuel, iif(Sejour.Date_sortie is NULL,datediff('d',Sejour.Date_entree,now()), datediff('d',Sejour.Date_entree,Sejour.Date_sortie)) AS Sejour_Total FROM Clients INNER JOIN Sejour ON Clients.ClientId = Sejour.ClientId;
J'ai effectué la jointure sur la colonne ClientId (dans ma table CLIENTS c'est un numéro unique qui est reprise comme clé externe dans la table SEJOUR.
Explication de la colonne Sejour_Mensuel
Si le mois de Sortie < mois en cours alors 0 sinon si la date de sortie est remplie alors si le mois d'entrée = mois en cours alors nombre de jours entre date entrée et date sortie sinon nombre de jours entre premier du mois et date sortie sinon si mois d'entrée = mois en cours alors nombre de jours entre date entrée et aujourd'hui sinon nombre de jours entre premier du mois et aujourd'hui
Explication de la colonne Sejour_Total
Si date est sortie est NULL alors nombre de jours entre date entrée et aujourd'hui sinon nombre de jours entre date entrée et date sortie
Tiens moi au courant, merci
Bonjour Christounet,
si j'ai pas fait signe hier, c'est que je suis encore en plein taf " il faut courir tous les jours....", voilà j'ai essayé ton code cette nuit et je voudrais savoir s'il marche chez toi car pour moi, il y' a des bugs et j'essaye encore de voir. Par exemple je ne comprends pas, après le premier IF:
iif(DatePart('M',Sejour.Date_Sortie)) < DatePart('M',now()),0,iif(Sejour.Date_Sortie is not NULL,
il sert à quoi le 0 entre eux?
Merci,
Bonne journée et à bientot
si j'ai pas fait signe hier, c'est que je suis encore en plein taf " il faut courir tous les jours....", voilà j'ai essayé ton code cette nuit et je voudrais savoir s'il marche chez toi car pour moi, il y' a des bugs et j'essaye encore de voir. Par exemple je ne comprends pas, après le premier IF:
iif(DatePart('M',Sejour.Date_Sortie)) < DatePart('M',now()),0,iif(Sejour.Date_Sortie is not NULL,
il sert à quoi le 0 entre eux?
Merci,
Bonne journée et à bientot
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Toupou96,
Oui, le code fonctionne chez moi, j'ai crée deux tables (Clients et Sejour) avec quelques donnée, tu trouveras une image de mes données et résultat ici, ici et ici.
Concernant ta 2ème question, l'instruction IIF à toujours trois arguments, le premier est la condition à testé, le second est le résultat quand la condition est vraie, et le troisième quand la condition est fausse. Dans le cas du premier, si le mois de la date de sortie est plus petit que le mois en cours, le sejour_mensuel est mis à zéro.
N'hésite pas si tu as d'autres questions.
A plus
Oui, le code fonctionne chez moi, j'ai crée deux tables (Clients et Sejour) avec quelques donnée, tu trouveras une image de mes données et résultat ici, ici et ici.
Concernant ta 2ème question, l'instruction IIF à toujours trois arguments, le premier est la condition à testé, le second est le résultat quand la condition est vraie, et le troisième quand la condition est fausse. Dans le cas du premier, si le mois de la date de sortie est plus petit que le mois en cours, le sejour_mensuel est mis à zéro.
N'hésite pas si tu as d'autres questions.
A plus
MERCI CHRISTOUNET,
Dans ta requete, quel est le moment du calcul, Now() implique la date actuel car en nous plaçant debut du mois de juillet, le 02 juillet 2008 par exemple, celà marche très bien. Est il possible de sortir une requete avec les personnes présentes au mois de fevrier 2008?
Je vais d'abord revoir mon code car jusqu'à maintenet, je n'obtiens pas toujours le resultat attendu. Je reprends tout et je te dirai. Merci et à bientot.
Dans ta requete, quel est le moment du calcul, Now() implique la date actuel car en nous plaçant debut du mois de juillet, le 02 juillet 2008 par exemple, celà marche très bien. Est il possible de sortir une requete avec les personnes présentes au mois de fevrier 2008?
Je vais d'abord revoir mon code car jusqu'à maintenet, je n'obtiens pas toujours le resultat attendu. Je reprends tout et je te dirai. Merci et à bientot.
Bonjour Toupou96,
Pour trouver toutes les personnes présentes en Février 2008, la requête devrait être la suivante
A plus
Pour trouver toutes les personnes présentes en Février 2008, la requête devrait être la suivante
SELECT Clients.Nom, Clients.Prénom, Sejours.Date_entree, Sejours.Date_sortie FROM Clients INNER JOIN Sejours ON Clients.ClientId = Sejours.ClientId WHERE Sejours.Date_entree<=#2/29/2008# AND (Sejours.Date_sortie>=#2/1/2008# or Sejours.Date_sortie is NULL);
A plus
Bonjour Christounet,
oui, je sais celà et je voulais en fait poser la question au cas ou je voudrais avoir les personnes présentes en Fevirier 2008, je conserve donc le premier code auquel j' ajoute la clause WHERE...... Ai je bien compris?
Pour le moment, le code est passé, mais je petits soucis pour le debogage. Je te tiens au courant et merci.
A bientot.
oui, je sais celà et je voulais en fait poser la question au cas ou je voudrais avoir les personnes présentes en Fevirier 2008, je conserve donc le premier code auquel j' ajoute la clause WHERE...... Ai je bien compris?
Pour le moment, le code est passé, mais je petits soucis pour le debogage. Je te tiens au courant et merci.
A bientot.
je ne comprends pas très bien ce que tu entends par la definition de mes tables, sinon voilà :
Tables:
CLIENTS(Nom, prenom, Date_naissance, Ville_origine, Profession)
SEJOUR(Prénom, Sexe, Date-Entree, Date_Sortie, Sejour_Mensuel, Sejour_Total)
La requete construite doit me lister les nom, prenom, sexe, Date_Naissance, Sejour_Mensuel, Sejour_Total
et je voudrais calculer le nombre de jours passés par une personne dans le mois en cours, Sejour_Mensuel.
Merci Chris et à bientot, j'espère