[Access] Requête de mise à jour entre deux tables

Messages postés
1
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
7 juillet 2003
- - Dernière réponse : cs_dragon
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
- 7 juil. 2003 à 19:06
Bonjour, je souhaite importer des donnees de excel vers access avec mise a jour. On m'a dit d'essayer avec une requete de mise a jour avec deux tables identiques. Kom je suis débutant en access je ne sais pas si c la meilleure solution, donc si vous pouvez me conseiller autre chose c génial car je bloque là dessus depuis 3 jours.

Ce que je veux faire en fait, c pouvoir quand je le souhaite récupérer des données d'une feuille excel vers ma table Access avec une mise à jour des informations entre deux imports de excel vers access. A partir du moment ou je rentre de nouvelles lignes ds ma table excel, ou ke je fais une modif sur une ligne existante (je change une valeur par exemple) , je veux que cela se répercutte dans ma table access. Mais je n'y parviens tjrs pas :(

J'avais réussi grace a une macro a importer mes données de excel vers acces les unes apres les autres c a dir que les lignes de mon second import se mettent a la suite de celle du premier. Le pb c que cela me rajoute des lignes pour rien. En effet, lors du second import, certaines lignes dont g modifié une vlaeur par exemple vont se mettrent a la suite des autres. Alors que c ke je veux c ke, kan je fais un nouvel import, si les produits importés sont nouveaux (c ma colonne "Libellé"), ils se mettent a la suite des autres; mais si le libellé existent deja alors il faudrait qu'il écrase l'ancienne ligne avec les anciennes valuers.

Voilà, si kelkun peut me renseigner je le remercie d'avance.
Afficher la suite 

3 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
24
0
Merci
-------------------------------
Réponse au message :
-------------------------------

> Bonjour, je souhaite importer des donnees de excel vers access avec mise a jour. On m'a dit d'essayer avec une requete de mise a jour avec deux tables identiques. Kom je suis débutant en access je ne sais pas si c la meilleure solution, donc si vous pouvez me conseiller autre chose c génial car je bloque là dessus depuis 3 jours.
>
> Ce que je veux faire en fait, c pouvoir quand je le souhaite récupérer des données d'une feuille excel vers ma table Access avec une mise à jour des informations entre deux imports de excel vers access. A partir du moment ou je rentre de nouvelles lignes ds ma table excel, ou ke je fais une modif sur une ligne existante (je change une valeur par exemple) , je veux que cela se répercutte dans ma table access. Mais je n'y parviens tjrs pas :(
>
> J'avais réussi grace a une macro a importer mes données de excel vers acces les unes apres les autres c a dir que les lignes de mon second import se mettent a la suite de celle du premier. Le pb c que cela me rajoute des lignes pour rien. En effet, lors du second import, certaines lignes dont g modifié une vlaeur par exemple vont se mettrent a la suite des autres. Alors que c ke je veux c ke, kan je fais un nouvel import, si les produits importés sont nouveaux (c ma colonne "Libellé"), ils se mettent a la suite des autres; mais si le libellé existent deja alors il faudrait qu'il écrase l'ancienne ligne avec les anciennes valuers.
>
> Voilà, si kelkun peut me renseigner je le remercie d'avance.
>
>
>
>
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
24
0
Merci
Il faut que tu importe dans une table vide d'access la table excel
ou tu lies la table excel a la base access.
(si c'est possible?)

--> toutes les données dans access.

Ensuite tu fais la difference entre les deux tables.
Access ne connait pas minus donc il faut utiliser les sous requetes IN et not in.

rs1 = "select * from table_excel where id_cle not in (select id_cle from table_access)"

--> rs1 = nouveau enr
--> insertion de ces enregistrements

rs2 = "select * from table_excel where id_cle in (select id_cle from table_access)"

--> rs2 = nouveau enr
--> MAJ de ces enregistrements

Probelemes maj de tous les enrs donc il faut peut etre utiliser des tests si tu veux gagner aux niveaux performances.

vider la table excel importée.

Voila

(le message vide est du a un pb vbfrance je pense ca coince des fois sur form ajout.aspx :-???)
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
3
0
Merci
la meilleru façon, c'est avec un insert into

Currentdb.execute("insert into BD select * from BDEXCEL where not in ((select id from BD))");

si j'ai bien compris c'est ça que tu cherches, transféré tout les champs qui ne se trouve pas déjà dans ta base de donnée