Hallo,
Ik wil graag een XML bestand importeren in een Access database. In de database heb ik de divers tabellen en relaties aangemaakt.
Een schema (xsd) controleert het XML bestand. Als het xml bestand voldoet, mag het worden geïmporteerd.
Aangezien ik dit in een later stadium door een webservice wil laten uitvoeren, kan ik geen gebruik maken van Automation
(Microsoft.Office.Interop.Access.Application)
Nu ben op zoek naar een alternatief, en uitgekomen op OleDB. Dit is de code welke ik op dit moment heb:
public sub importXMLintoDatabase
Dim strConnection As String
Dim objDataSet As New DataSet
Dim objConnection As OleDbConnection
Dim objAdapter As OleDbDataAdapter
Dim intI As Integer
Dim ds As New DataSet
Dim streamRead As New System.IO.FileStream("C:\NTB100514_07_22_2009_225551.xml", System.IO.FileMode.Open)
ds.ReadXml(streamRead)
streamRead.Close()
If ds.Tables.Count > 0 Then
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "c:\PC Auditer.accdb"
objConnection = New OleDbConnection(strConnection)
objConnection.Open()
objAdapter = New OleDbDataAdapter()
Dim cb As New OleDbCommandBuilder(objAdapter)
For intI = 0 To ds.Tables.Count - 1
If ds.Tables(intI).Rows.Count > 0 Then
DataGridView1.DataSource = ds.Tables(intI)
objAdapter.SelectCommand = New OleDbCommand("SELECT * FROM [" + ds.Tables(intI).TableName + "] ", objConnection)
objAdapter.Fill(ds, ds.Tables(intI).TableName.ToString)
objAdapter.UpdateCommand = cb.GetUpdateCommand()
objAdapter.Update(ds, ds.Tables(intI).TableName.ToString)
End If
Next
objConnection.Close()
De eerste keer wordt er netjes een rij weggeschreven, maar de tweede keer (de volgende tabel) genereert een foutmelding.
"Missing the DataColumn 'ID' in the DataTable 'Shares' for the SourceColumn 'ID'" Dit terwijl de tabel 'Shares' geen kolom ID heeft, maar wel. middels kolom ID-Shares, gekoppeld is aan de kolom ID van de voorgaande tabel SOS.
Zou iemand me wat verder op weg willen helpen?
Alvast bedankt,
Jurgen
Ik wil graag een XML bestand importeren in een Access database. In de database heb ik de divers tabellen en relaties aangemaakt.
Een schema (xsd) controleert het XML bestand. Als het xml bestand voldoet, mag het worden geïmporteerd.
Aangezien ik dit in een later stadium door een webservice wil laten uitvoeren, kan ik geen gebruik maken van Automation
(Microsoft.Office.Interop.Access.Application)
Nu ben op zoek naar een alternatief, en uitgekomen op OleDB. Dit is de code welke ik op dit moment heb:
public sub importXMLintoDatabase
Dim strConnection As String
Dim objDataSet As New DataSet
Dim objConnection As OleDbConnection
Dim objAdapter As OleDbDataAdapter
Dim intI As Integer
Dim ds As New DataSet
Dim streamRead As New System.IO.FileStream("C:\NTB100514_07_22_2009_225551.xml", System.IO.FileMode.Open)
ds.ReadXml(streamRead)
streamRead.Close()
If ds.Tables.Count > 0 Then
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "c:\PC Auditer.accdb"
objConnection = New OleDbConnection(strConnection)
objConnection.Open()
objAdapter = New OleDbDataAdapter()
Dim cb As New OleDbCommandBuilder(objAdapter)
For intI = 0 To ds.Tables.Count - 1
If ds.Tables(intI).Rows.Count > 0 Then
DataGridView1.DataSource = ds.Tables(intI)
objAdapter.SelectCommand = New OleDbCommand("SELECT * FROM [" + ds.Tables(intI).TableName + "] ", objConnection)
objAdapter.Fill(ds, ds.Tables(intI).TableName.ToString)
objAdapter.UpdateCommand = cb.GetUpdateCommand()
objAdapter.Update(ds, ds.Tables(intI).TableName.ToString)
End If
Next
objConnection.Close()
De eerste keer wordt er netjes een rij weggeschreven, maar de tweede keer (de volgende tabel) genereert een foutmelding.
"Missing the DataColumn 'ID' in the DataTable 'Shares' for the SourceColumn 'ID'" Dit terwijl de tabel 'Shares' geen kolom ID heeft, maar wel. middels kolom ID-Shares, gekoppeld is aan de kolom ID van de voorgaande tabel SOS.
Zou iemand me wat verder op weg willen helpen?
Alvast bedankt,
Jurgen