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

Access Discussion :

Sélection entre deux dates [AC-2007]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut Sélection entre deux dates
    Bonjour,

    D'après un formulaire dans lequel on renseigne deux champs date intitulés DateDébut et Datefin, je désirerais en cliquant sur OK ouvrir un état et afficher les enregistrements de date à date sans que me l'on redemande de renseigner les dates.

    En résumé, je renseigne DateDébut et Datefin, je clique sur OK et j'ouvre un état qui tient compte des plages.

    Je peux le faire d'après une requête, mais je préfère le formulaire avec les options à renseigner.

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Voir dans l'aide d'Access la commande OpenReport. Il suffit d'y expliciter la condition WhereCondition.

    Attention:
    - dans la WhereCondition, les dates doivent être indiquées dans le format US.
    - bien vérifier que les dates limites sont bien contenues dans le résultat (en particulier la date fin), les champs Date étant en fait des champs Date+Heure.

    Bonne continuation.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Voir dans l'aide d'Access la commande OpenReport. Il suffit d'y expliciter la condition WhereCondition.

    Attention:
    - dans la WhereCondition, les dates doivent être indiquées dans le format US.
    - bien vérifier que les dates limites sont bien contenues dans le résultat (en particulier la date fin), les champs Date étant en fait des champs Date+Heure.

    Bonne continuation.
    Bonjour et merci pour votre réponse.

    J'ai ceci mais il y aurait une erreur de syntaxe.

    DoCmd.OpenReport "Grand Livre", A_PREVIEW, , " Me.[Date d'opération] Between #" & _
    Format(Datedébut, "dd/mm/yyyy") & "#" & " # And # " & "#" & Format(DateFin, _
    "dd/mm/yyyy") & "#".

    Ou ceci: DoCmd.OpenReport "Grand Livre", acViewPreview, , "[Date d'opération] between [Sélections écritures].[DateDébut] and [Sélections écritures].[Datefin]"
    Cela fonctionne mais me redemande les dates dans une fenêtre paramètres.

    Merci.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Il y a des espaces et # en trop. L'instruction devrait plutôt être celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OpenReport "Grand Livre", acViewPreview , , _
    "[Date d'opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#"
    [Date d'opération] représente un champ de la table (et pas du formulaire). Il ne faut donc pas indiquer Me.[...]
    DateDébut et DateFin sont des champs du formulaire. Il faut donc indiquer Me.Date... (Me= l'objet qui lance l'instruction)

    Dans Access 2007, je pense qu'il faut utiliser la constante acViewPreview (plutôt que A_PREVIEW).

    Personnellement j'évite de nommer les champs en y laissant des espaces, en y utilisant des lettres accentués, et je n'y utilise JAMAIS ' ou "
    Aussi [Date d'opération] serait pour moi [DateOperation].

    Bonne continuation.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Il y a des espaces et # en trop. L'instruction devrait plutôt être celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OpenReport "Grand Livre", acViewPreview , , _
    "[Date d'opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#"
    [Date d'opération] représente un champ de la table (et pas du formulaire). Il ne faut donc pas indiquer Me.[...]
    DateDébut et DateFin sont des champs du formulaire. Il faut donc indiquer Me.Date... (Me= l'objet qui lance l'instruction)

    Dans Access 2007, je pense qu'il faut utiliser la constante acViewPreview (plutôt que A_PREVIEW).

    Personnellement j'évite de nommer les champs en y laissant des espaces, en y utilisant des lettres accentués, et je n'y utilise JAMAIS ' ou "
    Aussi [Date d'opération] serait pour moi [DateOperation].

    Bonne continuation.
    Bonjour,

    J'ai modifié le nom du champs en "date_opération", mails il y a encore des erreurs: utilisation du mot clé Me incorrecte et si je le retire, il ya de nouveau une mauvaise syntaxe.

    Encore merci pour votre participation.

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Il faudrait regarder dans le formulaire (en mode création) quels sont les noms donnés aux zones de texte qui contiennent les valeurs DateDébut et DateFin

    (Nom indiqué dans l'onglet 'Autres' de la fenêtre des Propriétés).

    Nom : LeNom.jpg
Affichages : 215
Taille : 33,7 Ko

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Il faudrait regarder dans le formulaire (en mode création) quels sont les noms donnés aux zones de texte qui contiennent les valeurs DateDébut et DateFin

    (Nom indiqué dans l'onglet 'Autres' de la fenêtre des Propriétés).

    Nom : LeNom.jpg
Affichages : 215
Taille : 33,7 Ko
    La première solution (DoCmd.OpenReport "Grand Livre", acViewPreview, , _
    "[Date_opération] Between #" & Format(Me.DateDebut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#") fonctionne maintenant car j'ai créé un module de class, sinon Me n'est pas accepté.
    Cela dit, ça sélectionne tout et non la plage.

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Je ne pense pas qu'un module de classe soit vraiment indiqué.
    Il faudrait vraiment vérifier au niveau du formulaire les noms donnés aux 2 zones de texte contenant DateDébut et DateFin.

    Autre vérification possible, ajouter avant l'instruction DoCmd l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print "[Date_opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#"
    pour voir à quoi ce que cela donne exactement. (à la place de Debug.Print, vous pouvez aussi inscrire MsgBox)

    Cordialement.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Je ne pense pas qu'un module de classe soit vraiment indiqué.
    Il faudrait vraiment vérifier au niveau du formulaire les noms donnés aux 2 zones de texte contenant DateDébut et DateFin.

    Autre vérification possible, ajouter avant l'instruction DoCmd l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print "[Date_opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#"
    pour voir à quoi ce que cela donne exactement. (à la place de Debug.Print, vous pouvez aussi inscrire MsgBox)

    Cordialement.
    Bonjour,

    ça fonctionne sauf que pour DateDebut il me prend tout et Datefin c'est bon.

    J'essaie également d'afficher les lignes dont le champ "SelecInv" est égal à 0 (oui/non). Pas d'erreur mais il ne prend pas en compte.

    Encore merci pour votre aide.

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Pour prendre en considération le champ "SelecInv", il faut compléter la WhereCondition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("[Date_opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#") AND ([SelecInv] = 0)
    Pour résoudre le problème lié à DateDébut, il faudrait donner le résultat effectivement donné par la WhereCondition (les Debug.Print sont vraiment très utiles pour le débogage).

    Cordialement.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Pour prendre en considération le champ "SelecInv", il faut compléter la WhereCondition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("[Date_opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#") AND ([SelecInv] = 0)
    Pour résoudre le problème lié à DateDébut, il faudrait donner le résultat effectivement donné par la WhereCondition (les Debug.Print sont vraiment très utiles pour le débogage).

    Cordialement.
    Bonsoir,

    En fait, en ce qui concerne le champ [SelecInv], j'avais déjà essayé votre methode avec diverses nuances mais ce champ n'est pas trouvé. Il figure dans l'état. En le remplaçant par le champ de la table, c'est la même chose.
    Pour ce qui est de Debug.Print, il me renvoie bien les deux dates. Où est l'erreur?

    Encore merci pour votre temps que vous me consacrez à ce sujet.

  12. #12
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Attention, il y a un guillemet mal placé: il ne doit pas se trouver après le dernier # mais tout en fin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("[Date_opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#) AND ([SelecInv] = 0)"
    Pour date début, y-a-t'il vraiment des enregistrements qui sont "avant" ?

    Cordialement.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Attention, il y a un guillemet mal placé: il ne doit pas se trouver après le dernier # mais tout en fin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("[Date_opération] Between #" & Format(Me.Datedébut, "dd/mm/yyyy") & "# And #" & Format(Me.DateFin, "dd/mm/yyyy") & "#) AND ([SelecInv] = 0)"
    Pour date début, y-a-t'il vraiment des enregistrements qui sont "avant" ?

    Cordialement.
    Bonjour,

    ça fonction bien pour SelecInv =0, mais concernant la date début, j'ai changé le format: mm/dd/yyyy. et ça fonctionne. Pas très logique puisque la dateFin à le format dd/mm/yyyy.

    Encore merci pour votre aide et votre patience.

    Excellente journée à vous.

  14. #14
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Il faut bien indiquer mm/dd/yyyy dans les 2 formats. Dans VBA, si la date à utiliser est 30/01/2017, Access comprend qu'il s'agit du mois de janvier tandis que si la date est 12/1/2017, Access considère qu'il s'agit du 1er décembre.
    Ce qui se passe donc: pour les dates du jour > 12, Access corrige, pour les dates du jour < 13, Access se mélange les pinceaux.
    Dans le code VBA, il faut donc toujours convertir les dates au format mm/dd/yyyy
    (C'est idiot, je le savais, mais je me suis quand même trompé dès mon 1er message!)
    Bonne continuation.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Il faut bien indiquer mm/dd/yyyy dans les 2 formats. Dans VBA, si la date à utiliser est 30/01/2017, Access comprend qu'il s'agit du mois de janvier tandis que si la date est 12/1/2017, Access considère qu'il s'agit du 1er décembre.
    Ce qui se passe donc: pour les dates du jour > 12, Access corrige, pour les dates du jour < 12, Access se mélange les pinceaux.
    Dans le code VBA, il faut donc toujours convertir les dates au format mm/dd/yyyy
    (C'est idiot, je le savais, mais je me suis quand même trompé dès mon 1er message!)
    Bonne continuation.
    Encore merci pour les infos.

    Cordialement.

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

Discussions similaires

  1. [MySQL] Sélection de jours entre deux dates pour un calendrier PHP
    Par fawi68 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/08/2017, 14h35
  2. [SQL Server] Sélection entre deux dates
    Par Gabrielly dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/06/2006, 14h51
  3. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34
  4. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 13h17
  5. comment obtenir l’intervalle de mois entre deux date
    Par looc 6699 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2005, 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