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

Requêtes et SQL. Discussion :

Détecter la présence des patients entre deux dates de choix [AC-2013]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Août 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Employer
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 98
    Points : 58
    Points
    58
    Par défaut Détecter la présence des patients entre deux dates de choix
    Bonsoir.
    J’ai une base de données :
    Table [Journal]
    ID_journal
    Nom (X)
    Prenom (prénom)
    Matricule
    Date_entree
    Date_sortie
    Assurance (Oui)
    Jour_hospitalisation

    J’aimerai calculer le nombre de jours d’hospitalisation des patients présents entre deux dates choisies.

    Je crée un formulaire
    Deux champs (date) :
    1- Date1 (pour le début d’un mois) calendrier
    2- Date2 (pour la fin d’un autre mois) calendrier
    Liste (qui comporte la requête)

    Je connais seulement la formule :
    Entre () Et ()
    Seulement, cette formule est utilisée pour afficher entre deux date dans le même champs (date_entree) ou (date_sortie)

    Ce que je recherche c’est :
    Quand je recherche entre deux date (date1) et (date2), il m’affiche seulement les patients qui sont présent dans cette période.

    Exemple : je recherche les patient présent à l’hôpital entre le (01/01/2019) et (31/03/2019) et calculer la durée d’hospitalisation.

    Exp :
    Patient n 1
    Entrée (18/12/2018) - Sortie (18/02/2019)

    Il affiche patient 1 mais il calcule le nombre de jours
    Du 01/01/2019 au 18/02/2019 (date de sortie)

    Patient n 2
    Entrée (24/02/2019) - Sortie (24/07/2019)

    Il affiche patient 2 mais il calcule le nombre de jours
    Du 24/02/2019 (date d’entrée) au 31/03/2019.

    Patient n 3
    Entrée (18/12/2018) - Sortie (24/07/2019)

    Il affiche patient 3 mais il calcule le nombre de jours
    Du 01/01/2019 au 31/03/2019

    Patient n 4
    Entrée (24/01/2019)- Sortie (24/03/2019)

    Il affiche patient 4 et il calcule
    Du 24/01/2019 (date d’entrée) au 24/03/2019 (date sortie).

    Patient n 5
    Entrée (23/07/2017) - Sortie (13/12/2018)

    Le patient 5 n’est pas affiché sur la requête, car la période recherchée est entre le (01/01/2019) au (31/03/2019) et le patient est sorti bien avant cette période.

    Voilà,
    J’espère que j’ai bien expliqué mon problème.
    Si quelqu’un a une suggestion.
    Merci de m’avoir lu.

  2. #2
    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
    bonsoir,
    essaie ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT date_entree,
     date_sortie,
    DateDiff("d",IIf([Date1]<[date_entree],[date_entree],[Date1]),IIf([Date2]>[date_sortie],[date_sortie],[Date2]))+1 AS Nbjours
    FROM Journal
    WHERE Journal.date_entree <=[Date2] AND Journal.date_sortie>=[Date1];
    pour la clause WHERE, il suffit simplement d'inverser les 2 dates du formulaire,
    pour le calcul des jours, il faut prendre la plus grande date entre la date entrée et la Date1
    et la plus petite date entre la date sortie et la Date2
    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 ?

  3. #3
    Membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Août 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Employer
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Bonsoir,
    Merci de m’avoir répondu surtout à heure tardive.

    Je ne comprend pas très bien le langage CODE, je travaille directement avec les requêtes sur access.

    D’après ce que j’ai compris de IIF, vous pensez que je doit :
    Date1 pour [Date_Entree]
    Date2 pour [Date_Sortie]

    Condition [Date_Entree]

    Code Expression : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([Date_entree]<[Date1];[Date1];VraiFaux([Date_Entree]>[Date1];[Date_Entrée);[Date1]))

    Condition [Date_Sortie]

    Code Expression : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([Date_Sortie]<[Date2];[Date_Sortie];VraiFaux([Date_Sortie]>[Date2];[Date2];[Date2]))

    Pour le calcul des jours, j’utilise DiffDate dans le champs NbJours.
    C’est ça ?

  4. #4
    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,
    Merci de m’avoir répondu surtout à heure tardive.
    euh oui, un peu contraint: la dernière mise à jour de Windows m'ayant obligé à revenir à la version précédente puis de réinstaller Office, mais ça n'a pas fonctionné du premier coup
    Je ne comprend pas très bien le langage CODE, je travaille directement avec les requêtes sur access.
    une chose à savoir c'est que l'interface du mode création n'est qu'une représentation graphique du mode SQL (visible au moyen d'un bouton en haut à gauche ou d'une icône en bas à droite):

    Nom : qbe_ModesDesign_SQL.JPG
Affichages : 378
Taille : 46,3 Ko

    il suffit de passer en mode SQL, copier le code posté puis de basculer en mode création pour modifier et là, l'interface graphique traduit automatiquement le code dans la langue locale.
    Pour le calcul des jours, j’utilise DiffDate dans le champs NbJours.
    C’est ça ?
    oui, tu as bien compris le principe, il faut juste ne pas oublier de préciser l'objet formulaire associé à Date1 et Date2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nbjours: DiffDate("j";VraiFaux([Formulaires]![NomduFormulaire]![date1]<[date_entree];[date_entree];[Formulaires]![NomduFormulaire]![date1]);VraiFaux([Formulaires]![NomduFormulaire]![date2]>[date_sortie];[date_sortie];[Formulaires]![NomduFormulaire]![date2]))+1
    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 ?

  5. #5
    Membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Août 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Employer
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Bonsoir,

    Moi la dernière mise à jour, m’avez supprimé carrément ma carte wifi, impossible de la détecter ni de l’installer, j’ai dû bloquer les mise à jour automatique sur Windows 8.1 (Original), il fallait désinstallé une à une et tester après je ne sais combien de désinstallation, ça a marché.

    Merci de ces précisions, je vais tester dès que je rejoins mon bureau.

    Vous m’avez donné une idée qui m’a donné une autre idée :

    Je réalise une requête et je met un champ appelé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateEntree:VraiFaux([Date_Entree]<=[Date1];[Date1];[Date_Entree])
    Je met en bas : (Affichez ceux)
    Et un autre champ appelé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSortie:VraiFaux(IsNull([Date_Sortie]);[Date2];VraiFaux([Date_Sortie]>=[Date2];[Date2];[Date_Sortie]))
    Je met en bas : (Affichez ceux)
    Je met un autre champ appelé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nbjours: DiffDate("j";[DateEntree];[DateSortie])+1
    Mais j’ai oublié les possibilités de la date de sortie, elle peut être Vide (patient toujours hospitalisé), ou bien qu’il est sortie avant [Date0], ou après [Date2] ?

    Qu’est ce que vous pensez ?

  6. #6
    Membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Août 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Employer
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 98
    Points : 58
    Points
    58
    Par défaut Résolu
    Bonsoir,
    J’ai enfin pu trouver la formule.
    Merci de m’envoyer l’idée

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par m_charmat Voir le message
    Bonsoir,
    J’ai enfin pu trouver la formule.
    Merci de m’envoyer l’idée
    Bonjour,

    Comme vous dites que le problème est résolu, je clos le sujet pour l'indiquer à ceux qui le reliront, et aussi pour remercier ceux qui vous ont aidés

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Août 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Employer
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Bonsoir,
    J'ai remerci tous ceux qui m'ont aider.
    C'était difficile de trouver la bonne formule.

    Merci infiniment, suivez ce site, c'est l'un des meilleurs recours à l'aide que vous trouverait sur le net.

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

Discussions similaires

  1. donne le nombre des mois entre deux dates
    Par Sokol dans le forum SAS Base
    Réponses: 1
    Dernier message: 09/11/2009, 12h55
  2. nombre des jours entres deux dates
    Par adriennoob dans le forum VBA Access
    Réponses: 4
    Dernier message: 04/09/2009, 14h04
  3. afichage des champs entre deux dates
    Par nanine85 dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/05/2009, 15h19
  4. Liste des mois entre deux dates
    Par ginkas31 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/03/2008, 16h33
  5. Générer le listing des jours entre deux dates
    Par gsmdu62 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2006, 11h08

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