繁体   English   中英

如何从Visual Basic中的DataGridView更新Access DB

[英]How to update an Access DB from a DataGridView in Visual Basic

我正在使用visual basic创建一个库存应用程序,该应用程序使用Visual Studio中的Access数据库运行。 我可以很好地填充我的数据网格视图,但是当我尝试将新信息添加到数据网格视图中时,它没有正确编号,并且它不会附加我的数据库。

我已尝试使用表适配器进行绑定和更新。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    CustomersBindingSource.AddNew()

    Me.Validate()
    Me.CustomersTableAdapter.Update(Me.Database1DataSet.Customers)
    Me.CustomersBindingSource.EndEdit()
End Sub

这是我的代码:

Public Class Form1
    Private Sub enterbtn_Click(sender As Object, e As EventArgs) Handles enterbtn.Click
        If username.Text = "Tanner" And password.Text = "bmis365" Then
            GroupBox1.Visible = False
        Else
            MsgBox("Incorrect Username or Password, please try again.")
            username.Clear()
            password.Clear()
            username.Focus()
        End If
    End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    DataGridView1.CurrentCell = Nothing

    'This line of code loads data into the 'Database1DataSet.Customers' table. You can move, or remove it, as needed.

    Me.CustomersTableAdapter.Fill(Me.Database1DataSet.Customers)

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    'This is where my new info is to be appended into the database, once the button is clicked. 

    CustomersBindingSource.AddNew()

    Me.Validate()
    Me.CustomersTableAdapter.Update(Me.Database1DataSet.Customers)
    Me.CustomersBindingSource.EndEdit()
End Sub


Private Sub searchbtn_Click(sender As Object, e As EventArgs) Handles searchbtn.Click

    'The Following Code is from https://social.msdn.microsoft.com/Forums/vstudio/en-US/36c54726-4f49-4e15-9597-7b201ec13ae7/search-in-datagrid-using-textbox-vbnet-without-data-connectivity?forum=vbgeneral

    For Each row As DataGridViewRow In DataGridView2.Rows
        For Each cell As DataGridViewCell In row.Cells
            If Not IsNothing(cell.Value) Then
                If cell.Value.ToString.StartsWith(searchbar.Text, StringComparison.InvariantCultureIgnoreCase) Then
                    cell.Selected = True
                    DataGridView2.CurrentCell = DataGridView2.SelectedCells(0)

                End If
            End If
        Next
    Next
End Sub
End Class

我的输出最初有3行(编号为1,2和3),但通过应用程序添加的任何行都有数字-1,-2,-3等等。 此外,当我关闭程序并重新启动它时,我在DB文件中输入的原始行(1,2和3)仍然存在,但是通过我的应用程序添加的任何行都消失了。

这是进行更新的一种方法,以及一些其他常见的SQL操作/操作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM