Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql vb.net属性访问必须分配给属性或在windows窗体中使用其值_Sql_Sql Server_Vb.net_Datagridview - Fatal编程技术网

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

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

我在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"))
错误:

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


你不觉得

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。请参阅此链接