![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: juin 2005
Messages: 266
|
J'ai besoin de créer une base access à partir de fichiers XML.
Pour cela, j'ai pu faire un code qui crée cette base, puis importe un fichier XML, puis referme tout proprement. Il est testé et fonctionne correctement : Code :
Dim oAccess, oDb, fso 'creation de l'objet Microsoft Access Set oAccess = CreateObject("Access.application") 'laisser Access invisible oAccess.Visible = False 'création d'une nouvelle base de données Access oAccess.newCurrentDatabase (repFic & nomBase) 'ouverture de la base de données fraichement créée Set oDb = oAccess.CurrentDB() 'Lancement de la méthode d'importation du fichier XML oAccess.importXML(nomDuFichierXMLAImporter) 'Fermeture de la base de données oAccess.CloseCurrentDataBase 'Fermeture d'Access oAccess.Quit 'Nettoyage des variables instanciées Set oDb = Nothing Set oAccess = Nothing J'ai donc tenté de faire : Code :
'listeFichiersAImporter est un tableau contenant tous les fichiers xml qui 'doivent être importés dans la base For indice = 0 To UBound(listeFichiersAImporter) oAccess.importXML(listeFichiersAImporter(indice)) Next Comment puis-je procéder pour que l'import se fasse dans la même table ? Dernière modification par abertaud ; 19/04/2007 à 14h07 |
|
|
|
|
|
#2 (permalink) |
![]() ![]() |
Bonjour,
Il n'y a apparement pas d'option pour écrire dans une table existante. Mon conseil est : Après l'insertion de la 2ème table qui va prendre le nom de Table1 exécuter une requete pour copier les données dans Table, puis effacer Table1. Après il s'agit d'un éternel recommencement... Désolé pour cette bricosolution. Cordialement,
__________________
questions techniques par MP >>> poubelle ! -- "Jeux dés teste le lent gagé c'est messe ! Hein qu'on prêt en cible nom ?" les Sources ACCESS Tutoriels et Applications gratuites | Mode Page ACCESS 2007 | Sécurité ACCESS | Appels formulaires | Optimisez vos applications Visitez AccesSite "Access ne nous rend que ce qu'on lui donne..." loufab Roulez autrement roulez en Trans Am. |
|
|
|
|
|
#3 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: juin 2005
Messages: 266
|
Bien lorsque l'importation est faite "à la main" via l'interface de Microsoft Access 2002 "Fichier>Données externes>Importer", il est possible de cocher en options d'importation : "Ajouter des données aux tables existantes"
Donc je pense que cette option doit pouvoir s'activer dans un script VB. Mais j'ai un souci : je ne parviens pas à trouver d'informations sur la fonction importXML dans l'aide d'Access. La seule chose que je suis donc arrivé à faire, c'est de fabriquer un seul fichier XML à partir de tous ceux qui m'interessent, mais c'est plutot lourd à mettre en place, et vive la maintenance qui s'en suivra lorsque l'application sera amenée à évoluer... |
|
|
|
|
|
#4 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: juin 2005
Messages: 266
|
Au final j'ai pu résoudre mon problème. Comme d'hab, je mets à jour le post qui pourrait être utile à quelqu'un d'autre.
Code :
Sub LancerImportationXML(base, fichiersImport) 'Définition des variables acStructureOnly = 0 'importer la structure de la base uniquement acAppendData = 2 'importer les données à la suite de celles qui seraient éventuellement déjà présente dans les tables 'Importation de la structure des données Call base.ImportXML(fichiersImport(0), acStructureOnly) 'Importation de chacun des fichiers For i = 0 To UBound(fichiersImport) Call base.ImportXML(fichiersImport(i), acAppendData) Next End Sub NOTE IMPORTANTE : certains schémas XSD impliquent une création automatique de champs xxxxxxKey dans Access. Je ne maitrise pas du tout les conditions qui font que ces champs sont créés mais, s'il en existe, l'importation foirera car des redondances seront créées au niveau de ces champs, qu'Access a défini comme clé (chaque importation fait démarrer la numérotation des ces champs à 0....) |
|
|
|
![]() |
![]() |
||
[Automation]Importation fichiers XML (ok pour 1 fichier, pb au dela)
|
||
| Outils de la discussion | |
|
|