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 :

Pb de syntaxe SQL en VBA sur la sélection d'une date


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut Pb de syntaxe SQL en VBA sur la sélection d'une date
    Bonjour,

    J'ai un formulaire multicritère.
    Lorsque j'ai effectué un choix, j'ai plusieurs dates.
    Je choisi une date, et ma requête (regroupement) est en erreur.
    Je pense que cela proviens de mon code (en rouge) sur la sélection de la date (syntaxe)
    Ci-dessous 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Dim sql As String, ClauseHAVING As String
    
    
    sql = "SELECT tblReponseGestionnaire.Causedelacause,tblReponseGestionnaire.Gestionnaire,tblReponseGestionnaire.DateReponseMail,tblReponseGestionnaire.DateEnvoiMail,tblReponseGestionnaire.DateRéception,tblReponseGestionnaire.QtéRéceptionnée,tblReponseGestionnaire.Commentaire,Sum(tblHistoriqueMàJ.QteOrdre)AS SommeDeQteOrdre" & vbCrLf
    
    sql = sql & "FROM tblReponseGestionnaire" & vbCrLf
    sql = sql & "INNER JOIN tblHistoriqueMàJ ON tblReponseGestionnaire.Causedelacause = tblHistoriqueMàJ.Causedelacause" & vbCrLf
    sql = sql & "GROUP BY tblReponseGestionnaire.Causedelacause,tblReponseGestionnaire.Gestionnaire,tblReponseGestionnaire.DateReponseMail,tblReponseGestionnaire.DateEnvoiMail,tblReponseGestionnaire.DateRéception,tblReponseGestionnaire.QtéRéceptionnée,tblReponseGestionnaire.Commentaire"
     'Aménager la clause Where
    If Not Me.chkCauseDeLaCause Then
       ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.Causedelacause = '" & Me.cmbCauseDeLaCause & "' "
    End If
    If Not Me.chkDateCauseDeLaCause Then
        ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.DateEnvoiMail = '" & Me.cmbDateCauseDeLaCause & "' "
    End If
    If Not Me.chkGestionnaire Then
        ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.Gestionnaire = '" & Me.cmbGestionnaire & "' "
    End If
    Select Case Me.TypeRetard1
    Case 1
    ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.DateReponseMail Is Null"
    Case 2
    ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.DateReponseMail Is not Null"
    End Select
    If Len(ClauseHAVING) = 0 Then
    GoTo AménagerLaQueueSQL
    Else
       ' supprimer le 1er And et Aménager la tête de clause
       ClauseHAVING = " HAVING " & Right(ClauseHAVING, Len(ClauseHAVING) - 3)
    sql = sql & ClauseHAVING
    End If
    AménagerLaQueueSQL:
    sql = sql & ";"
    'Debug.Print sql
                          
    Me.Sfrm.Form.RecordSource = sql
    Pouvez-vous m'aider à trouver mon erreur de syntaxe?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    salut,
    merci de penser a consulter la en priorite
    http://access.developpez.com/faq/?page=dates#DateFormat

  3. #3
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Bonjour jpcheck,

    J'ai bien lu le lien que tu m'as envoyé.
    Mon probleme, est comment mettre le # après .DateEnvoiMail =
    Chaque fois, j'ai une erreur.
    Je sais que quand c'est du texte on met '" & me.texte & '"
    Mais quand c'est du numérique ou une date??????
    je coince.

    Merci de ton aide

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370

  5. #5
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Re,

    Je viens de trouver une partie de mon pb concernant la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not Me.chkDateCauseDeLaCause Then
        ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.DateEnvoiMail = #" & Me.cmbDateCauseDeLaCause & "# "
    End If
    Mais, il ne résout pas ma sélection.
    Je m’explique :
    Après avoir sélectionné mes 2 premiers critères, j’ai 2 dates (04/09/2010 et 13/09/2010)
    Quand, je choisis la 1er date rien à l’affichage.
    Mais, par contre sur la 2eme (la plus récente) l’affichage s’effectue.
    Peux-tu m’expliquer d’où viens mon erreur?

    Je suis un jeune débutant,
    Merci d'avance de ton indulgence et de ton aide.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    Pas de probleme,
    le format attendu dans ta requete est celui indique dans mon premier lien :
    #MM/DD/YYYY#
    ici 04/09/2010 dans ton formulaire va entrer la valeur
    #04/09/2010#, ce qui va correspondre au 9 avril 2010

    il faut donc forcer le format en amont avec la fonciton Format()
    L'aide en ligne sur les fonctions dont il est question est tout designer pour les exemples de syntaxes

  7. #7
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Bonjour jpcheck,

    Depuis hier, j'ai essayé plusieurs solutions.
    Rien ne fonctionne! Chaque fois j'ai une erreur de compilation
    Peux-tu m'expliquer, car je sèche.
    Merci de ton aide

  8. #8
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Ce fut long, et j'ai trouvé.
    Ci dessous le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not Me.chkDateCauseDeLaCause Then
        ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.DateEnvoiMail = #" & Format(Me.cmbDateCauseDeLaCause, "mm/dd/yyyy")  & "# "
    End If

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

Discussions similaires

  1. SQL | Sélection sur le max d'une date
    Par julie75 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/07/2014, 18h03
  2. [XL-2007] Requete SQL en VBA sur "Sélection" d'un feuille de données ?
    Par Cyborg dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/12/2011, 08h16
  3. [AC-2007] Syntaxe SQL en VBA ACCESS (Recordset ADODB)
    Par syntax_error dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/02/2011, 11h10
  4. erreur de syntaxe sql dans vba
    Par @rkane dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/12/2006, 18h23
  5. requete sql avec between sur des champs de type Date
    Par ersoufiane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/08/2006, 19h43

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