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 :

Agregation requete SQL dans VBA avec combobox [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre actif
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut Agregation requete SQL dans VBA avec combobox
    Bonjour à tous,
    J'aimerais exécuter 4 requêtes suppressions toutes basées sur un même paramètre, une Date.

    Voici le bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Deletion()
    Dim codesql As String
     
    DoCmd.SetWarnings False
     
    date_demandee = InputBox("StartingWeek (aaaa/ww)", "Starting Week")
     
    codesql = "DELETE [Table1].*, [Table1].WEEK" & " From [Table1] WHERE (([Table1].WEEK) >= " & date_demandee & ")" & "DELETE [Table2].*, [Table2].WEEK" & " From [Table2] WHERE (([Table2].WEEK) >= " & date_demandee & ")" & "DELETE [Table3].*, [Table3].WEEK" & " From [Table3] WHERE (([Table3].WEEK) >= " & date_demandee & ")" & "DELETE [Table4].*, [Table4].WEEK" & " From [Table4] WHERE (([Table4].WEEK) >= " & date_demandee & ")"
     
    DoCmd.RunSQL codesql
     
    DoCmd.SetWarnings True
    End Sub
    J'ai les interrogations suivantes:

    1- Quel est l'opérateur adéquat pour enchaîner les requêtes Delete?
    J'ai mis un "&" mais ça n'a pas l'air de fonctionner

    2- Comment faire apparaître une boite de dialogue dans laquelle je pourrais choisir une date que j'aurai au préalable renseignée dans une liste?

    3-Ma date à le format suivant "aaaa/ww", w, étant la semaine.
    Du coup je suis amenée à taper ceci par exemple : "2011/06"
    Dans access, aucun problème, il comprend que c'est une date et lorsque que je lui demande de supprimer toutes les cellules >= 2011/06, il le fait.
    Dans le code VBA j'ai l'impression qu'il ne le comprend plus.

    Merci,
    Julie

  2. #2
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Je ne suis pas sûr que l'on puisse lancer une seule instruction SQL qui permette de supprimer des données sur plusieurs tables différentes.

    Pour ma part, j'utiliserai une boucle, en passant comme paramètre le nom de la table, le nom du champ critère, et la date, valeur du critère.

    Pour la boite de dialogue, il faut ruser.
    En fait il faut ouvrir un formulaire que l'on crée pour l'occasion, dans lequel il y a la liste des dates à prendre en compte.

    Pour la valeur du critère date, si j'ai bien compris il s'agit d'une période (une semaine étant une période commençant tel jour et finissant 7 jours plus tard).
    On peut soit transformer votre date access (2011/06) en un intervalle.
    Soit trouver dans VBA si on ne peut pas comparer des semaine. Mais là je ne sais pas.

    Pierre

  3. #3
    Membre actif
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut
    Merci bien pour ta réponse Pier.Antoine

    Bon j'ai essayé de ruser comme tu me le conseilles mais je bute sur quelques points.

    Voici mon nouveau 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
    Public Function Deletion()
    Dim codesql As String
    Dim date_demandee As String
     
    DoCmd.SetWarnings False
     
    date_demandee = InputBox("StartingWeek (aaaa/ww)", "Starting Week")
     
    codesql1 = macommande1
    codesql2 = macommande2
    codesql3 = macommande3
    codesql4 = macommande4
     
    DoCmd.RunSQL codesql1
    DoCmd.RunSQL codesql2
    DoCmd.RunSQL codesql3
    DoCmd.RunSQL codesql4
     
    DoCmd.SetWarnings True
    End Function
    Bon apparemment il ne comprends pas ce language à partir de DoCmd.RunSQL codesql2
    Je ne peux pas enchaîner les "DoCmd.RunSQL"?

    J'ai créee une formulaire avec la combobx et les dates que je voulais y faire figurer, saurais-tu me dire ce que dois-je en faire maintenant?

    Merci à toi,
    Ju

  4. #4
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Votre code comporte une erreur. Je ne sais si c'est à cause de cela que cela ne marche pas.

    En effet, vous utilisez une fonction. Or une fonction doit renvoyer un résultat.

    Or en l'occurence, ce dont vous avez besoin c'est de faire faire quelque chose, donc une procédure.

    Autrement dit, essayez votre code dans une procédure.

    Ceci dit, je pense que passer par une boucle serait plus efficace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For z = 1 to 4
    codesql = macommande(z)
    DoCmd.RunSQL codesql
    NExt
    Pierre

  5. #5
    Membre actif
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut
    Merci pour cette réponse Pierre, c'est très gentil à vous.
    toutefois vous sur-estimez mes compétences en VBA, je suis toute débutante :-)

    Voici le nouveau code, avec la boucle.
    Par contre je ne vois plus où se trouve l'erreur :s

    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
    Sub Deletion()
    Dim codesql As String
    Dim suppression As String
    Dim date_demandee As String
     
    DoCmd.SetWarnings False
     
     date_demandee = InputBox("StartingWeek (aaaa/ww)", "Starting Week")
     
     
    suppression1 = blablabla
    suppression2 = blablabla
    suppression3 = blablabla
    suppression4 = blablabla
     
    For i = 1 To 4
    codesql = suppression(i)
    DoCmd.RunSQL codesql
    Next
     
    DoCmd.SetWarnings True
    End Sub
    PS: j'ai mis "blablabla" car je sais que mon code sql est ok et pour éviter d'alourdir la page

    Ju

  6. #6
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour


    Je crois que je tenterais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    For i = 1 To 4
    codesql = suppression & i
    DoCmd.RunSQL codesql
    Next
    Bonne journée

    Pierre

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

Discussions similaires

  1. [AC-2010] Requete SQL dans VBA
    Par angel50 dans le forum VBA Access
    Réponses: 8
    Dernier message: 11/01/2014, 16h32
  2. probleme requete SQL dans VBA
    Par sylvmand dans le forum VBA Access
    Réponses: 5
    Dernier message: 08/03/2012, 14h17
  3. compter avec une requete SQL dans VBA
    Par michael1971 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/01/2008, 09h20
  4. requete sql en vba avec un select MAX
    Par alexkickstand dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/05/2007, 15h59
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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