Tycker att jag gör allt enl. den information jag kan hitta på nätet, även om den informationen kan variera en hel del. Visserligen är JAG inte det minsta intresserad av MySQL ;) men någon annan kan nog vara sugen på att veta hur... Lite kanske nått i det ..... :o)Updatera MySQL Databas från Dataset via Adapter ...... strul
Vad som händer är att adapterns tabellstruktur verkar ändras efter fill då jag vid updatekommandot får meddelande om en tabell i adaptern som inte finns i datasettet .....
Bifogar den aktuella koden där de publica variablerna daXX = dataadapter och cbXX är commandsbuilder....
Följande i en modul ......
<code>
Public Sub make_dsOrder()
Dim myDS As New DataSet
Dim myAdapt As New MySqlDataAdapter
conKD.Open()
Try
daMarkis = myAdapt
'MARKIS
daMarkis.SelectCommand = New MySqlCommand("SELECT * FROM order_markis WHERE order_id = 0", conKD)
cbMarkis = New MySqlCommandBuilder(daMarkis)
daMarkis.MissingSchemaAction = MissingSchemaAction.AddWithKey
daMarkis.FillSchema(myDS, SchemaType.Mapped)
daMarkis.Fill(myDS, "order_markis")
daPersienn = myAdapt
'PERSIENN
daPersienn.SelectCommand = New MySqlCommand("SELECT * FROM order_persienn WHERE order_id = 0", conKD)
cbPersienn = New MySqlCommandBuilder(daPersienn)
daPersienn.MissingSchemaAction = MissingSchemaAction.AddWithKey
daPersienn.FillSchema(myDS, SchemaType.Mapped)
daPersienn.Fill(myDS, "order_persienn")
daPlisse = myAdapt
'PLISSE
daPlisse.SelectCommand = New MySqlCommand("SELECT * FROM order_plisse WHERE order_id = 0", conKD)
cbPlisse = New MySqlCommandBuilder(daPlisse)
daPlisse.MissingSchemaAction = MissingSchemaAction.AddWithKey
daPlisse.FillSchema(myDS, SchemaType.Mapped)
daPlisse.Fill(myDS, "order_plisse")
daDuk = myAdapt
'DUK
daDuk.SelectCommand = New MySqlCommand("SELECT * FROM order_duk WHERE order_id = 0", conKD)
cbDuk = New MySqlCommandBuilder(daDuk)
daDuk.MissingSchemaAction = MissingSchemaAction.AddWithKey
daDuk.FillSchema(myDS, SchemaType.Mapped)
daDuk.Fill(myDS, "order_duk")
daRows = myAdapt
'ROWS (här läggs även tillbehör)
daRows.SelectCommand = New MySqlCommand("SELECT * FROM order_rows WHERE order_id = 0", conKD)
cbRows = New MySqlCommandBuilder(daRows)
daRows.MissingSchemaAction = MissingSchemaAction.AddWithKey
daRows.FillSchema(myDS, SchemaType.Mapped)
daRows.Fill(myDS, "order_rows")
dsOrder = myDS.Clone
myDS = Nothing
Catch ex As Exception
MsgBox("Fel vid hämtning av ordermall för lokal datalagring !" & vbCrLf & ex.Message)
myDS = Nothing
conKD.Close()
End Try
conKD.Close()
End Sub
</code>
Följande i ett formulär efter att datasetet blivit fyllt med information ....
<code>
Private Sub regOrder()
conKD.Open()
Try
daMarkis.Update(dsOrder, "order_markis")
dsMarkis = Nothing
Catch ex As Exception
MsgBox("Fel registrering av markisdata till databas !" & vbCrLf & ex.Message)
conKD.Close()
End Try
Exit Sub
'stänger connection
conKD.Close()
End Sub
</code>Sv: Updatera MySQL Databas från Dataset via Adapter ...... strul
/mickeSv: Updatera MySQL Databas från Dataset via Adapter ...... strul
Ett rätt elementärt fel vilket inte är ovanligt i mitt fall.... suck
Då jag överför ett objekt till ett annat (daMarkis = myAdapt) så blir dom ju spegelbilder av varann.
Detta gör att när jag lägger till nästa tex. (dsPersienn = myAdapt) så blir det som en append, dvs tabellstrukturen bara byggs på.
Så min lösning var att lägga adaptrarna i en egen class och skippade överföringen.