Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
VB.Net,从DataGridView更新表时出现问题_Vb.net_Datagridview_Visual Studio 2017 - Fatal编程技术网

VB.Net,从DataGridView更新表时出现问题

VB.Net,从DataGridView更新表时出现问题,vb.net,datagridview,visual-studio-2017,Vb.net,Datagridview,Visual Studio 2017,这是我的第一篇帖子,请原谅我的错误! 我正在尝试将自己从VBA更新到VB.Net。使用Google等提供的大量帮助,除了尝试从DataGridView更新表外,我做得还不错。它只是不更新。我想要的是,一个单元格是更新的变化。到目前为止,我的代码如下所示(我已经尝试了各种生成器、表等,因此我的代码可能有一些冗余): 任何帮助都将不胜感激。这是SQL Server的,对吗。像这样试试 Imports System.Data.SqlClient Public Class Form1 Dim s

这是我的第一篇帖子,请原谅我的错误! 我正在尝试将自己从VBA更新到VB.Net。使用Google等提供的大量帮助,除了尝试从DataGridView更新表外,我做得还不错。它只是不更新。我想要的是,一个单元格是更新的变化。到目前为止,我的代码如下所示(我已经尝试了各种生成器、表等,因此我的代码可能有一些冗余):


任何帮助都将不胜感激。

这是SQL Server的,对吗。像这样试试

Imports System.Data.SqlClient
Public Class Form1
    Dim sCommand As SqlCommand
    Dim sAdapter As SqlDataAdapter
    Dim sBuilder As SqlCommandBuilder
    Dim sDs As DataSet
    Dim sTable As DataTable

    Private Sub load_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles load_btn.Click
        Dim connectionString As String = "Data Source=.;Initial Catalog=pubs;Integrated Security=True"
        Dim sql As String = "SELECT * FROM Stores"
        Dim connection As New SqlConnection(connectionString)
        connection.Open()
        sCommand = New SqlCommand(sql, connection)
        sAdapter = New SqlDataAdapter(sCommand)
        sBuilder = New SqlCommandBuilder(sAdapter)
        sDs = New DataSet()
        sAdapter.Fill(sDs, "Stores")
        sTable = sDs.Tables("Stores")
        connection.Close()
        DataGridView1.DataSource = sDs.Tables("Stores")
        DataGridView1.ReadOnly = True
        save_btn.Enabled = False
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

    End Sub

    Private Sub new_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles new_btn.Click
        DataGridView1.[ReadOnly] = False
        save_btn.Enabled = True
        new_btn.Enabled = False
        delete_btn.Enabled = False
    End Sub

    Private Sub delete_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delete_btn.Click
        If MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) = DialogResult.Yes Then
            DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
            sAdapter.Update(sTable)
        End If
    End Sub

    Private Sub save_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save_btn.Click
        sAdapter.Update(sTable)
        DataGridView1.[ReadOnly] = True
        save_btn.Enabled = False
        new_btn.Enabled = True
        delete_btn.Enabled = True
    End Sub
End Class

这是针对SQL Server的,对吗。像这样试试

Imports System.Data.SqlClient
Public Class Form1
    Dim sCommand As SqlCommand
    Dim sAdapter As SqlDataAdapter
    Dim sBuilder As SqlCommandBuilder
    Dim sDs As DataSet
    Dim sTable As DataTable

    Private Sub load_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles load_btn.Click
        Dim connectionString As String = "Data Source=.;Initial Catalog=pubs;Integrated Security=True"
        Dim sql As String = "SELECT * FROM Stores"
        Dim connection As New SqlConnection(connectionString)
        connection.Open()
        sCommand = New SqlCommand(sql, connection)
        sAdapter = New SqlDataAdapter(sCommand)
        sBuilder = New SqlCommandBuilder(sAdapter)
        sDs = New DataSet()
        sAdapter.Fill(sDs, "Stores")
        sTable = sDs.Tables("Stores")
        connection.Close()
        DataGridView1.DataSource = sDs.Tables("Stores")
        DataGridView1.ReadOnly = True
        save_btn.Enabled = False
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

    End Sub

    Private Sub new_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles new_btn.Click
        DataGridView1.[ReadOnly] = False
        save_btn.Enabled = True
        new_btn.Enabled = False
        delete_btn.Enabled = False
    End Sub

    Private Sub delete_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delete_btn.Click
        If MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) = DialogResult.Yes Then
            DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
            sAdapter.Update(sTable)
        End If
    End Sub

    Private Sub save_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save_btn.Click
        sAdapter.Update(sTable)
        DataGridView1.[ReadOnly] = True
        save_btn.Enabled = False
        new_btn.Enabled = True
        delete_btn.Enabled = True
    End Sub
End Class

经过两天的努力,我终于自己搞定了!此外,我还关注@ryguy72代码。以下是您可以采取的步骤:

步骤1:将DataGridView拖放到表单中

步骤2:在App.config中,在配置之间添加以下内容:

     <connectionStrings>
        <add name="ehsanConnection" connectionString="Data Source=XXX 
         ; User= XX; Password= XXX"  ProviderName="System.Data.SqlClient"/>
     </connectionStrings>
这里的要点是,我必须使用[Ehsan].[dbo].[Data],而不仅仅是表名“Data”。事实上,这样对我不起作用,它一直在抱怨

步骤4:如果要在更改datagridview中的某些记录后更新数据库,请使用以下代码:

   sAdapter.Update(sDs.Tables(0))

最重要的一点是:“您必须先在表中设置一个主键,否则它将不起作用!”

经过两天的工作,我终于自己找到了它!此外,我还关注@ryguy72代码。以下是您可以采取的步骤:

步骤1:将DataGridView拖放到表单中

步骤2:在App.config中,在配置之间添加以下内容:

     <connectionStrings>
        <add name="ehsanConnection" connectionString="Data Source=XXX 
         ; User= XX; Password= XXX"  ProviderName="System.Data.SqlClient"/>
     </connectionStrings>
这里的要点是,我必须使用[Ehsan].[dbo].[Data],而不仅仅是表名“Data”。事实上,这样对我不起作用,它一直在抱怨

步骤4:如果要在更改datagridview中的某些记录后更新数据库,请使用以下代码:

   sAdapter.Update(sDs.Tables(0))

最重要的一点是:“您必须首先在表中设置主键,否则它将不起作用!”

您对strName没有任何价值。串接字符串不是构建为SQL语句的方法。使用参数来避免错误并帮助防止SQL注入。对不起,我应该说,strName是从另一种形式引入的。网格中的数据显示正确。我可以编辑它,但它不会更新。你对strName没有任何价值。串接字符串不是构建为SQL语句的方法。使用参数来避免错误并帮助防止SQL注入。对不起,我应该说,strName是从另一种形式引入的。网格中的数据显示正确。我可以编辑它,但它就是不更新。太棒了!我创建了一个新的项目,表格等。它的工作,非常感谢我现在有一些我可以使用的东西。再次感谢,太棒了!我创建了一个新的项目,表格等。它的工作,非常感谢我现在有一些我可以使用的东西。再次非常感谢,谢谢你。在使用下面ryguy72的代码并稍加修改后,我使它工作起来了。我和你一样发现了主键。信息技术这和VBA有点不同,也许我已经用了很长时间了,习惯很难改掉!谢谢你,伊桑。在使用下面ryguy72的代码并稍加修改后,我使它工作起来了。我和你一样发现了主键。信息技术这和VBA有点不同,也许我已经用了很长时间了,习惯很难改掉!