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

VBA Access Discussion :

Requête vba avec trie des dates


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Requête vba avec trie des dates
    Bonsoir tout le monde

    J'aimerais faire ressortir les dates d'une table en fonction de la date d'aujourd'hui

    Pour ainsi faire ressortir tous les membres née à la date actuelle ..
    Je pense être à deux doigts mais à mon avis une faute au niveau du format de la date du membre.

    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
    17
    18
    19
    20
    Public Function Anniv_du_jour() As String
     
    Dim db_Anniv_du_jour As Database
        Set db_Anniv_du_jour = CurrentDb
     
    Dim Anniv_du_jour_req As Variant
    Dim Anniv_du_jour_res As String
     
    Anniv_du_jour_req = "SELECT prenom_membre,nom_membre,d_naissance_membre" _
    & " FROM T_membres" _
    & " WHERE Format(d_naissance_membre, "jjmm")= " & Format(Date, "jjmm")
     
    Anniv_du_jour_res = db_Anniv_du_jour.CreateQueryDef(vbNullString, Anniv_du_jour_req).OpenRecordset.Fields("prenom_membre")
    Anniv_du_jour = Anniv_du_jour_res
     
    db_Anniv_du_jour.Close
    Set db_Anniv_du_jour = Nothing
     
     
    End Function

  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,
    en SQL comme en VBA la langue est l'anglais, le format doit donc l'être également, de plus, Date() étant une fonction, on peut l'utiliser directement dans le code SQL.
    Ne pas oublier non plus de doubler les guillemets lorsqu'on les utilise à l'intérieur des guillemets utilisés en tant que séparateurs de texte:
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    & " WHERE Format(d_naissance_membre, ""ddmm"")= Format(Date(), ""ddmm"")"
    autre solution:
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    & " WHERE Day(d_naissance_membre) = Day(Date()) and Month(d_naissance_membre) = Month(Date())"
    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
    Futur Membre du Club
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Salut tee_grandbois

    Un grand merci pour ta correction.
    Pas évident à comprendre tout ça, mais grâce à toute vos remarques j'avance tout doucement jusqu'à mon prochain problème

  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
    certes, mais cette instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Anniv_du_jour_res = db_Anniv_du_jour.CreateQueryDef(vbNullString, Anniv_du_jour_req).OpenRecordset.Fields("prenom")
    ne te renverra qu'une seule occurrence (la première), tu n'aura pas les autres prénoms en cas d'enregistrements multiples : est-ce bien ce que tu veux ?
    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
    Futur Membre du Club
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    lol tu devine mes futures problèmes que j'étais en train d'essayer de résoudre.
    Non en effet de plus je voudrais que la valeur soit renvoyée dans une zone de liste

  6. #6
    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,
    cela change complètement le code …
    le code ci-dessous met à jour la propriété "Contenu" (RowSource en VBA) de la zone de liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Forms("NomFormulaire").Controls("NomZoneDeListe").RowSource = "SELECT prenom_membre,nom_membre,d_naissance_membre" _
    & " FROM T_membres" _
    & " WHERE Format(d_naissance_membre, ""ddmm"")= Format(Date(), ""ddmm"")"
    la propriété "Origine source" de la zone de liste doit être de type "Table/Requête"
    NomFormulaire: à remplacer par le nom du formulaire contenant la zone de liste
    NomZoneDeListe: à remplacer par le nom de la zone de liste

    si le contenu est mis à jour dans un évènement du formulaire (ce qui est la meilleure méthode), remplacer Forms("NomFormulaire").Controls("NomZoneDeListe").Rowsource par Me.NomZoneDeListe.Rowsource
    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 ?

Discussions similaires

  1. Réponses: 25
    Dernier message: 22/09/2014, 12h37
  2. [VBA-E] Gestion des dates selon format de départ
    Par Gamal le Celte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/02/2007, 14h41
  3. Réponses: 9
    Dernier message: 19/02/2007, 20h33
  4. Requête VBA avec somme
    Par hugo69 dans le forum Access
    Réponses: 6
    Dernier message: 19/12/2006, 11h36
  5. [VB6] Requêtes en BDD sur des dates
    Par pom dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/11/2005, 14h04

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