vb.net属性访问必须分配给属性或在Windows窗体中使用其值

时间:2013-12-22 13:46:29

标签: 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.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"))

错误:

  

属性访问必须分配给属性或使用其值。

1 个答案:

答案 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为单个表生成命令,而不是像您一样为连接表生成命令。你必须明确设置更新命令。