xml import in access via VBA

Status
Niet open voor verdere reacties.

KVDB007

Nieuwe gebruiker
Lid geworden
19 jun 2015
Berichten
2
beste Access specialisten,

via de onderstaande code probeer ik verschillende xml bestanden te importeen (audit*.xml) in een access database.
wanneer ik de importopties op 1 (import data en structures) dan werkt het maar dan worden er in access telkens
nieuwe tabellen gemaakt en wordt de data van iedere xml apart in iedere tabel gezet.
Wanneer ik de importopties op 2 zet (append data) wordt de data echter niet in de bestaande tabelstructuur toegevoegd.
Er wordt ook geen "importerror" tabel aangemaakt.

Sub XML_inlezen2()

Dim c0, c1, importbestand, cv As String
Const acAppendData = 2
c0 = "C:\Audit_files_tst\import_folder\"
c1 = Dir(c0 & "audit*.xml")

Do Until c1 = ""



c0 = "C:\Audit_files_tst\import_folder\"
c1 = Dir(c0 & "audit*.xml")
importbestand = c0 & c1
cv = "C:\Audit_files_tst\verwerkt_folder\"

Application.ImportXML _
Datasource:=importbestand, _
Importoptions:=2

Name importbestand As cv & c1

c1 = Dir(c0 & "audit*.xml")

Loop
MsgBox "er zijn geen bestanden meer om te importeren", vbOKOnly

End Sub

Kan iemand me verder helpen om de data toch te kunnen toevoegen aan de bestaande tabellen.
ik kan enkele van de xml bestanden meesturen indien nodig.


alvast bedankt
Koen
 
Hallo Koen,

Allereerst natuurlijk welkom bij HelpMij :). Persoonlijk zou ik nooit data gelijk in een produktietabel laten wegschrijven, maar altijd een eigen tabel gebruiken bij de import. En na de import met toevoegqueries de geïmporteerde data in de produktietabel zetten. Op die manier heb je veel meer controle over de gegevens die je importeert. Bovendien heeft je produktietabel de juiste opmaak en veldinstellingen, wat je niet kunt zeggen van je importtabel. Het hele proces (importeren en toevoegen kun je vervolgens simpel automatiseren.
Omdat ik jouw techniek dus nooit gebruik, of dat zou willen, moet ik daar dus ook even mee gaan stoeien, en wat testbestanden zijn dan wel zo handig. Dus zet die er vooral bij.

Je kent de gebruiken binnen het forum als nieuw lid natuurlijk nog niet, dus bij deze de tip om code op te maken met ofwel de CODE knop (in het geavanceerde tekstvenster) ofwel vóór de code de tag [ CODE ] te typen (zonder de spaties) en áchter de code de tag [ /CODE ] (ook weer zonder spaties). Dan ziet de code er tenminste fatsoenlijk uit als code.
Tweede wat me opvalt: je definieert alleen de variabele 'cv' als string, en de rest als variant. Je bent toch niet toevallig in de veronderstelling dat je maar één keer (aan het eind van de regel) het type hoeft te declareren? Want zo werkt dat niet :). Je moet elke variabele apart vastleggen. Dus als al je variabelen tekst zijn (en dat zijn ze zo te zien) dan moet het zo:
Code:
Dim c0 As String, c1 As String, importbestand As String, cv As String
 
Beste Octafisch,

Bedankt voor de tips, ik ben idd niet zo vertrouwd met forums;).
Ik heb je tip even geprobeerd, maar dit is niet de oplossing.
Het probleem ligt hem ook niet zozeer dat de code niet werkt, maar in het feit dat
als ik de importopties op "2" zet (data toevoegen aan tabelstructuur).
Als ik dit doe wordt de code wel doorlopen en de bestanden worden verplaastst van de importfolder naar de
verwerktfolder, enkel in de tabelle wordt er niks toegevoegd.

Indien ik de opties op "1" zet (data en tabelstructuur importeren), dan lukt het wel. enkel worden mijn tabellen dan
voor iedere xml die ik importeer opnieuw bijgemaakt (wat niet de bedoeling is).

wanneer ik de xml's 1 per 1 via de wizzard importeer heb ik trouwens hezelfde probleem.
Ik denk dat het dus ergens aan een instelling in acces ligt waardoor dit niet correct werkt.

Mvg
koen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan