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 :

Aide pour code SQL avec une date [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut Aide pour code SQL avec une date
    Bonjour à tous,

    J'ai un code VBA qui reproduit un SQL pour un formulaire de choix multi-critère. Tout va bien pour les combobox, mais je n'arrive pas à trouver l'astuce pour le contrôle texte qui contient une date. Voici le code :

    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
    21
    22
    23
    24
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT Tb_BauxTP.Bail, Tb_GestTP.NomPrenom, Tb_Villes.Ville, Tb_BauxTP.Date_debut, Tb_BauxTP.Date_fin_apres_option FROM Tb_Villes INNER JOIN (Tb_GestTP INNER JOIN Tb_BauxTP ON Tb_BauxTP.Cle = Tb_BauxTP.Gestionnaire) ON Tb_Villes.ID = Tb_BauxTP.Ville Where Tb_BauxTP![Bail] <> 0 "
     
    If Not Me.ChkGest Then
        SQL = SQL & "And Tb_BauxTP!Gestionnaire = " & Me.CmbRechGest
    End If
     
    If Not Me.ChkVille Then
        SQL = SQL & "And Tb_BauxTP!Ville = " & Me.CmbRechVille
    End If
     
    If Not Me.ChkFin Then
        SQL = SQL & "And Tb_BauxTP!Date_fin_apres_Option < " & Me.TxtFin
    End If
     
    SQL = SQL & ";"
     
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
    Celui qui est en cause c'est ChkFin. Dans le formulaire, j'entre une date pour connaître les baux "se terminant avant le". Étant débutante en VBA, j'ai cru que je n'avais qu'à adapter la ligne et à changer "=" pour "<" mais ça ne marche pas...

    Pouvez-vous me dire ce qui manque ? Avec mes remerciements anticipés mais très sincères

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Les dates, c'est rarement facile !

    Dans le sql, essaie en présentant la date dans le format anglo-saxon (mois, jour, année).

    Regarde ici pour un exemple.

  3. #3
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    Bonjour Claude et merci d'avoir pris la peine d'étudier mon problème,

    Voici comment j'ai écrit ma ligne de code d'après votre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Me.ChkFin Then
       SQL = SQL & "And Tb_BauxTPSGC!Date_fin_apres_Option < " & Format(Me.TxtFin, "mm/dd/yy") & "#"
    End If
    J'ai essayé plusieurs combinaisons de format (même celle de mes paramètres régionaux), et rien à faire. Est-ce que mon code est bien écrit ?

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Peux-tu poster une base de données compatible Access2000 (un fichier .mdb) ?

  5. #5
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    Voilà ! Merci !
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    C'est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "And Tb_BauxTPSGC!Date_fin_apres_Option < " & Format(Me.TxtFin, "mm/dd/yy") & "#"
    il faut :

    SQL = SQL & "And Tb_BauxTPSGC!Date_fin_apres_Option < #" & Format(Me.TxtFin, "mm/dd/yy") & "#"


    N.B.

    Je n'ai pas pu utiliser la pièce jointe : sans doute un problème de conversion :
    Images attachées Images attachées  

  7. #7
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    Yéééééééé ! Victoire !

    Bonjour Claude !

    Je m'apprêtais à vous écrire que ça ne fonctionnait pas, et j'ai vu la modification (sans les deux étoiles) et ô miracle, j'ai enfin obtenu ce que je voulais ! Merci !

    Est-ce que je peux me permettre une dernière petite question... Lorsque l'utilisateur choisi sa date dans ce fameux champ TxtFin, la liste ne se rafraîchit pas tout de suite, il faut que l'on clique à l'extérieur du champ, par exemple dans la liste, pour que je la date s'affiche normalement et que la liste se mette à jour. Y'a-t-il un code que l'on pourrait ajouter qui supprimerait cette étape ? Je vous joins une image du formulaire pour vous donner une idée.

    Encore merci et bonne journée !
    Fichiers attachés Fichiers attachés

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    L'utilisateur introduit la date et fait "ENTER" => cela provoque la mise à jour du contrôle "txtFin"... qui déclenche l'événement "Après mise à jour" qui sollicite la sub "RefreshQuery()"

  9. #9
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    C'est bien correct Claude, on va faire "Enter".

    Je posais la question juste parce que je les entends déjà : "Ça marche pas ! J'ai tapé ma date et ça marche pas !".... "Fais Entrée !"....."Pourquoi on doit faire Entrée pour la date et pas pour les autres champs ?"....

    Vous voyez c'que j'veux dire !

    Merci !

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    doit faire Entrée pour la date et pas pour les autres champs
    Les autres champs sont probablement des zones de liste : le clic pour exprimer un choix est une mise à jour.

    Maintenant si les utilisateurs utilisent toujours la forme "jj/mm/aa", quand le champ contient 8 caractères on pourrait alors provoquer la mise à jour comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub txtDate_Change()
    If Len(Me.txtDate.Text) = 8 Then
        Me.Refresh
    End If
    End Sub


    Mais si pour le 2 juillet prochain, il indique 2/7/13 rien ne se déclenchera (6 caractères seulement).

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

Discussions similaires

  1. Aide pour requête SQL conversion de date
    Par lebanner82 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/07/2011, 16h35
  2. [XL-2003] besoin d'aide pour ajouter 3ans a une date en macro
    Par fpouzou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/11/2009, 11h45
  3. Synchroniser les secondes pour 2 label avec une date
    Par nobody007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/01/2009, 19h21
  4. [SQL] Transformer une date d'un calendrier en timestamp pour trie
    Par Seta-san dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/10/2007, 20h37
  5. Réponses: 2
    Dernier message: 16/08/2005, 15h33

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