Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/01/2013, 16h51   #1
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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.
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 20h08   #2
jimbolion
Membre Expert
 
Avatar de jimbolion
 
Homme Jean-Marie BAGNIS
Moulticien
Inscription : janvier 2013
Messages : 1 005
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie BAGNIS
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Moulticien
Secteur : Santé

Informations forums :
Inscription : janvier 2013
Messages : 1 005
Points : 1 763
Points : 1 763
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 :
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
jimbolion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 20h09   #3
jimbolion
Membre Expert
 
Avatar de jimbolion
 
Homme Jean-Marie BAGNIS
Moulticien
Inscription : janvier 2013
Messages : 1 005
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie BAGNIS
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Moulticien
Secteur : Santé

Informations forums :
Inscription : janvier 2013
Messages : 1 005
Points : 1 763
Points : 1 763
Par défaut suite

le dernier setwarnings est à remettre à true ! (mais tu avais corrigé je pense)

bon courage
jimbolion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 20h51   #4
Thierry_PALLIER
Membre confirmé
 
Homme Thierry Pallier
Regisseur
Inscription : octobre 2006
Messages : 137
Détails du profil
Informations personnelles :
Nom : Homme Thierry Pallier
Âge : 52
Localisation : France, Seine Maritime (Haute Normandie)

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

Informations forums :
Inscription : octobre 2006
Messages : 137
Points : 251
Points : 251
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+
Thierry_PALLIER est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 05h54   #5
jimbolion
Membre Expert
 
Avatar de jimbolion
 
Homme Jean-Marie BAGNIS
Moulticien
Inscription : janvier 2013
Messages : 1 005
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie BAGNIS
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Moulticien
Secteur : Santé

Informations forums :
Inscription : janvier 2013
Messages : 1 005
Points : 1 763
Points : 1 763
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
jimbolion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 10h27   #6
chrtophe
Membre expérimenté
 
Homme
Technicien maintenance
Inscription : août 2011
Messages : 467
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : août 2011
Messages : 467
Points : 535
Points : 535
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.
chrtophe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2013, 10h25   #7
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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 :
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...
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2013, 16h04   #8
Thierry_PALLIER
Membre confirmé
 
Homme Thierry Pallier
Regisseur
Inscription : octobre 2006
Messages : 137
Détails du profil
Informations personnelles :
Nom : Homme Thierry Pallier
Âge : 52
Localisation : France, Seine Maritime (Haute Normandie)

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

Informations forums :
Inscription : octobre 2006
Messages : 137
Points : 251
Points : 251
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 :
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+
Thierry_PALLIER est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2013, 14h57   #9
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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 :
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
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2013, 15h18   #10
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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 ??
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2013, 17h50   #11
Thierry_PALLIER
Membre confirmé
 
Homme Thierry Pallier
Regisseur
Inscription : octobre 2006
Messages : 137
Détails du profil
Informations personnelles :
Nom : Homme Thierry Pallier
Âge : 52
Localisation : France, Seine Maritime (Haute Normandie)

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

Informations forums :
Inscription : octobre 2006
Messages : 137
Points : 251
Points : 251
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+
Thierry_PALLIER est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/01/2013, 10h51   #12
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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 ???
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2013, 11h13   #13
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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 !
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2013, 11h19   #14
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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] & """"
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2013, 17h02   #15
jimbolion
Membre Expert
 
Avatar de jimbolion
 
Homme Jean-Marie BAGNIS
Moulticien
Inscription : janvier 2013
Messages : 1 005
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie BAGNIS
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Moulticien
Secteur : Santé

Informations forums :
Inscription : janvier 2013
Messages : 1 005
Points : 1 763
Points : 1 763
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 !

@++
jimbolion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2013, 11h54   #16
Nicolas_54
Invité régulier
 
Homme
Inscription : octobre 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2012
Messages : 19
Points : 5
Points : 5
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 !!
Nicolas_54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h28.


 
 
 
 
Partenaires

Hébergement Web