After much frustration I was able to update my data store via code only.
Using the data adapter was the only way I was able to set up all the objects
written in my code. Basically, I cheated by creating an adapter and then
copy, paste, modify it's code to suite my needs. This was the end result:
Private sub updateTable( )
Dim myData As DataSet
'Command is a form level oledbcommand object
Dim Adapter1 As New OleDbDataAdapte r(Command)
myData = New DataSet()
myData = Me.DataGrid1.Da taSource
Dim Cno As OleDbConnection
Cno = New OleDbConnection (Me.strConnecti onString)
'************** *************** *************** ******
' here is where my copy, paste, modify code from
'adapter control starts
'************** *************** *************** *****
Adapter1.Update Command = New OleDbCommand()
'best way to get parameters and update string is to create them
'using an oledbdataadapte r control
Dim strUpdate As String = "UPDATE employee SET [Employee Number] = ?, [First
Name] = ?, [Last Name] = ? WHER" & _
"E ([Employee Number] = ?) AND ([First Name] = ? OR ? IS NULL AND [First
Name] IS" & _
" NULL) AND ([Last Name] = ? OR ? IS NULL AND [Last Name] IS NULL)"
With Adapter1.Update Command
..CommandText = strUpdate
..Connection = Cno
..Parameters.Ad d(New OleDbParameter( "Employee_Numbe r",
System.Data.Ole Db.OleDbType.Sm allInt, 0,
System.Data.Par ameterDirection .Input, False, CType(5, Byte), CType(0, Byte),
"Employee Number", System.Data.Dat aRowVersion.Cur rent, Nothing))
..Parameters.Ad d(New OleDbParameter( "First_Name ",
System.Data.Ole Db.OleDbType.Va rWChar, 25, "First Name"))
..Parameters.Ad d(New OleDbParameter( "Last_Name" ,
System.Data.Ole Db.OleDbType.Va rWChar, 25, "Last Name"))
..Parameters.Ad d(New OleDbParameter( "Original_Emplo yee_Number",
System.Data.Ole Db.OleDbType.Sm allInt, 0,
System.Data.Par ameterDirection .Input, False, CType(5, Byte), CType(0, Byte),
"Employee Number", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_First _Name",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"First Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_First _Name1",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"First Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_Last_ Name",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"Last Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_Last_ Name1",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"Last Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
End With
'************** *************** **********
'here is where it ends
'************** *************** **********
Try
Adapter1.Update (myData.Tables( 0))
Catch prob As OleDbException
MsgBox(prob.Mes sage)
End Try
end sub
I was never able to get the commandbuilder to work. I just think this is a
lot of coding where is previous version doing this in code was much simpler.
Have I just been spoiled by vb6 and it's simplicity?
Using the data adapter was the only way I was able to set up all the objects
written in my code. Basically, I cheated by creating an adapter and then
copy, paste, modify it's code to suite my needs. This was the end result:
Private sub updateTable( )
Dim myData As DataSet
'Command is a form level oledbcommand object
Dim Adapter1 As New OleDbDataAdapte r(Command)
myData = New DataSet()
myData = Me.DataGrid1.Da taSource
Dim Cno As OleDbConnection
Cno = New OleDbConnection (Me.strConnecti onString)
'************** *************** *************** ******
' here is where my copy, paste, modify code from
'adapter control starts
'************** *************** *************** *****
Adapter1.Update Command = New OleDbCommand()
'best way to get parameters and update string is to create them
'using an oledbdataadapte r control
Dim strUpdate As String = "UPDATE employee SET [Employee Number] = ?, [First
Name] = ?, [Last Name] = ? WHER" & _
"E ([Employee Number] = ?) AND ([First Name] = ? OR ? IS NULL AND [First
Name] IS" & _
" NULL) AND ([Last Name] = ? OR ? IS NULL AND [Last Name] IS NULL)"
With Adapter1.Update Command
..CommandText = strUpdate
..Connection = Cno
..Parameters.Ad d(New OleDbParameter( "Employee_Numbe r",
System.Data.Ole Db.OleDbType.Sm allInt, 0,
System.Data.Par ameterDirection .Input, False, CType(5, Byte), CType(0, Byte),
"Employee Number", System.Data.Dat aRowVersion.Cur rent, Nothing))
..Parameters.Ad d(New OleDbParameter( "First_Name ",
System.Data.Ole Db.OleDbType.Va rWChar, 25, "First Name"))
..Parameters.Ad d(New OleDbParameter( "Last_Name" ,
System.Data.Ole Db.OleDbType.Va rWChar, 25, "Last Name"))
..Parameters.Ad d(New OleDbParameter( "Original_Emplo yee_Number",
System.Data.Ole Db.OleDbType.Sm allInt, 0,
System.Data.Par ameterDirection .Input, False, CType(5, Byte), CType(0, Byte),
"Employee Number", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_First _Name",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"First Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_First _Name1",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"First Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_Last_ Name",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"Last Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
..Parameters.Ad d(New OleDbParameter( "Original_Last_ Name1",
System.Data.Ole Db.OleDbType.Va rWChar, 25,
System.Data.Par ameterDirection .Input, False, CType(0, Byte), CType(0, Byte),
"Last Name", System.Data.Dat aRowVersion.Ori ginal, Nothing))
End With
'************** *************** **********
'here is where it ends
'************** *************** **********
Try
Adapter1.Update (myData.Tables( 0))
Catch prob As OleDbException
MsgBox(prob.Mes sage)
End Try
end sub
I was never able to get the commandbuilder to work. I just think this is a
lot of coding where is previous version doing this in code was much simpler.
Have I just been spoiled by vb6 and it's simplicity?
Comment