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 31/07/2011, 10h32   #1
Membre du Club
 
Inscription : septembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 106
Points : 54
Points : 54
Par défaut Methode très lente

Bonjour le forum

Mon problème est:
J'ai un formulaire avec une liste de données que je veux enregistrer dans une autres table Ma méthode est celle-ci
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
 
Private Sub Commande33_Click()
Dim DB As Database
Dim STRSQL As String
Dim RST As Recordset
Dim I
 
                  DoCmd.GoToRecord , , acFirst
          For I = 1 To 5000
                  STRSQL = "SELECT * from MaTable"
                  Set RST = DB.OpenRecordset(STRSQL, dbOpenDynaset)
 
 
                  RST.AddNew
                  'DONNEE_L1 = dans uns liste formulaire continue
                  'DONNEE1 = Table
                  RST![DONNEE1] = Me.DONNEE_L1
                  RST![DONNEE2] = Me.DONNEE_L2
                  RST![DONNEE3] = Me.DONNEE_L3
                  RST![DONNEE4] = Me.DONNEE_L4
                  RST![DONNEE5] = Me.DONNEE_L5
                  RST![DONNEE6] = Me.DONNEE_L6
                  RST![DONNEE7] = Me.DONNEE_L7
 
                  RST.Update
                  RST.Close
 
                  DoCmd.GoToRecord , , acNext
            Next I
 
End Sub
Qui fonction très bien
Mais très lente

Si quelqu'un connais une autre méthode plus rapide

Merci d'avance
David @+
David1259 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 10h47   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,

Ne peux-tu pas, simplement, utiliser une requête pour mettre ta table à jour ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 11h14   #3
Membre du Club
 
Inscription : septembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 106
Points : 54
Points : 54
Bonjour ClaudeLELOUP

Requête de mise à jour jamais fais ça fonction comment
David1259 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 11h23   #4
Membre du Club
 
Inscription : septembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 106
Points : 54
Points : 54
Re

comment j'ai créé ma base

1er table: Liste de personne
2eme table: j'ai créé 31 champs pour 31 jour + 1 champs personne
après enregistre chaque personne dans ma table 2
David1259 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 12h35   #5
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
Bonjour,

En effet une requete d'insertion ira plus vite. Surtout que tu itères 5000 enregistrements...

Code :
INSERT INTO table1 (champ1 , champ2) SELECT champ1, champ2 FROM table2 WHERE [condition];
Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 15h36   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Mais finalement qu'essaies-tu de faire avec ce code ?

Peux-tu l'exprimer avec des mots :

Ex
- la source de mon formulaire contient 5 000 enregistrements
- avec comme données : x, y...
- d'autre part, j'ai une table qui contient : a, b...
- en cliquant un bouton, je voudrais...

Et dis-nous ce que tu veux faire quand tu as réalisé cette mise à jour.

J'ai l'impression que tu choisis une méthode bien compliquée pour arriver à ton but.

-------------
Au passage : salut à loufab.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 20h56   #7
Membre du Club
 
Inscription : septembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 106
Points : 54
Points : 54
Bonsoir je voudrais faire un planning
dans la même table je voulais mettre toute les personnes environ 1500 et pour chaque personne les jours 1 année mais je croix que je vais revoir ma façon de faire en plus je suis limite a 255 champs dans une table

merci à vous tous
David1259 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 21h00   #8
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Là, je te garantis que ta première idée ne tient pas la route, même s'il n'y avait pas cette limite !
ClaudeLELOUP 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 13h37.


 
 
 
 
Partenaires

Hébergement Web