【问题标题】:Updating column in access DB after getting which DataGridView CheckBoxes are selected in VB.net获取在 VB.net 中选择了哪些 DataGridView 复选框后更新访问数据库中的列
【发布时间】:2016-09-02 12:51:57
【问题描述】:

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

这是系统的一部分:

这是我的代码:

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 &“'”),它不会更新所选行。

另外,我想使用“员工 ID”列代替 WHERE 子句中使用的“姓氏”列

如果可能,请尽可能简单地解释它。我仍然是 VB.net 的初学者。非常感谢!非常感谢每一个帮助!

【问题讨论】:

    标签: vb.net ms-access checkbox datagridview


    【解决方案1】:

    别管我的帖子。我用一个小细节解决了它。

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

    它被转换为字符串(因为 stringBuilder)。但我使用代码将其转换为整数:

               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
    

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多