从Datagridview保存并更新到Access数据库

时间:2016-03-20 16:02:56

标签: vb.net datagridview ms-access-2010

我已经在这个问题上摸索了一段时间了。我正在尝试从表单上的datagridview更新/插入我的访问数据库数据。 我已经屏蔽了蒙面文本框,以适合我的主键。当掩码自动完成后,记录将从数据库读取到文本框和datagridview,如附图所示。 我用这段代码做到了

If STHN_ID.MaskCompleted = True Then
Try
    MyConn = New OleDbConnection
    MyConn.ConnectionString = connString
                    myConnection.ConnectionString = connString
    myConnection.Open()
    Dim str As String
    str = "SELECT * FROM PersonalData WHERE (STHN_ID='" & STHN_ID.Text & "')"
    Dim STHNCmd As OleDbCommand = New OleDbCommand(str, myConnection)
    dr = STHNCmd.ExecuteReader()
    If dr.HasRows = -1 Then
        While dr.Read
            Fname.Text = dr("Fname").ToString
            LName.Text = dr("Lname").ToString
            Oname.Text = dr("Onames").ToString

            DOB.Text = dr("DOB")

            Title.Text = dr("Title").ToString
            salaryType.Text = dr("SalaryType").ToString
            StaffID.Text = dr("StaffNo").ToString
            SSN.Text = dr("SSN").ToString


            DateEngaged.Text = dr("DateEngaged")


            Category.Text = dr("Category").ToString
            Rank.Text = dr("Rank").ToString
            StaffDept.Text = dr("StaffDept").ToString
            PersonalData.PassportPic.BackgroundImageLayout = ImageLayout.Stretch
            Dim bits As Byte() = CType(dr("PassportPic"), Byte())
            Dim memo As New MemoryStream(bits)
            Dim myimg As New Bitmap(memo)
            PassportPic.Image = myimg

            'da = New OleDbDataAdapter("Select [DependantFname],[DependantLname],[DependantOname],[DependantDOB],[Relationship] FROM [DependantData] WHERE [STHN_ID]='" & STHN_ID.Text & "'", MyConn) 'Change items to your database name
            'da.Fill(ds)
            'Dim view As New DataView(tables(0))
            'source1.DataSource = view
            'DependantView.DataSource = view

            Dim adapter As New OleDbDataAdapter()
            adapter.SelectCommand = New OleDbCommand("Select [DependantFname],[DependantLname],[DependantOname],[DependantDOB],[Relationship] FROM [DependantData] WHERE [STHN_ID]='" & STHN_ID.Text & "'", MyConn)
            Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
            'connection.Open()
            Dim myTable As DataTable = New DataTable
            adapter.Fill(myTable)
            DependantView.DataSource = myTable


        End While
        myConnection.Close()


    Else
        MessageBox.Show("No Records for the STHN_ID entered", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
        myConnection.Close()
        STHN_ID.Focus()
    End If
Catch ex As Exception
    MsgBox(ex.Message)
    myConnection.Close()
End Try

我现在头痛的是,根据在maskedtextbox中输入的STHN_ID,在datagridview中添加/编辑记录时更新/插入数据库。任何帮助都会非常感激。

sample

1 个答案:

答案 0 :(得分:1)

这就是我完成它的方式!

带掩码的maskedtextbox上的

这是从数据库读取的代码并加载datagridview ...........

    Try
            MyConn = New OleDbConnection
            MyConn.ConnectionString = connString

            con = New OleDbConnection
            con.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = C:\Users\PRINCE\Documents\STHNDatabase.accdb")
            con.Open()

            myConnection.ConnectionString = connString
            myConnection.Open()
            Dim str As String
            str = "SELECT * FROM PersonalData WHERE (STHN_ID='" & STHN_ID.Text & "')"
            Dim STHNCmd As OleDbCommand = New OleDbCommand(str, myConnection)
            dr = STHNCmd.ExecuteReader()
            If dr.HasRows = -1 Then
                While dr.Read
                    Fname.Text = dr("Fname").ToString
                    LName.Text = dr("Lname").ToString
                    Oname.Text = dr("Onames").ToString

                    DOB.Text = dr("DOB")

                    Title.Text = dr("Title").ToString
                    salaryType.Text = dr("SalaryType").ToString
                    StaffID.Text = dr("StaffNo").ToString
                    SSN.Text = dr("SSN").ToString
                    DateEngaged.Text = dr("DateEngaged")
                    Category.Text = dr("Category").ToString
                    Rank.Text = dr("Rank").ToString
                    StaffDept.Text = dr("StaffDept").ToString
                    PersonalData.PassportPic.BackgroundImageLayout = ImageLayout.Stretch
                    Dim bits As Byte() = CType(dr("PassportPic"), Byte())
                    Dim memo As New MemoryStream(bits)
                    Dim myimg As New Bitmap(memo)
                    PassportPic.Image = myimg


                    Dim connection As New OleDbConnection
                    connection.ConnectionString = connString


                    adapt = New OleDbDataAdapter("Select [DependentID],[DependantFname],[DependantLname],[DependantOname],[DependantDOB],[Relationship],[STHN_ID] FROM [DependantData] WHERE [STHN_ID]='" & STHN_ID.Text & "'", con)
                    ds = New DataSet
                    adapt.Fill(ds, "DependantData")
                    DependantView.DataSource = ds.Tables(0)

                End While
                myConnection.Close()
            Else
                MessageBox.Show("No Records for the STHN_ID entered", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                myConnection.Close()
                STHN_ID.Focus()
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
            myConnection.Close()
        End Try

并在SaveButton上点击这是代码.....

    Private Sub SaveBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveBtn.Click
    Try
        builder = New OleDbCommandBuilder(adapt)
        adapt.Update(ds, "DependantData")
        MsgBox("Updated Successfully")
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

再次感谢。真的很感激

相关问题