我在vb.net windows应用程序中工作
在我的加载事件中,我提供了这样的代码,用于将数据从不同的表加载到我的datagridview。
为此我给出了这样的代码:
Dim da As New SqlDataAdapter
Dim cmd As New SqlCommand("select M.Model,c.Colname,ma.Make from Model_tbl M join Color_tbl C on c.colid=M.mdlid join Make_tbl ma on ma.mkid=c.colid where mdlid=5", con.connect)
Dim builder As SqlClient.SqlCommandBuilder = New SqlCommandBuilder(da)
da.SelectCommand = cmd
da.Fill(ds, "MyTable")
If (ds.Tables(0).Rows.Count > 0) Then
DGV.DataSource = ds.Tables("MyTable")
End If
单击更新按钮时,我想从我的datagridview更新数据到不同的表..所以我在更新按钮事件中编写了这样的代码..
Me.Validate()
da.UpdateCommand(ds.Tables("MyTable"))
Me.ds.AcceptChanges()
但我在这一行中遇到错误:
da.UpdateCommand(ds.Tables("MyTable"))
错误:
属性访问必须分配给属性或使用其值。
答案 0 :(得分:1)
da.UpdateCommand(ds.Tables("MyTable"))
你应该做的
da.Update(ds.Tables("MyTable"))
da.UpdateCommand属性不是方法,您可以将其用于set the update command
,就像使用select command
Dim cmd As New SqlCommand("select M.Model,c.Colname,ma.Make from Model_tbl M join Color_tbl C on c.colid=M.mdlid join Make_tbl ma on ma.mkid=c.colid where mdlid=5", con.connect)
Dim builder As SqlClient.SqlCommandBuilder = New SqlCommandBuilder(da)
da.SelectCommand = cmd
还要注意
在调用Fill之前,必须先设置SelectCommand属性 DataAdapter的方法。 InsertCommand,UpdateCommand或 必须在Update方法之前设置DeleteCommand属性 调用DataAdapter,具体取决于对数据所做的更改 在DataTable中。例如,如果已添加行,则 必须在调用Update之前设置InsertCommand。当更新时 处理DataAdapter使用的插入,更新或删除的行 用于处理操作的相应Command属性。
如果调用Update并且a不存在相应的命令 特别更新(例如,删除行没有DeleteCommand),a 抛出异常。
另请注意,您只能使用CommandBuilder为单个表生成命令,而不是像您一样为连接表生成命令。你必须明确设置更新命令。