Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
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 20/05/2011, 13h54   #1
Invité de passage
 
Inscription : mai 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 3
Points : 0
Points : 0
Par défaut Dupliquer données dans une table

Bonjour,

J'aimerais savoir si c'est possible de dupliquer des données d'une table dans la même table, je m'explique:
J'ai une table fiches(ID_fiche,libellé,ID_machine,...) avec 30 enregistrements et une table machines(ID_machine,libellé).
Chaque machine est composé de 30 fiches, les memes 30 a chaque fois mais avec des données différentes a l'intérieur.
Il faudrait donc que lorsque que je crée une nouvelle machine 30 nouvelles fiches vierges soit dupliquer (même libellé) depuis les 30 premiers enregistrement mais avec l'ID de la nouvelle machine !
Je cherche aussi un moyen plus simple mais j'ai pas encore trouvé , n'hesitez pas a faire part de vos suggestions. Merci d'avance.

Cordialement
LegendPC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 14h48   #2
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
regarde vers la fonction SQL Insert Into ...
Exemple :
Code :
Insert Into tables Values val-col1, val-col2, valcol3 ...
ou
Code :
Insert Into tables1 Select Valtable2 As Valtable1; Valtable2 As Valtable1 ... From Tables2
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 11h46   #3
Invité de passage
 
Inscription : mai 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 3
Points : 0
Points : 0
Merci de votre réponse j'ai donc commencé mais je me suis retrouvé encore bloqué:

Code sql :
1
2
3
4
5
6
INSERT INTO Fiches ( ID_Machine, Libellé_Fiche )
SELECT Machines.ID_machine, "blabla" AS Expr2
FROM Machines
INSERT INTO Fiches ( ID_Machine, Libellé_Fiche )
SELECT Machines.ID_machine, "blablabla" AS Expr1
FROM Machines;
Problème ==> apparement il est pas d'accord que j'enchaine deux insert into a la suite, avez vous une solution? Il me dit "Erreur de syntaxe dans la clause from"
LegendPC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 13h11   #4
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
Effectivement tu ne peut faire que un seul Insert Into
Mon conseil serais de créer une fonction en VBA que tu appellerais sur appui d'un bouton par exemple de ce type la

Code :
1
2
Docmd.OpenRequery(Requete1)
DoCmd.OpenRequery(Requete2)
ou encore

Code :
1
2
DoCmd.RunSQL("Insert Into .......")
DoCmd.RunSQL("Insert Into ......"
N'hesite pas !!
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 20h58   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2003
Messages : 25
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 25
Points : 12
Points : 12
si tu ne veux pas avoir a ecrire 30 fois la requete tu peux faire une boucle et utiliser un variable basee sur le compteur pour changer la valeur a inserer.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
dim i as integer
dim SQL As string
dim mavariable(30) as variant
 
mavariable(1) = "blabla"
mavariable(2) = "blablabla"
...
mavariable(30) = "blablablabla"
 
i =1
 
SQL = "INSERT INTO Fiches ( ID_Machine, Libellé_Fiche )
SELECT Machines.ID_machine,'" &  mavariable(i) & "' AS Expr
FROM Machines"
 
do until i = 30
 
Docmd.run(SQL)
 
loop
ericain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 20h59   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2003
Messages : 25
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 25
Points : 12
Points : 12
j ai oublie le i = i + 1 avant le loop.

sinon ta requete ne s arretera jamais.
ericain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 15h18   #7
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
Plus logiquement il faut utiliser une boucle for
Code :
1
2
3
4
For i = 0 To 30
SQL = "........ mavarriable(i) ......."
DoCmd.RunSQL(SQL)
Next
Vu que tu sais ou tu doit t'arreter ...
Il faut eviter d'utiliser tous ce qui loop ou while, on peut souvent remplacer ce genre de formule par du if ou du for !!
Au moins on ai sur que ca s'arrete un jour ou l'autre !
theuma 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 16h18.


 
 
 
 
Partenaires

Hébergement Web