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 :

Renvoie valeur si date comprise entre 2 dates [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut Renvoie valeur si date comprise entre 2 dates
    Bonjour,
    Après plusieurs recherches je décide de poster mon problème
    Je dispose d’une requête « Donnee » contenant plusieurs champs dont un champs [DATE] ; [ANNEE] ;[Prix]
    J’ai également créé une table « Inventaire » contenant les variables [ANNEE] ;[Mois] ; [Date Début] ; [Date Fin]

    J’ai lié ma requête « Donnee » à ma table « Inventaire » par le champs [Annee].
    Je souhaiterai créer une variable [MoisCorrige] qui comparerai la date de ma requête « Donnee » aux dates ([Date Début] ; [Date Fin]) de ma table « Inventaire ».
    J’ai essayé avec cette fonction mais cela ne marche pas tout le temps
    MoisCorrige: IIf([DATE]>=[Date début] And [DATE]<=[Date Fin];[Mois])

    Je m’en remet donc à vos idées

    Merci d’avance

  2. #2
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Je ne sais pas si j'ai été assez clair. Pour info, voici un exemple de ce que j'ai fait.

    J'espère que c'est plus clair

    Merci d'avanceExempleDate.zip

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    A mon avis il faut déjà sélectionner les données dont la date est comprise entre le début et la fin d'un inventaire et renvoyer le mois correspondant de cette inventaire.

    Voici un début de solution :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Donnee.ANNEE, Donnee.Date, Date_Inventaire.Mois, Donnee.PRIX, Date_Inventaire.[Date début], Date_Inventaire.[Date Fin]
    FROM Date_Inventaire, Donnee
    WHERE (Date_Inventaire.[Date début])<=[Date]) AND (Date_Inventaire.[Date Fin])>=[Date]);


    Cdlt,
    Fichiers attachés Fichiers attachés
    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

  4. #4
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Merci pour ta réponse. C'est en partie ce que je souhaite. Par contre, comment faire pour lui dire que si la Donne.[DATE] ne se trouve pas dans [Date_Inventaire] alors Month([DATE]).

    Je m'explique. Dans mon exemple, dans la table Donnee occurence 9, la date est au 05/06/2015. Le 05/06/2015 ne se trouve pas encore dans la table Donnee du coup je voudrais récupérer le mois "normal" avec la fonction Month().

    Le but de cette opération est que je vais rentrer les dates d'inventaire pour 2015 mais que dans ma table Donnee se trouve des donnees depuis 2002...

    Du coup voici ce que j'ai fait. Je ne suis pas sure que cela soit très propre par contre...Exemple.zip

    Merci d'avance

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Il faudrait faire une sous-requête basée sur la table "Date Inventaire" :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Donnee.ANNEE, Donnee.Date, Donnee.PRIX, Nz((select Mois from Date_Inventaire T1 where Donnee.[Date] between T1.[date début] and T1.[Date fin];),Month([Donnee].[Date])) AS Mois
    FROM Donnee;

    Cdlt,
    Fichiers attachés Fichiers attachés
    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

  6. #6
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Merci! C'est exactement ce dont j'avais besoin!

    Par contre j'ai du mal à comprendre cette partie du code SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz((select Mois from Date_Inventaire T1 where Donnee.[Date] between T1.[date début] and T1.[Date fin];),Month([Donnee].[Date])) AS Mois

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par John Parker Voir le message
    Merci! C'est exactement ce dont j'avais besoin !

    Par contre j'ai du mal à comprendre cette partie du code SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz((select Mois from Date_Inventaire T1 where Donnee.[Date] between T1.[date début] and T1.[Date fin];),Month([Donnee].[Date])) AS Mois
    En gros si la sous-requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    (select Mois from Date_Inventaire T1 where Donnee.[Date] between T1.[date début] and T1.[Date fin];)

    Ne renvoie aucun résultat, aucun mois dans l'inventaire pour lequel la date est comprise entre le début et la fin de l'inventaire, alors on utilise la fonction nz pour retourner le mois de la date en question.

    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 régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    La fonction NZ() est donc une fonction de condition?

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Oui pour les valeurs nulles :

    Si la valeur du 1er argument est nulle, elle renvoie le second argument, sinon elle renvoie le 1er.

    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

  10. #10
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    D'accord je comprend mieux. En tout cas mon problème est résolu. Un grand merci à toi!

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

Discussions similaires

  1. [XL-2013] Calcul de dates comprises entre deux dates
    Par Goemanne dans le forum Excel
    Réponses: 2
    Dernier message: 12/03/2015, 13h10
  2. Réponses: 9
    Dernier message: 19/02/2015, 16h05
  3. Dates comprises entre..entre
    Par atlantideD dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 03/08/2007, 10h49
  4. afficher les dates comprisent entre deux dates
    Par hugobob dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/10/2006, 11h53
  5. chercher toutes les entrées comprise entre deux dates
    Par kabool dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/03/2006, 10h12

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