Import txt alimentant plusieurs tables Access
Fermé
Junior75002
Messages postés
4
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
3 janvier 2011
-
3 janv. 2011 à 12:50
blux Messages postés 26533 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 - 4 janv. 2011 à 09:21
blux Messages postés 26533 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 - 4 janv. 2011 à 09:21
A voir également:
- Import txt alimentant plusieurs tables Access
- Tables des matières word - Guide
- Acer quick access - Forum Logiciels
- Tables ascii - Guide
- Access appdata - Guide
- Oracle liste des tables ✓ - Forum Oracle
3 réponses
blux
Messages postés
26533
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 décembre 2024
3 317
3 janv. 2011 à 12:55
3 janv. 2011 à 12:55
Salut,
il y a une solution plus simple.
Tu importes tes données dans une table temporaire.
Ensuite, tu passes une série de requêtes qui vont avoir pour source ta table temporaire et grâce à un WHERE tu pourras faire des INSERT INTO.
INSERT INTO nomenclature (champ1, champ2) SELECT champ1, champ2 FROM table_tempo WHERE identifiant = "#100"
INSERT INTO infos_cde (champ1, champ2) SELECT champ1, champ2 FROM table_tempo WHERE identifiant = "#300"
il y a une solution plus simple.
Tu importes tes données dans une table temporaire.
Ensuite, tu passes une série de requêtes qui vont avoir pour source ta table temporaire et grâce à un WHERE tu pourras faire des INSERT INTO.
INSERT INTO nomenclature (champ1, champ2) SELECT champ1, champ2 FROM table_tempo WHERE identifiant = "#100"
INSERT INTO infos_cde (champ1, champ2) SELECT champ1, champ2 FROM table_tempo WHERE identifiant = "#300"
Junior75002
Messages postés
4
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
3 janvier 2011
3 janv. 2011 à 13:08
3 janv. 2011 à 13:08
Bonjour,
Merci pour cette réponse extrêmement rapide.
En réalité j'utilise déjà cette méthode, mais je trouve que cela serait plus simple et plus propre de faire un import sélectif.
Car je doit importer trois fichier CDE_1140........ toute les heures (3 flux différents), mais aussi un fichier EXP_1140....... toute les heures.
Les 96 fichiers me sont livrés par mail, donc après avec une petite automatisation des traitements courriers Outlook j'espère pouvoir lui faire faire la manip automatiquement.
Cela évite ainsi les interventions humaines et donc limite les erreurs, surtout pour une tache aussi répétitive.
Encore un grand merci pour ton retour.
Julien
Merci pour cette réponse extrêmement rapide.
En réalité j'utilise déjà cette méthode, mais je trouve que cela serait plus simple et plus propre de faire un import sélectif.
Car je doit importer trois fichier CDE_1140........ toute les heures (3 flux différents), mais aussi un fichier EXP_1140....... toute les heures.
Les 96 fichiers me sont livrés par mail, donc après avec une petite automatisation des traitements courriers Outlook j'espère pouvoir lui faire faire la manip automatiquement.
Cela évite ainsi les interventions humaines et donc limite les erreurs, surtout pour une tache aussi répétitive.
Encore un grand merci pour ton retour.
Julien
blux
Messages postés
26533
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 décembre 2024
3 317
3 janv. 2011 à 13:35
3 janv. 2011 à 13:35
Le seul import selectif que je peux te proposer, c'est de lire ton fichier en vba et d'insérer les lignes en fonction de tes critères... mais ce n'est pas dit que cela ira plus vite...
Ou sinon, tu automatises toute la séquence en VBA : import, insert...
Ou sinon, tu automatises toute la séquence en VBA : import, insert...
Junior75002
Messages postés
4
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
3 janvier 2011
3 janv. 2011 à 14:49
3 janv. 2011 à 14:49
Merci pour votre réponse Blux,
Mais comment puis-je formuler dans mon code mon souhait de ventiler les lignes commençants par un #100 dans la table Nomenclature ; les lignes commençants par un #300 dans la table Infos_cde; ect........
Merci d'avance.
Julien
Mais comment puis-je formuler dans mon code mon souhait de ventiler les lignes commençants par un #100 dans la table Nomenclature ; les lignes commençants par un #300 dans la table Infos_cde; ect........
Merci d'avance.
Julien
blux
Messages postés
26533
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 décembre 2024
3 317
3 janv. 2011 à 14:58
3 janv. 2011 à 14:58
Le mieux est d'insérer les données dans une table, de la lire avec un recordset et d'y faire les traitements que l'on veut.
Mais je le répète, plusieurs requêtes à la queue-leu-leu sont la solution la plus simple.
Mais je le répète, plusieurs requêtes à la queue-leu-leu sont la solution la plus simple.
Junior75002
Messages postés
4
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
3 janvier 2011
3 janv. 2011 à 23:22
3 janv. 2011 à 23:22
Je me rends compte que je n'ai pas été assez précis ou bien confus dans mon précédent post.
Car je parviens à faire l'import du .text et par des requêtes à alimenter des Tables en fonction du code ligne.
Actuellement, avec un petit bout de code j'ouvre une boite de dialogue pour la sélection du fichier à importer et dans ce même code j'ai indiqué les « options » d'import, comme le choix du séparateur (Ici « | »).
Mais là où je bloque, c'est pour que les lignes alimentent les tables correspondant à leurs code de ligne et que chaque champ du fichier initial alimentent les champs correspondants des tables de la base de donnés.
Ci-dessous dans la première ligne le champ initial, dans la seconde le nom du champ dans la table, dans la troisième des valeurs exemples.
- Nomenclature (#100)
Champ1 Champ3 Champ4 Champ5
Code ligne Code Cava Date fichier Heure fichier
#100 1140 20100501 01:05:01
Pour cette table, nous n'importons pas les champs : 2, 6, 7, 8, 9, 10,11, 12, 13, 14
- Infos commandes (#300)
Champ1 Champ2 Champ3 Champ5
Code ligne N° de commande Date commande Date expédition
#300 CS2010040052 20100430 20100503
Champ6 Champ7 Champ10 Champ11 Champ12 Champ13
N° client Nom client Adresse 1 Adresse 2 CP Ville
8 PADD RENNES LA HAIE GAUTRAIS 35170 BRUZ
Champ14
Code pays
FR
Pour cette table, nous n'importons pas les champs : 4, 8, 9
- Détails commandes (#400)
Champ1 Champ2 Champ3 Champ4
Code ligne N° de commande N° de ligne commande Référence
#400 CS2010040052 1 805029
#400 CS2010040052 2 805028
#400 CS2010040052 3 808317
#400 CS2010040052 4 808455
Champ6
Quantité commandé
1
1
1
2
Pour cette table, nous n'importons pas les champs : 5, 7, 8, 9, 10, 11, 12, 13, 14
Je n'arrive pas à écrire la suite de mon code, qui comme je vous l'expliquez plus haut, m'ouvre une boite de dialogue me permettant la sélection du fichier et le choix du délimiteur.
Je me rends compte que je me suis lancé dans un projet qui dépasse mes maigres compétences.
En espérant que l'un de vous parviennes à éclairer ma lanterne, car comme vous l'aurais peut être compris je débute et je rencontre beaucoup de difficultés.
En espérant être plus claire, moins brouillon!!!!
Julien
Car je parviens à faire l'import du .text et par des requêtes à alimenter des Tables en fonction du code ligne.
Actuellement, avec un petit bout de code j'ouvre une boite de dialogue pour la sélection du fichier à importer et dans ce même code j'ai indiqué les « options » d'import, comme le choix du séparateur (Ici « | »).
Mais là où je bloque, c'est pour que les lignes alimentent les tables correspondant à leurs code de ligne et que chaque champ du fichier initial alimentent les champs correspondants des tables de la base de donnés.
Ci-dessous dans la première ligne le champ initial, dans la seconde le nom du champ dans la table, dans la troisième des valeurs exemples.
- Nomenclature (#100)
Champ1 Champ3 Champ4 Champ5
Code ligne Code Cava Date fichier Heure fichier
#100 1140 20100501 01:05:01
Pour cette table, nous n'importons pas les champs : 2, 6, 7, 8, 9, 10,11, 12, 13, 14
- Infos commandes (#300)
Champ1 Champ2 Champ3 Champ5
Code ligne N° de commande Date commande Date expédition
#300 CS2010040052 20100430 20100503
Champ6 Champ7 Champ10 Champ11 Champ12 Champ13
N° client Nom client Adresse 1 Adresse 2 CP Ville
8 PADD RENNES LA HAIE GAUTRAIS 35170 BRUZ
Champ14
Code pays
FR
Pour cette table, nous n'importons pas les champs : 4, 8, 9
- Détails commandes (#400)
Champ1 Champ2 Champ3 Champ4
Code ligne N° de commande N° de ligne commande Référence
#400 CS2010040052 1 805029
#400 CS2010040052 2 805028
#400 CS2010040052 3 808317
#400 CS2010040052 4 808455
Champ6
Quantité commandé
1
1
1
2
Pour cette table, nous n'importons pas les champs : 5, 7, 8, 9, 10, 11, 12, 13, 14
Je n'arrive pas à écrire la suite de mon code, qui comme je vous l'expliquez plus haut, m'ouvre une boite de dialogue me permettant la sélection du fichier et le choix du délimiteur.
Je me rends compte que je me suis lancé dans un projet qui dépasse mes maigres compétences.
En espérant que l'un de vous parviennes à éclairer ma lanterne, car comme vous l'aurais peut être compris je débute et je rencontre beaucoup de difficultés.
En espérant être plus claire, moins brouillon!!!!
Julien
blux
Messages postés
26533
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 décembre 2024
3 317
4 janv. 2011 à 09:21
4 janv. 2011 à 09:21
Mais là où je bloque, c'est pour que les lignes alimentent les tables correspondant à leurs code de ligne et que chaque champ du fichier initial alimentent les champs correspondants des tables de la base de donnés.
Ca se fait avec un INSERT INTO, où l'on sélectionne les champs à ajouter avec les valeurs qu'on souhaite, ce que j'ai expliqué plus haut...
Ca se fait avec un INSERT INTO, où l'on sélectionne les champs à ajouter avec les valeurs qu'on souhaite, ce que j'ai expliqué plus haut...