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 :

Transformer une requête SQL


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Par défaut Transformer une requête SQL
    Bonjour,

    Je souhaite transformer la requête ci-dessous en code VBA. cette requête SQL est lié à un formulaire.
    J'ai essayé mais il me demande des fin d'instruction ??
    Si quelqu'un pouvait me la traduire ? Merci à tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim strSQL As String
     
    strSQL = "SELECT Format(Month([DATE]),"00") AS Mois, [Gestion_Stats].ANNEE " & _
             "FROM [Gestion_Stats] " & _
             "GROUP BY Format(Month([DATE]),"00"), [Gestion_Stats].ANNEE " & _
             "HAVING ((([Gestion_Stats].ANNEE) = [Formulaires]![PREFACE]![Vérification traitement])) " & _
             "ORDER BY Format(Month([DATE]),"00");"

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    bonjour,
    en VBA, tout ce qui est paramètre (ici le contrôle du formulaire [Vérification traitement]) doit être en dehors des guillemets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    strSQL = "SELECT Format(Month([DATE]),""00"") AS Mois, [Gestion_Stats].ANNEE " & _
             "FROM [Gestion_Stats] " & _
             "GROUP BY Format(Month([DATE]),""00""), [Gestion_Stats].ANNEE " & _
             "HAVING ((([Gestion_Stats].ANNEE) = " & [Formulaires]![PREFACE]![Vérification traitement])) & _
             " ORDER BY Format(Month([DATE]),""00"");"
    et il faut doubler les guillemets à l'intérieur des guillemets, d'où l'erreur fin d'instruction ...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Le group by consomme de la ressource, on ne l'utilise que pour des statiques, pas pour déboulonner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    strSQL = "SELECT Distinct Format(Month([DATE]),""00"") AS Mois, [Gestion_Stats].ANNEE " & _
             " FROM [Gestion_Stats] " & _
             " WHERE ((([Gestion_Stats].ANNEE) = " & [Formulaires]![PREFACE]![Vérification traitement])) & _
             " ORDER BY Format(Month([DATE]),""00"");"
    Dernière modification par Invité ; 18/12/2018 à 13h29.

  4. #4
    Membre confirmé
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Par défaut
    Bonjour et merci pour ta réponse.

    Voici le code pour l'exécution de la requête mais j'ai besoin de ta validation..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Vérification_traitement_Click()
     
    Dim strSQL As String
     
    strSQL = "SELECT Distinct Format(Month([DATE]),""00"") AS Mois, [Gestion_Stats].ANNEE " & _
             " FROM [Gestion_Stats] " & _
             " WHERE ((([Gestion_Stats].ANNEE) = " & [Formulaires]![PREFACE]![Vérification traitement])) & _
             " ORDER BY Format(Month([DATE]),""00"");"
     
    Me.Vérification_traitement.Form.RecordSource = strSQL
     
    Me.Vérification_traitement.Value = Null
     
    End Sub

  5. #5
    Membre confirmé
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Par défaut
    Je reprends contact..
    Mon code ne fonctionne pas donc je dois faire un truc pas bon du tout

    Tee_grandbois ou dysorthographie...

    Il m'indique une erreur déjà dans le SQL "Fin d'instruction.." de cette ligne :
    & [Formulaires]![PREFACE]![Vérification traitement]))
    Et après je pense que j'ai tout faux pour lui dire qu'il exécute la requête ?

  6. #6
    Membre émérite
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Par défaut
    Bonjour le forum.

    @ANANA49, si [Formulaires]![PREFACE]![Vérification traitement] est une date, il faut l'entourer de dièse (#), et la présenter au format date US

    En éspérant ne pas me tromper dans les parenthèses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = " & Chr(35) & "Format(" & "[Formulaires]![PREFACE]![Vérification traitement]" & ",""mm,dd,yyyy"")" & Chr(35) & "))
    Je pense que le code de dysorthographie aurait du etre (sans tenir compte du format date):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = " & [Formulaires]![PREFACE]![Vérification traitement]" & "))" & _
    Cdlt

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    bonsoir Thierry,
    je pense que ANNEE est un entier, pas une date. Mais le problème vient effectivement des 2 parenthèses fermantes après le contrôle du formulaire (erreur de ma part ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " WHERE ((([Gestion_Stats].ANNEE) = " & [Formulaires]![PREFACE]![Vérification traitement] & "))" & _

  8. #8
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    strSQL = "SELECT Distinct Format([DATE],'MM') AS Mois, [Gestion_Stats].ANNEE " & _
             " FROM [Gestion_Stats] " & _
             " WHERE [Gestion_Stats].ANNEE = " & [Forms]![PREFACE]![Vérification traitement] & _
             " ORDER BY Month([DATE]);"
    pour [Forms]![PREFACE]![Vérification traitement] je ne sais pas!

  9. #9
    Membre confirmé
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Par défaut
    Oui je pense qu'il bloque sur l'année que je saisie sur ma zone de texte "[Vérification traitement]" via mon formulaire "PREFACE"??

  10. #10
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    bonjour,
    If Me.Vérification_traitement.Value <> "" Then
    DoCmd.RunSQL strSQL
    End If
    on ne peut pas exécuter une requête sélection dans VBA avec Docmd puisque le résultat n'est ni affichable, ni exploitable.
    Si ce n'est pas pour alimenter un sous-formulaire, je suppose que c'est pour alimenter le formulaire PREFACE : dans ce cas, il suffit de le dire simplement, cela nous évitera de chercher des solutions inappropriées.

    Ton contrôle indépendant s'appelle "Vérification traitement", je t'invite à remplacer l'espace par un souligné (_) et d'ailleurs tu pourras vérifier par toi-même que VBA n'aime pas les espaces puisque qu'il les remplace par des _ dans les Sub :Private Sub Vérification_traitement_Click()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Vérification_traitement_Click()
    'Me.Vérification_traitement.Value = Null
    Dim strSQL As String
     
    strSQL = "SELECT Distinct Format(Month([DATE]),""00"") AS Mois, [Gestion_Stats].ANNEE " & _
             " FROM [Gestion_Stats] " & _
             " WHERE [Gestion_Stats].ANNEE = " & Me.[Vérification traitement] & _  
             " ORDER BY Format(Month([DATE]),""00"");"
    If Me.Vérification_traitement.Value <> "" Then
    Me.RecordSource = strSQL
    End If
    inutile de mettre [Forms]![PREFACE] devant le contrôle puisque c'est le formulaire contenant le code, Me. suffit amplement.

    Par contre, s'il s'agit d'alimenter un autre contrôle, dis-moi lequel ...

  11. #11
    Membre confirmé
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Par défaut
    Merci beaucoup pour toutes ces indications, je vais suivre tes conseils.

    tee_grandbois je te souhaite de passer de très bonnes fêtes de fin d'année.
    A très bientôt...

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/09/2018, 14h58
  2. Réponses: 4
    Dernier message: 19/02/2014, 06h09
  3. Récupérer une transformation en requête SQL
    Par knolz dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 27/05/2010, 15h28
  4. [Transformer] Cube à partir d'une requête SQL
    Par Nadine dans le forum Cognos
    Réponses: 2
    Dernier message: 29/10/2008, 09h19
  5. Transformer une requête sql dynamique
    Par ttttnht dans le forum Sybase
    Réponses: 5
    Dernier message: 24/07/2007, 07h54

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