Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2011, 16h41   #1
Invité de passage
 
Homme
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 15
Points : 4
Points : 4
Par défaut Manipuler le contenu d'une requete

Bonjour,
je souhaite réaliser simplement la copie du contenu d'un requête A dans une requete B en ayant effacant tout le contenu de la requete B avant d'y copier les données.

Ma requete présente plus de 250000 lignes et je souhaite que l'opération se fasse le plus vite et simplement possible.

pouvez vous m'orienter ? Merci
sylvmand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 16h46   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 075
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 075
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Bonjour
Mais une requête est une représentation de données. Il n'y a pas de données stockées dedans. Si ta requête 2 a comme source ta requête 1, seules les données de la requête1 apparaîtront.. Je ne comprends pas...
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 17h08   #3
Invité de passage
 
Homme
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 15
Points : 4
Points : 4
Effectivement ça peut paraitre stupide, je m'explique:
Ma première requete est basée sur des info provenant de plusieurs tables
La 2e requete est en fait basée sur les info venant d'une seule table indépendante (donc c'est vrai que la requete ne sert à rien et on peut travailler dans la table directement)

Ceci étant dit,
je veux réaliser cette opération de copie des données de la requete 1 dans le 2 justement pour ne pas travailler dans la requete 1 pour ne pas risquer de modifier/ou perdre mes données de base.

Donc je veux pouvoir copier rapidement les info de la requete 1 dans ma requete 2 (ou la table 2 directement) pour pouvoir travailler dessus sans risque puis la table 2 est complétement indépendante du reste de la base de donnée.

Je veux au passage effacer les donnée contenues dans la table 2 car il s'agit simplement d'une table de travail, une sorte de brouillon donc je veux repartir à chaqeu fois d'une table vide.

Jusqu'à présent je fais un simple copie/coller à la main entre les 2 tables mais comme j'ai énormément de lignes je dois copier/coller par paquet de 65000 et c'est très long.

merci pour ton aide
sylvmand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 17h14   #4
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 075
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 075
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Oui donc en fait ce sont les données de la table 2 que tu veux changer.
Va voir du coté des types de requêtes. Il y a des requêtes de suppression et des requêtes d'ajout.

En gros tu as deux requêtes en mode sql:
La première
Code :
1
2
DELETE *
FROM Table1;
La deuxième:
Code :
1
2
3
INSERT INTO Table2
SELECT *
FROM Table1;
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/09/2011, 17h19   #5
Invité de passage
 
Homme
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 15
Points : 4
Points : 4
oui mais en fait je veux faire ça avec du code VBA,
car j'ai deja car je fais deja des calculs conditionnels dans la requete 1 avec VBA et je souhaite qu'une fois le calcul fait, l'opération de transfert du contenu de la requete 1 dans la 2 se fasse automatiquement ?
merci
sylvmand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 17h23   #6
Invité de passage
 
Homme
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 15
Points : 4
Points : 4
voici le code qui fonctionne déja et que je souhaite completer:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Private Sub Commande70_Click()
'calcul du prix de chaque livraison en automatique
 
Dim rst     As DAO.Recordset
Dim I       As Long
Dim tarif   As Long
 
 
    'concerne le traitement de la requete budgetreq pour les flux LTL
    Set rst = CurrentDb.OpenRecordset("budgetreq", dbOpenDynaset)
    Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
 
    With rst
        .MoveLast
        .MoveFirst
        For I = 1 To .RecordCount   ' Il existe d'autre moyens pour
                                    ' passer sur tous les enregistrements
            .Edit
            If !nombrepal < 34 Then
                If !nombrepal = 1 Then
                !prixauto = !prix1
                End If
                If !nombrepal = 2 Then
                !prixauto = !prix2
                End If
                If !nombrepal = 3 Then
                !prixauto = !prix3
                End If
                If !nombrepal = 4 Then
                !prixauto = !prix4
                End If
                If !nombrepal = 5 Then
                !prixauto = !prix5
                End If
                If !nombrepal = 6 Then
                !prixauto = !prix6
                End If
                If !nombrepal = 7 Then
                !prixauto = !prix7
                End If
                If !nombrepal = 8 Then
                !prixauto = !prix8
                End If
                If !nombrepal = 9 Then
                !prixauto = !prix9
                End If
                If !nombrepal = 10 Then
                !prixauto = !prix10
                End If
                If !nombrepal = 11 Then
                !prixauto = !prix11
                End If
                If !nombrepal = 12 Then
                !prixauto = !prix12
                End If
                If !nombrepal = 13 Then
                !prixauto = !prix13
                End If
                If !nombrepal = 14 Then
                !prixauto = !prix14
                End If
                If !nombrepal = 15 Then
                !prixauto = !prix15
                End If
                If !nombrepal = 16 Then
                !prixauto = !prix16
                End If
                If !nombrepal = 17 Then
                !prixauto = !prix17
                End If
                If !nombrepal = 18 Then
                !prixauto = !prix18
                End If
                If !nombrepal = 19 Then
                !prixauto = !prix19
                End If
                If !nombrepal = 20 Then
                !prixauto = !prix20
                End If
                If !nombrepal = 21 Then
                !prixauto = !prix21
                End If
                If !nombrepal = 22 Then
                !prixauto = !prix22
                End If
                If !nombrepal = 23 Then
                !prixauto = !prix23
                End If
                If !nombrepal = 24 Then
                !prixauto = !prix24
                End If
                If !nombrepal = 25 Then
                !prixauto = !prix25
                End If
                If !nombrepal = 26 Then
                !prixauto = !prix26
                End If
                If !nombrepal = 27 Then
                !prixauto = !prix27
                End If
                If !nombrepal = 28 Then
                !prixauto = !prix28
                End If
                If !nombrepal = 29 Then
                !prixauto = !prix29
                End If
                If !nombrepal = 30 Then
                !prixauto = !prix30
                End If
                If !nombrepal = 31 Then
                !prixauto = !prix31
                End If
                If !nombrepal = 32 Then
                !prixauto = !prix32
                End If
                If !nombrepal = 33 Then
                !prixauto = !prix33
                End If
             End If
 
             If !nombrepal >= 34 Then
             !prixauto = !prix33 / 33 * !nombrepal
             End If
 
            .Update
            .MoveNext
        Next I
    End With
 
    Set rst = Nothing
    MsgBox ("la requete budget pour les flux LTL a été mise a jour")
 
End Sub
sylvmand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 17h29   #7
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 075
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 075
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Et bien en mode vba c'est à peu près comme je te l'ai mis plus haut.

Code :
1
2
3
4
5
6
7
Private Sub Maj_Table2()
    DoCmd.SetWarnings False    'bloque les messages d'avertissement
    DoCmd.RunSQL "DELETE * FROM Table2;"
    DoEvents
    DoCmd.RunSQL " INSERT INTO Table2 SELECT * FROM Table1;"
    DoCmd.SetWarnings False
End Sub
Edit: Comme nos messages se croisent , il faut juste que tu remplaces dans mon code "table1" par "requête1"
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h07.


 
 
 
 
Partenaires

Hébergement Web