OVH Cloud OVH Cloud

Tables A Copier

2 réponses
Avatar
kato
Bonjour =E0 tous,

Je d=E9veloppe une appli. pour ma boite. Je suis d'un niveau moyen et je=20
ne connais rien en prog. :((

J'ai plusieurs table en relations :
Table 1 en liaison avec une table 2 celle-ci en liaison avec une table=20
3.

TABLE 1
+ projet A
TABLE 2
+ sous-projet AA
TABLE 3
+ produit AA1
+ produit AA2
+ produit AA3

Comment copier le "projet A" de la "Table 1" =E0 nouveau dans la "Table=20
1" (en le renommant par exemple "projet A bis"), sachant que les donn=E9es
en relation se trouvant dans les "Table 2" et "Table 3" devront aussi=20
=EAtre copier dans leur tables respectives ????

En faite c'est pour modifier un "projet" tout en gardant le le projet=20
original (pour s=E9curit=E9).

Merci de vos aides pr=E9cieuses.
je cherche depuis 1 mois et je n'ai rien trouv=E9 sur le web.....

Kato

2 réponses

Avatar
J-Pierre
Bonjour Kato,

En fait, une instruction SQL INSERT ne permet d'insérer que dans une table à la fois. Il te faudra donc 3 requêtes ajout que tu
exécuteras dans l'ordre insertion table1, puis2, puis3, sinon, les insertions seront refusées pour cause d'intégrité référentielle.
Je ne sais pas comment tu veux déclencher ces insertions, mais il faudra vraisemblablement que tu utilises du code VBA soit dans ton
formulaire, soit dans un module. Voilà un exemple de code pour exécuter les requêtes qui est appelé en cliquant sur un bouton dans
un formulaire.. Je te joins aussi le code d'une des requêtes. Elle récupère les valeurs de variables dans les champs du formulaires.
Tu crées une nouvelle requête et tu colles le code en mode SQL et après, tu passes en mode création.

J-Pierre

Public Sub projets_tables_apres_insertion()
On Error GoTo projets_tables_apres_insertion_Err

DoCmd.Hourglass True
DoCmd.SetWarnings False

DoCmd.OpenQuery "R010_T020_infographie", acNormal, acAdd
DoCmd.Close acQuery, "R010_T020_infographie"

DoCmd.OpenQuery "R010_T021_infographie_adresse_livraison", acNormal, acAdd
DoCmd.Close acQuery, "R010_T021_infographie_adresse_livraison"

DoCmd.OpenQuery "R010_T024_infographie_taux_horaires", acNormal, acAdd
DoCmd.Close acQuery, "R010_T024_infographie_taux_horaires"

DoCmd.OpenQuery "R010_T026_infographie_impression", acNormal, acAdd
DoCmd.Close acQuery, "R010_T026_infographie_impression"

DoCmd.OpenQuery "R010_T027_infographie_taches", acNormal, acAdd
DoCmd.Close acQuery, "R010_T027_infographie_taches"

DoCmd.OpenQuery "R010_T030_infographie_factures", acNormal, acAdd
DoCmd.Close acQuery, "R010_T030_infographie_factures"

projets_tables_apres_insertion_Exit:

DoCmd.SetWarnings True
DoCmd.Hourglass False

Exit Sub

projets_tables_apres_insertion_Err:
MsgBox Error$
Resume projets_tables_apres_insertion_Exit

End Sub
_________________________________________
INSERT INTO T020_infographie ( T020_no_projet, T020_impression_qte_suppl, T020_PMQ_date_prevue, T020_BAT_date_prevue,
T020_LIV_date_prevue )
SELECT T001_projets.T001_no_projet, T905_informations_globales.T905_infographie_impression_qte_suppl,
[Forms]![F001_formulaire_cache]![R010_PMQdate] AS Expr1, [Forms]![F001_formulaire_cache]![R010_BATdate] AS Expr2,
[Forms]![F001_formulaire_cache]![R010_LIVdate] AS Expr3
FROM T001_projets LEFT JOIN T905_informations_globales ON T001_projets.T001_informations_globales =
T905_informations_globales.T905_cle_information
WHERE (((T001_projets.T001_no_projet)=[Forms]![F001_formulaire_cache]![R010_newDossier]));
____________________________________________
Avatar
Kato
merci beaucoup... :)
je vais essayer cela....

B-)

J-Pierre a présenté l'énoncé suivant :
Bonjour Kato,

En fait, une instruction SQL INSERT ne permet d'insérer que dans une table à
la fois. Il te faudra donc 3 requêtes ajout que tu exécuteras dans l'ordre
insertion table1, puis2, puis3, sinon, les insertions seront refusées pour
cause d'intégrité référentielle. Je ne sais pas comment tu veux déclencher
ces insertions, mais il faudra vraisemblablement que tu utilises du code VBA
soit dans ton formulaire, soit dans un module. Voilà un exemple de code pour
exécuter les requêtes qui est appelé en cliquant sur un bouton dans un
formulaire.. Je te joins aussi le code d'une des requêtes. Elle récupère les
valeurs de variables dans les champs du formulaires. Tu crées une nouvelle
requête et tu colles le code en mode SQL et après, tu passes en mode
création.

J-Pierre

Public Sub projets_tables_apres_insertion()
On Error GoTo projets_tables_apres_insertion_Err

DoCmd.Hourglass True
DoCmd.SetWarnings False

DoCmd.OpenQuery "R010_T020_infographie", acNormal, acAdd
DoCmd.Close acQuery, "R010_T020_infographie"

DoCmd.OpenQuery "R010_T021_infographie_adresse_livraison", acNormal,
acAdd
DoCmd.Close acQuery, "R010_T021_infographie_adresse_livraison"

DoCmd.OpenQuery "R010_T024_infographie_taux_horaires", acNormal, acAdd
DoCmd.Close acQuery, "R010_T024_infographie_taux_horaires"

DoCmd.OpenQuery "R010_T026_infographie_impression", acNormal, acAdd
DoCmd.Close acQuery, "R010_T026_infographie_impression"

DoCmd.OpenQuery "R010_T027_infographie_taches", acNormal, acAdd
DoCmd.Close acQuery, "R010_T027_infographie_taches"

DoCmd.OpenQuery "R010_T030_infographie_factures", acNormal, acAdd
DoCmd.Close acQuery, "R010_T030_infographie_factures"

projets_tables_apres_insertion_Exit:

DoCmd.SetWarnings True
DoCmd.Hourglass False

Exit Sub

projets_tables_apres_insertion_Err:
MsgBox Error$
Resume projets_tables_apres_insertion_Exit

End Sub
_________________________________________
INSERT INTO T020_infographie ( T020_no_projet, T020_impression_qte_suppl,
T020_PMQ_date_prevue, T020_BAT_date_prevue, T020_LIV_date_prevue )
SELECT T001_projets.T001_no_projet,
T905_informations_globales.T905_infographie_impression_qte_suppl,
[Forms]![F001_formulaire_cache]![R010_PMQdate] AS Expr1,
[Forms]![F001_formulaire_cache]![R010_BATdate] AS Expr2,
[Forms]![F001_formulaire_cache]![R010_LIVdate] AS Expr3
FROM T001_projets LEFT JOIN T905_informations_globales ON
T001_projets.T001_informations_globales =
T905_informations_globales.T905_cle_information
WHERE
(((T001_projets.T001_no_projet)=[Forms]![F001_formulaire_cache]![R010_newDossier]));
____________________________________________