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 :

Je recherche de l'aide sur une requête avec dates


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Prédident Sociétés
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Prédident Sociétés
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Je recherche de l'aide sur une requête avec dates
    Bonjour,

    Je reste désespérément bloquer sur le sujet. Il y a t-il une âme charitable qui pourrait faire évoluer cette situation. Voici l'énoncé:


    Une Table ArretTravail

    * AT_Nom - (Texte)
    * AT_ArretDebut - (Date/heure)
    * AT_ArretFin - (Date/heure)
    * AT_Valeur - (Numérique - Entier Long)
    * AT_JoursCarence - (Numérique - Entier Long)


    Cette table est renseignée à partir d'un formulaire par le biais de TextBox.

    Prenons un exemple:

    Nom: X - AT_Nom
    Date début arrêt : 19/05/2008 - AT_DateDebut
    Date fin arrêt : 25/05/2008 - AT_ArretFin
    AT_Valeur = 1
    Carence : ? - AT_JoursCarence

    Pour obtenir le nombre de jours de Carence, je dois rechercher sur une année à partir de la date AT_DateDebut (13/05/2008) le nombre d'arrêts que X aurait pu avoir. Soit entre la Date du 19/05/2008 en amont jusqu'au 19/05/2007.

    Imaginons que X ai eu 03 arrêts entre le 19/05/2007 et le 19/05/2008.

    DateDebut : 01/06/2007 - DateFin: 07/06/2007 - AT_Valeur=1
    DateDebut : 01/07/2007 - DateFin: 13/07/2007 - AT_Valeur=1
    DateDebut : 01/09/2007 - DateFin: 05/09/2007 - AT_Valeur=1

    Plus les données entrées du 19/05/2008 au 25/05/2008 - AT_Valeur=1

    Au total entre aujourd'hui 19/05/2008 et sur une année antérieure 19/05/2007, X à eu 04 arrêts de travail. C'est ce résultat (ici 04) que je veux stocké dans le champ AT_Carence.

    J'espère avoir été clair, en tous cas j'ai un peu avancé avec les requêtes en rapport à ce que tu m'as envoyé et c'est déja beaucoup pour moi, merci.

    Dans l'espoir d'une réponse,

    Salut et Bon courage pour la suite

    Alain

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Bonjour,

    Tu veux simplement compter le nombre de lignes par personne.

    Mets un compte basé sur le champ clef (le N° id de la personne par exemple).

    compte(NumID)

    Cordialement,

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Prédident Sociétés
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Prédident Sociétés
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Comptage de dates sur une année antérieure.
    Bonjour,

    Ajouter un Id semble judicieux, mais ce n'est pas le nombre d'ocurrence ou de lignes que je veux totaliser, mais le nombre de fois ou un id a été enregistré sur une année antérieure à la date que je viens d'entrée dans le formulaire.

    Ex: date entrée 20/05/2008. Je cherche toutes les dates le concernant entre le 20/05/2007 et le 20/05/2008, et cette donnée récupérée me donne le jours de carence. Les enregistrement avant la date du 20/05/2007 ne sont pas pris en compte.

    Merci quand même pour l'idée.

    Cordialement

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 910
    Points : 4 808
    Points
    4 808
    Par défaut
    Loufab t'a dèjà mis sur la voie mais puisque tu demandes plus de détails :

    Une requete de ce type devrait convenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT AT_nom, Count(AT_nom) FROM ArretTravail 
    WHERE AT_Valeur = 1
             AND  (DateDebut BETWEEN #05/20/2007# *AND #05/20/2008#
                    OR DateFin BETWEEN #05/20/2007# *AND #05/20/2008# )
    GROUP BY AT_nom
    Attention à mettre les valeurs de date en format US
    Dans ton cas tu peux même laisser tomber la condition sur DateDebut.

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Citation Envoyé par Alain CARDINI Voir le message
    Bonjour,

    Ajouter un Id semble judicieux, mais ce n'est pas le nombre d'ocurrence ou de lignes que je veux totaliser, mais le nombre de fois ou un id a été enregistré sur une année antérieure à la date que je viens d'entrée dans le formulaire.

    Ex: date entrée 20/05/2008. Je cherche toutes les dates le concernant entre le 20/05/2007 et le 20/05/2008, et cette donnée récupérée me donne le jours de carence. Les enregistrement avant la date du 20/05/2007 ne sont pas pris en compte.

    Merci quand même pour l'idée.

    Cordialement
    Le id est primordial, pour les champs de relation c'est un minimum... comme pour faire la différence entre des homonynes - un éventuel second Alain CARDINI ?

    Ce que tu décris et la solution que je te propose (merci à micniv pour le code) sont identiques.

    Chaque fois qu'un AT est enregistré il est matérialisé par une ligne d'enregistrement. Si tu comptes le nombre de ligne (d'enregistrements) pour chaque personne (dans une intervale de date) tu as le nombre d'AT.

    Cordialement,

    Ps : par contre je ne suis pas sur de l'etoile avant les AND. *AND

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 910
    Points : 4 808
    Points
    4 808
    Par défaut
    Ps : par contre je ne suis pas sur de l'etoile avant les AND. *AND
    Tout à fait d'accord, maestro : d'ailleurs moi-même je n'en mettrais pas !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Prédident Sociétés
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Prédident Sociétés
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre aide.

    J'ai modifié un peu le requête et cela donne ça:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT ArretTravail.AT_Nom as Nom, Count(ArretTravail.AT_Nom) AS JoursCarence
     
    FROM ArretTravail
     
    WHERE (((ArretTravail.AT_ArretDebut) Between #5/20/2007# And #5/20/2008#)
     AND ((ArretTravail.AT_Count)<>False)) OR (((ArretTravail.AT_Count)<>False)
     AND ((ArretTravail.AT_ArretFin) Between #5/20/2007# And #5/20/2008#))
    GROUP BY ArretTravail.AT_Nom;

    Dans ce cas la requête traite tout les employés alors que je ne veux en traiter qu'un seul.

    Cela fonctionne bien, mais je voudrais passer en paramètre à la requête le Nom (ou l'id matricule), les dates: AT_DebutArret et AT_ArretFin entrées dans le formulaire.

    Je vais essayer en VBA, j'aurai peu être plus de chance.

    Merci quand même, cela m'a fait avancé dans les requêtes que je n'avais pas l'habitude de trop utilisé.

    Alain

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Pour le nom il suffit de l'ajouter dans le Where

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ArretTravail.AT_Nom Like "Martin" AND ...
    Pour passer des paramètres à partir d'un formulaire indiquer simplement le lien à la place de la date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArretTravail.AT_ArretDebut BETWEEN forms!monform.datedeb And forms!monform.datefin
    Tu peux également passer par VBA mais ce n'est pas obligatoire.

    Cordialement,

Discussions similaires

  1. Aide sur une requête avec jointure et LIMIT 1
    Par mister3957 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/06/2013, 20h17
  2. Besoin d'aide sur une requête avec un MAX()
    Par lcristin dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/03/2013, 14h57
  3. Besoin aide sur une requête avec jointure
    Par PoichOU dans le forum Requêtes
    Réponses: 3
    Dernier message: 31/08/2010, 18h32
  4. Aide sur une requête avec jointure..
    Par WeDgEMasTeR dans le forum Requêtes
    Réponses: 7
    Dernier message: 10/11/2009, 18h09
  5. aide sur une formule avec date
    Par rudasalska dans le forum Excel
    Réponses: 2
    Dernier message: 27/05/2007, 12h17

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