首页 文章

在VB.net中选择了哪些DataGridView CheckBox后,更新访问DB中的列

提问于
浏览
0

我刚刚开始在vb.net中,我正在尝试更新由VB.net中的DataGridView复选框选择的访问数据库中的一行 .

这是系统的一部分:

here is a part of the system

这是我的代码:

Private Sub editIO_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles editIO.LinkClicked

        If myConnection.State = ConnectionState.Open Then
            myConnection.Close()
        End If
        myConnection.ConnectionString = connString
        myConnection.Open()


        If editIO.Text = "Enable Time In/Out Edit" Then
            Try
                Dim CheckedRows =
                    (
                        From Rows In AdminTabDisplay.Rows.Cast(Of DataGridViewRow)()
                        Where CBool(Rows.Cells("ck").Value) = True
                    ).ToList
                If CheckedRows.Count > 0 Then

                    Dim sb As New System.Text.StringBuilder
                    For Each row As DataGridViewRow In CheckedRows
                        sb.AppendLine(row.Cells("Last Name").Value.ToString)

                    Next
                    Dim cmd As OleDbCommand = New OleDbCommand("UPDATE [Roster1] SET [EditTime] = 'e' WHERE [Last Name] = '" & sb.ToString & "'", myConnection)
                    Dim dr As OleDbDataReader = cmd.ExecuteReader




                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End If
        viewAdmin()
        editIO.Text = "Disable Time In/Out Edit"
    End Sub

它可以检查选中的复选框,并在单击链接时更新整个数据库 .

但每次我在db命令后添加一个“WHERE”子句(即“WHERE [Last Name] ='”&sb.ToString&“'”),它不会更新所选行 .

另外,我想使用“Employee ID”列替换WHERE子句中使用的“Last Name”列

如果可能的话,请尽可能简单地解释一下 . 我还是VB.net的初学者 . 非常感谢你!非常感谢每一个帮助!

1 回答

  • 0

    别介意我的帖子 . 我用一个小细节解决了它 .

    我使用了“员工ID”列而不是“姓氏”列,如上面的代码所示

    它被转换为字符串(因为stringBuilder) . 但我用代码将它转换为Integer:

    Dim sb As New System.Text.StringBuilder
               For Each row As DataGridViewRow In CheckedRows
                    sb.AppendLine(row.Cells("Last Name").Value.ToString) 
               Next    
                    Dim st As String = sb.ToString
                    Dim value As Integer = CInt(st)
    

    并将数据库命令更改为:

    Dim cmd As OleDbCommand = New OleDbCommand("UPDATE [Roster1] SET [EditTime] = 'e' WHERE [Employee ID] = " & value & "", myConnection)
                    Dim dr As OleDbDataReader = cmd.ExecuteReader
    

相关问题