Hej, Här är ett exempel på hur jag löst ett liknande problem. Tabellen produkt uppdateras i en datagrid. Jag loopar igenom datasetet och kollar rowstate. I ditt fall är det i första fallet modified och i andra fallet added. Man kan använda Updatemetoden i dataadaptern men jag gillar bättre att styra det hela själv.Dataset och update, insert fråga
jag sitter här och försöker förstå mig på .net. Men hittar inga bra lösningar på min hantering med databasen.
Är jag ute och cyklar när man ska använda ett dataset för att update och insert? (Får det aldrig till att fungera)
Ett ex på det jag vill göra skulle vara:
tabell kund.
ID, FNamn, ENamn
data i databasen:
1, Magnus, Edvardsson
2, X, Y
3, A, A
Data som ska in:
(ID, FNamn, ENamn)
1,Magnus, Nilsson
4, B, B
1. Det första jag ska göra är att ta ut dessa med en select sats till ett dataset.
2. Loopa genom mitt dataset och gämföra om det finns med redan.
1. Fall 1, så finns id 1, då ska jag göra en update i datasetet
2. Fall 2, så finns inte id 4 utan man ska göra ett insert till datasetet.
3. När man sedan är nöjd med datan och gått genom all data som ska uppdateras/insertas. Vill jag köra en update emot databasen med den nya datan i datasetet?
Är mitt tankesätt rätt? Detta är vad jag har kunna läsa mig till men jag har inte kunna lösa det på något bra sätt ännu.
När jag ska uppdatera som i fall 1 ovan, vilket kommando ska jag använda mig av då?
När jag ska inserta, fall 2 ovan, vilket kommando är det som jag ska använda mig av då?
Jag har alltid fått att det klagar på när jag ska skicka tillbaka datasetet till databasen.
finns det någon som har ett litet exempel på hur man skulle kunna lösa ovan nämda? Eller bara något som leder mig i rätt riktning. Kanske någon bra länk som ni har på lager.
Skulle vara tacksam för hjälp.
Mvh MagnusSv: Dataset och update, insert fråga
mvh Claes
Dim minConn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=nibkund.mdb;")
minConn.Open()
For Each dr As DataRow In myDataSet.Tables(0).Rows
Select Case dr.RowState
Case DataRowState.Added
Dim myCom As New OleDbCommand("INSERT INTO produkt (produkt,kund,datum) VALUES ('" & dr("produkt") & "', " & txt0.Text & ", #" & dr("datum") & "#)", minConn)
Try
myCom.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Case DataRowState.Deleted
dr.RejectChanges()
Dim myCom As New OleDbCommand("DELETE * FROM produkt WHERE id = " & dr("id"), minConn)
Try
myCom.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Case DataRowState.Modified
Dim myCom As New OleDbCommand("UPDATE produkt SET produkt='" & dr("produkt") & "', kund=" & txt0.Text & ", datum=#" & dr("datum") & "# WHERE id = " & dr("id"), minConn)
Try
myCom.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Case DataRowState.Detached
End Select
Next
minConn.Close()