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 :

Critère de dates


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 64
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2008
    Messages : 79
    Points : 63
    Points
    63
    Par défaut Critère de dates
    A partir d'un formulaire avec le calendrier qui me permet de rentrer une date de début et une date de fin, je lance une requête temporaire qui m'indique le personnel qui a eu une formation pendant la période définie.

    Voici la requête 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     'Recherche des personnes correspondantes aux critères
        S1 = "SELECT T_FORM.Nom_Form, T_REL_PERS_FORM.Ddeb_Form, T_REL_PERS_FORM.Dfin_Form, T_REL_PERS_FORM.Vali_Form, T_PERSONNEL.Nom_Pers, T_UNITE.Abre_Unit, T_FORM.Code_Form "
        S2 = "FROM T_UNITE INNER JOIN ((T_PERSONNEL INNER JOIN (T_FORM INNER JOIN T_REL_PERS_FORM ON T_OPEX.Code_Form=T_REL_PERS_FORM.Code_Form) ON T_PERSONNEL.Code_Pers=T_REL_PERS_FORM.Code_Pers) "
        S8 = "INNER JOIN T_REL_PERS_UNITE ON T_PERSONNEL.Code_Pers=T_REL_PERS_UNITE.Code_Pers) ON T_UNITE.Code_Unit=T_REL_PERS_UNITE.Code_Unit"
        S3 = "WHERE ((T_REL_PERS_FORM.Ddeb_Form  Between #" + DateDeb + "#  And #" + DateFin + "#)"
        S4 = "OR  (T_REL_PERS_FORM.Dfin_Form  Between #" + DateDeb + "# And #" + DateFin + "#)"
        S5 = "OR  (T_REL_PERS_FORM.Ddeb_Form <  #" + DateDeb + "# AND T_REL_PERS_FORM.Dfin_Form >  #" + DateFin + "#))"
        S6 = "GROUP BY T_FORM.Nom_Form, T_REL_PERS_FORM.Ddeb_Form, T_REL_PERS_FORM.Dfin_Form, T_REL_PERS_FORM.Vali_Form, T_PERSONNEL.Nom_Pers, T_UNITE.Abre_Unit, T_FORM.Code_Form"
        S7 = "ORDER BY T_REL_PERS_FORM.Ddeb_Form;"
        S = S1 + Chr(32) + S2 + Chr(32) + S8 + Chr(32) + S3 + Chr(32) + S4 + Chr(32) + S5 + Chr(32) + S6 + Chr(32) + S7
     
        Set rs = Bd.OpenRecordset(S)
     
        Set r1 = Bd.OpenRecordset("SELECT * FROM temp_Form")
        rs.MoveFirst
    Lorsque je le lance, la requête me sélectionne des périodes supplémentaires que celles demandées.
    Dans un premier temps, j'avais déjà fait la reqûête 2 mais en directe c'est à dire que le WHERE était écris différemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHERE (((T_REL_PERS_FORM.Ddeb_Form  Between [FORMATION entre le xx/xx/xxx]  And [Et le  xx/xx/xxxx] )) OR  (((T_REL_PERS_FORM.Dfin_Form  Between [FORMATION entre le xx/xx/xxx]  And [Et le  xx/xx/xxxx])))
    OR (((T_REL_PERS_FORM.Ddeb_Form) <  [FORMATION entre le xx/xx/xxx]) AND ((T_REL_PERS_FORM.Dfin_Form) >  [Et le xx/xx/xxxx]))
    Avec ces critères, j'ai le bon résultat.

    Comment puis-je modifier ma requête 1 ?
    Merci

  2. #2
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 108
    Points
    108
    Par défaut
    il faut mettre tes dates au format américain, sinon il inverse le mois et le jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    format(DateDeb,"mm/dd/yyyy")

  3. #3
    Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 64
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2008
    Messages : 79
    Points : 63
    Points
    63
    Par défaut
    Je ne crois pas que ce soit un problème de dates anglaises car dans la version directe (c'est à dire création d'une requête) la formule fonctionne.
    J'ai l'impression que c'est ma formule concaténée la date qui ne convient pas.

  4. #4
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    pour éviter tous problèmes, je formate toutes les dates avec Format$( LaDate,"dd/mm/aa"), on peut même inverser le jour et le mois dans certains cas Format$( LaDate,"mm/dd/aa"), les tests disent si le format convient

  5. #5
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Xtine Voir le message
    Je ne crois pas que ce soit un problème de dates anglaises car dans la version directe (c'est à dire création d'une requête) la formule fonctionne.
    J'ai l'impression que c'est ma formule concaténée la date qui ne convient pas.
    avec les requetes Access, il gère bien les dates au format j/m/a alors que lorqu'on insère une date dans le code sql en vba, il les gère au format m/j/a

    essaie de vérifier en prenant une fourchette de date ne pouvant pas être inversée pour voir si ça marche (par ex du 13/6 au 22/6)
    puis essaie en prenant une plage qui peut s'inverser (du 3/6 au 12/6 par ex) et regarde si justement il ne te prends pas les formations entre le le 6/3 et le 6/12

    sinon si tu as un doute sur ta concaténation, essaie de faire un test sur une requete plus simple, juste avec une table et tes clauses sur les dates

Discussions similaires

  1. Critère de date à date SQL et VBA
    Par BRUNO71 dans le forum VBA Access
    Réponses: 8
    Dernier message: 11/09/2008, 20h57
  2. Requête de stocks avec critères de dates
    Par fred_vannes56 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 13/05/2008, 16h15
  3. Requête select des données avec un critère de date
    Par funboard dans le forum Oracle
    Réponses: 2
    Dernier message: 21/04/2008, 16h52
  4. Critère sur date
    Par splog dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 13/03/2008, 20h49
  5. Réponses: 5
    Dernier message: 03/07/2006, 16h39

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