Sql vb.net属性访问必须分配给属性或在windows窗体中使用其值
我在vb.net windows应用程序中工作 在我的加载事件中,我给出了这样的代码,用于将数据从不同的表加载到我的datagridview 为此,我给出了如下代码:Sql vb.net属性访问必须分配给属性或在windows窗体中使用其值,sql,sql-server,vb.net,datagridview,Sql,Sql Server,Vb.net,Datagridview,我在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.m
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"))
错误:
属性访问必须分配给属性或使用其值
你不觉得
da.UpdateCommand(ds.Tables("MyTable"))
你应该做什么
da.Update(ds.Tables("MyTable"))
da.UpdateCommand是一个属性而不是一个方法,您可以使用它来设置更新命令,就像使用选择命令一样
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
还要注意
在调用填充之前,必须设置SelectCommand属性
DataAdapter的方法。InsertCommand、UpdateCommand或
必须在的更新方法之前设置DeleteCommand属性
根据对数据所做的更改,将调用DataAdapter
在数据表中。例如,如果已添加行,则
在调用Update之前,必须设置InsertCommand。更新何时启动
处理插入、更新或删除的行时,DataAdapter使用
处理操作的相应命令属性
如果调用了Update,但不存在用于
特定更新(例如,对于已删除的行,没有DeleteCommand),一个
异常被抛出
还请注意,您只能使用为单个表生成命令,而不能像以前那样为已联接的表生成命令。您必须显式设置update命令。如果我这样给出get错误:对多个基表不支持动态SQL生成。这意味着您需要显式设置updatecommand(或insertcommand,deleteCommand,请参阅edit)属性,因为它无法动态生成更新所需的SQL。请参阅此链接