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 :

Executer une requete en vba [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Par défaut Executer une requete en vba
    Bonjour,
    j'ai fait une macro qui met à jour mes données en important une les données d'un autre fichier

    j'ai également une requête qui doit remplacer dans une table les nouvelle données, mais voilà, cette requête fait plus de 250 caractères et je ne peux donc pas l'exécuter depuis ma macro

    je ne connais rien en vba si une ame charitable veut bien n'aider

    merci d'avance

  2. #2
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    Bonjour,

    Il me semble difficile de t'expliquer comment faire cela en VBA en un seul message .

    Par contre, as-tu essayé d'enregistrer tes 2 requêtes puis de les exécuter depuis ta macro?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Par défaut
    oui mais dans ma macro il ne veut pas car ma requête fait plus de 256 caractères

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Par défaut
    voilà ma requête à mettre en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO t_suivi_amm_sa ( cle, modification, Notification, workload, realised, Date_debut, date_fin, Blocage )
    SELECT T_amm_sa.F6, T_amm_sa.F5 AS Critère, Left([f9],3) AS workorder, Count(T_amm_sa.F9) AS workload, Sum(Left(([F20]/100),1)) AS [wo realised], T_amm_sa.F16, T_amm_sa.F17, T_amm_sa.F23
    FROM T_amm_sa
    GROUP BY T_amm_sa.F6, T_amm_sa.F5, Left([f9],3), T_amm_sa.F16, T_amm_sa.F17, T_amm_sa.F23, T_amm_sa.F10
    HAVING (((T_amm_sa.F10) Like "Euro*"));

  5. #5
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    La solution de mout1234 est pourtant la bonne à savoir enregistrer la requete et l'appeler depuis la macro.

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Par défaut
    Citation Envoyé par anelinette Voir le message
    voilà ma requête à mettre en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO t_suivi_amm_sa ( cle, modification, Notification, workload, realised, Date_debut, date_fin, Blocage )
    SELECT T_amm_sa.F6, T_amm_sa.F5 AS Critère, Left([f9],3) AS workorder, Count(T_amm_sa.F9) AS workload, Sum(Left(([F20]/100),1)) AS [wo realised], T_amm_sa.F16, T_amm_sa.F17, T_amm_sa.F23
    FROM T_amm_sa
    GROUP BY T_amm_sa.F6, T_amm_sa.F5, Left([f9],3), T_amm_sa.F16, T_amm_sa.F17, T_amm_sa.F23, T_amm_sa.F10
    HAVING (((T_amm_sa.F10) Like "Euro*"));
    Ben sinon tu fais un Docmd.Runsql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Docmd.Runsql "INSERT INTO t_suivi_amm_sa ( cle, modification, Notification, workload, realised, Date_debut, date_fin, Blocage )
    SELECT T_amm_sa.F6, T_amm_sa.F5 AS Critère, Left([f9],3) AS workorder, Count(T_amm_sa.F9) AS workload, Sum(Left(([F20]/100),1)) AS [wo realised], T_amm_sa.F16, T_amm_sa.F17, T_amm_sa.F23
    FROM T_amm_sa
    GROUP BY T_amm_sa.F6, T_amm_sa.F5, Left([f9],3), T_amm_sa.F16, T_amm_sa.F17, T_amm_sa.F23, T_amm_sa.F10
    HAVING (((T_amm_sa.F10) Like 'Euro*'))"

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Par défaut
    ou alors, dans ce cas, simplement "raccourcir" le code de la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO t_suivi_amm_sa ( cle, modification, Notification, workload, realised, Date_debut, date_fin, Blocage )
    SELECT F6, F5, Left([f9],3) AS wko, Count(F9) AS wkl, Sum(Left(([F20]/100),1)) AS [wo], F16, F17, F23
    FROM T_amm_sa
    GROUP BY F6, F5, Left([f9],3), F16, F17, F23, F10
    HAVING F10 Like "Euro*";
    Quand il n'y a aucune confusion possible de table, les [MaTable].[MonChamp] peuvent etre simplifies en [MonChamp].
    De plus, dans une requete d'insert, les Alias n'ont qu'une raison d'etre grammaticale en cas d'utilisation de fonctions et donc, peuvent etre les plus courts possible.
    Enfin, dans les clauses WHERE et HAVING certaines parentheses sont mises par Access par "securite" et peuvent etre supprimees.

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Par défaut
    Merci pour vos réponses

    en fait, j'ai fais un bouton qui exécute ma macro et dans la foulée ma requête et le tour est joué

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

Discussions similaires

  1. [AC-2007] Temps d'execution d'une requete sous VBA 4 minutes
    Par sihamelm dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/11/2012, 00h04
  2. Executer un requete en VBA
    Par el_quincho dans le forum Access
    Réponses: 1
    Dernier message: 13/03/2006, 16h09
  3. FAQ : problème avec création d'une requete en VBA
    Par Oluha dans le forum VBA Access
    Réponses: 14
    Dernier message: 14/02/2006, 12h05
  4. Réponses: 2
    Dernier message: 24/11/2005, 11h46
  5. [VB.NET] Executer une requete à partir d'un DataSet...?
    Par anthony70 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 12/07/2004, 14h17

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