Ik ben bezig met een client(VB6) - server(.NET) applicatie. De client stuurt mij een xml file met daarin de nieuwe dataset. Nu wil ik deze veranderingen doorvoeren op de server.
Ik gebruik de volgende code om de client dataset te vullen.
Ik vul een tweede dataset, van de server. Dan vergelijk ik per rij (en zelfs per item) of ze verschillen. Maar volgens mij gaat er bij het inlezen van de client dataset iets mis.
Als ik de code run krijg ik een MySQL-foutmelding dat column1 niet gevonden kan worden. ASP herkent dus de items in de dataset niet.
Ik kan wel dsClient.WriteXML doen, dus ik d8 dat ik automatisch een correcte dataset had..... Verder denk ik dat het misschien iets te maken heeft met de eerste kolom in de tabel: autoNumber
vraag: Ik zou graag willen weten waarom ik niet de records uit mijn dataset kan lezen
Ik gebruik de volgende code om de client dataset te vullen.
Visual Basic .NET:
1
2
3
| Dim stream As New StreamReader("C:\itempdata2.xml") dsClient.ReadXml(stream) stream.Close() |
Ik vul een tweede dataset, van de server. Dan vergelijk ik per rij (en zelfs per item) of ze verschillen. Maar volgens mij gaat er bij het inlezen van de client dataset iets mis.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| Dim strConnection As String = ConfigurationSettings.AppSettings("ConnString") Dim cnn As New OdbcConnection(strConnection) Dim strSQL As String = "SELECT * FROM iTempData" Dim da As New OdbcDataAdapter(strSQL, cnn) Dim CmdBld As New OdbcCommandBuilder(da) Dim dsServer As New DataSet 'contains the original data Dim dsToInsert As New DataSet 'contains the rows that should be added Dim drServer As DataRow 'a single row in the server dataset da.Fill(dsServer, "ServerData") Dim intRow As Integer = 0 Dim intTemp As Integer = 0 Dim intItem As Integer = 0 'Item 0 is autonumber and is always different 'This loops checks how long the serverrows are similar to the clientrows For intRow = 0 To dsServer.Tables(0).Rows.Count - 1 drServer = dsServer.Tables(0).Rows(intRow) 'current row of server data drClient = dsClient.Tables(0).Rows(intRow) 'current row of client data While (intItem < drServer.ItemArray.Length - 1) If (drServer.Item(intItem) <> drClient.Item(intItem)) And intItem <> 0 Then Exit For End If intItem = intItem + 1 End While intTemp = intTemp + 1 Next For intRow = intTemp To dsClient.Tables(0).Rows.Count - 1 drClient = dsClient.Tables(0).Rows(intRow) 'current row of client data dsServer.Tables(0).ImportRow(drClient) 'the client rows are imported Next If dsServer.HasChanges(DataRowState.Added) Then dsToInsert = dsServer.GetChanges(DataRowState.Added) da.Update(dsToInsert, "ServerData") End If dsServer.AcceptChanges() |
Als ik de code run krijg ik een MySQL-foutmelding dat column1 niet gevonden kan worden. ASP herkent dus de items in de dataset niet.
Ik kan wel dsClient.WriteXML doen, dus ik d8 dat ik automatisch een correcte dataset had..... Verder denk ik dat het misschien iets te maken heeft met de eerste kolom in de tabel: autoNumber
vraag: Ik zou graag willen weten waarom ik niet de records uit mijn dataset kan lezen