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 :

Remplacer 5 requêtes par une macro


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Remplacer 5 requêtes par une macro
    Bonjour à tous,

    Je ne suis pas expert Access et je fais appel à vos lumières ^^

    Je vous explique, je dois réaliser plusieurs opérations sur une table contenant des données :
    1 - je dois mettre la table DEVERSEMENT à blanc
    2 - j'exécute une requête ajout nommée AJOUT1 qui déverse des données provenant de la table DONNEES dans la table DEVERSEMENT
    3 - j'exécute une requête ajout nommée AJOUT2 qui déverse des données provenant de la table DONNEES dans la table DEVERSEMENT
    4 - j'exécute une requête mise à jour nommée MàJ1 qui met à jour certains champs vierges de la table DONNEES
    5 - j'exécute une requête mise à jour nommée MàJ2 qui met à jour certains champs vierges dans une autre colonne de la table DONNEES
    6 - j'exporte la table DEVERSEMENT au format .csv

    J'ai commencé à créer une macro qui exécute toutes ces requêtes une après l'autre mais je cale sur l'export au format .csv, et en plus ça me fait 5 requêtes pour pas grand chose !!!

    Donc ma question, comment faire, dans le module des créations des macros, pour "simplifier" tout ça ??

    J'ai édité mes requêtes au format SQL en espérant les intégrer dans une commande quelconque, mais le module des macros dans ACCESS ne me facilite pas la vie !!!

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut requete
    nicolas54 bonsoir,

    plutôt qu'une requete utilise une fonction !

    Dans un module crée ta fonction un peu comme ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function lancerequete()
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "query1"
    DoCmd.OpenQuery "query2"
    ....
    DoCmd.SetWarnings False
    End Function
    Tes requetes se lanceront à la suite des autres !
    le setwarnings sert à désactiver le message de confirmation de mise à jour...


    Je te laisse regarder çà ! Tiens moi informé si tu as un problème

    JimboLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  3. #3
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut suite
    le dernier setwarnings est à remettre à true ! (mais tu avais corrigé je pense)

    bon courage
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonsoir tous les 2.
    Dans un premier temps, tu peux faire les ajouts dans une seule requete,puisque c'est dans la meme table.
    Dans un deuxième temps ,tu peux faire aussi les mises à jour dans une seule requete ,puisque ce ne sont pas les memes colonnes.Ont peux meme faire une maj de plusieurs tables dans une meme requete .
    Pour le csv, je ne sais pas.
    A+

  5. #5
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut export CSV
    il y a une fonction transfertext de mémoire sous access pour l'exportation te permettant de spécifier le format ! Tu peux même personnaliser l'export (séparateur,....) en passant le filtre dans la commande docmd.transferttext !

    cherche de ce côté là ! et reviens vers nous si nécessaire

    pour le reste il est vrai que tu pourrais profiter d'une seule requête pour tout mettre à jour !

    JimboLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 446
    Points : 43 088
    Points
    43 088
    Par défaut une seule requete
    Si cela ne ralenti pas le traitement, le fait de faire plusieurs requetes permet un débogage plus simple en cas de probs.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Ok, merci pour vos réponses, je vais tenter comme ça.

    Mais il n'a y pas possibilité de copier le SQL d'une requête et de le coller (si ça marche ?? ) dans une macro ou quelquechose de ce style afin d'éviter d'avoir, sous ACCESS, "50" requêtes qui apparaissent ??

    Voilà ce que ça donne pour le moment :

    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
    Private Sub Commande582_Click()
    On Error GoTo Err_Commande582_Click
     
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Déversement RODP"
        DoCmd.OpenQuery "Déversement R1"
        DoCmd.OpenQuery "Déversement RODP - Date"
        DoCmd.OpenQuery "Déversement R1 - Date"
        DoCmd.SetWarnings True
     
    Exit_Commande582_Click:
        Exit Sub
     
    Err_Commande582_Click:
        MsgBox Err.Description
        Resume Exit_Commande582_Click
    End Sub
    Il ne me reste plus qu'à trouver la commande pour mettre la table à blanc + la commande pour exporter au format .csv...

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour le forum.
    Comme dit chrtophe ,celà ne facilitera pas le débogage .
    Pour les requetes actions (update ,delete ou "insertion") ,c'est simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DoCmd.SetWarnings False
     
     DoCmd.RunSQL "UPDATE materiel LEFT JOIN planning ON materiel.code = planning.code SET planning.reste = [planning]![reste]-" & Me.quant & _
     " WHERE (((planning.code)=" & Chr(34) & Me.code & Chr(34) & ") AND ((planning.madate)>=[Formulaires]![visuel2]![depart] And (planning.madate)<[Formulaires]![visuel2]![retour]));"
                    DoCmd.SetWarnings True
    Au fait, ce que tu apelle macro ,c'est une procédure (sub) ?!
    A+

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Ce que j'appelle macro (étant simple utilisateur ACCESS ^^), c'est ce que l'on voit sur Access sur la gauche : TABLE / REQUETE / FORMULAIRE / ETAT / MACRO

    Sinon, j'ai réussi à bâtir ma requête VBA (c'est bien du VBA non ?) :

    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
     
    Private Sub Commande582_Click()
    On Error GoTo Err_Commande582_Click
     
        CurrentDb.Execute "DELETE * FROM [Export GUEPARD];"
     
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Déversement RODP"
        DoCmd.OpenQuery "Déversement R1"
        DoCmd.OpenQuery "Déversement RODP - Date"
        DoCmd.OpenQuery "Déversement R1 - Date"
        DoCmd.TransferText acExportDelim, "Export GUEPARD", "Export GUEPARD", "K:\GRD\COLLOC\ECONOMIE CONCESSIONNAIRE\Redevances\Export GUEPARD.csv", False
     
        DoCmd.SetWarnings True
     
    Exit_Commande582_Click:
        Exit Sub
     
    Err_Commande582_Click:
        MsgBox Err.Description
        Resume Exit_Commande582_Click
    End Sub

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Tiens, tant que j'y suis, j'exporte donc automatiquement d'Access vers un format .csv différentes données dont des codes postaux.
    Hélas, ces codes postaux peuvent commencer par "0" et ce "0" est purement et simplement supprimer lorsque j'ouvre mon fichier .csv !!!

    Avez-vous une idées pour éviter cette anomalie ??

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour Nicolas_54.
    Essaye de passer ton champ code postal au format texte .Il y a un assistant pour faire un masque de saisie international ou français.
    A+

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Thierry_PALLIER Voir le message
    Bonjour Nicolas_54.
    Essaye de passer ton champ code postal au format texte .Il y a un assistant pour faire un masque de saisie international ou français.
    A+
    Un assistant ? Dans Access ?? Où ça ?
    Mon problème ne vient pas d'Access car dans ma table, le champs est bien au format texte, mais comme il contient des valeurs numériques, lorsque je l'exporte (via une requête VBA) au format .csv, je retrouve ce champs au format numérique et le "0" est supprimé automatiquement !!
    Et dans l'assistant d'export sous Access, je ne parviens pas à lui indiquer que le champs code postal doit être au format texte et non numérique (Cf. ci-dessous)...



    Si quelqu'un connaît une astuce ou un caractère pouvant remplacer le "0" et étant reconnu par les application comme un caractère numérique ???

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    J'ai trouvé la solution

    Mais je suis confronté à un nouveau problème

    Il faut que le contenu de ma celulle contienne ="08300" pour que dans mon fichier .csv je ne retrouve que 08300.

    Donc ça c'est cool ! Mais le soucis vient de ma requête dans Access car ma formule correspondrait à ça : Code postal (CPD): "="" & [3 TRESORERIES]![CP] & """

    Mais ça me fait trop de " dans la formule et il ne me la prend pas

    Une (nouvelle) idée ^^

    Merci pour votre patience !

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    merci google (comme quoi je ferai mieux de mieux chercher avant de vous solliciter !!).

    Je donne la réponse si ça peut servir à quelqu'un !!

    Il faut rajouter un "

    Code postal (CPD): "=""" & [3 TRESORERIES]![CP] & """"

  15. #15
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut csv
    De mémoire il me semble que le format t'affiche uniquement la première colonne et que des colonnes sont cachées à droite permettant de spécifier le type pour chaque champ !

    Essaye d'écarter les colonnes en cliquant juste à l'extrémité droite de la colonne contenant le nom du champ !

    @++
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    On ne peut rien rajouter de plus... La seule possibilité que l'on a c'est de modifier le texte présent dans la première colonne !!

Discussions similaires

  1. Peut-on remplacer une sous-requête par une jointure ?
    Par shimomura22 dans le forum Développement
    Réponses: 13
    Dernier message: 14/01/2015, 09h46
  2. [XL-2007] Remplacer une formule compliquée par une macro simple
    Par a.faurie dans le forum Excel
    Réponses: 10
    Dernier message: 14/10/2013, 09h42
  3. Réponses: 2
    Dernier message: 02/02/2011, 11h14
  4. Remplacer une sous-requête par une jointure
    Par MPQuatre dans le forum Requêtes
    Réponses: 6
    Dernier message: 05/12/2007, 17h28
  5. remplacement carré par ; dans un fichier excel crée par une macro
    Par om51ft dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/11/2007, 16h00

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