Vb.net 在Datagridview中自动分配员工编号

Vb.net 在Datagridview中自动分配员工编号,vb.net,datagridview,Vb.net,Datagridview,我有1个DataGridView和3列,1个按钮命名为AssignID,1个数据库和EmployeeList表 Datagridview的列 第1列=员工ID 第2列=员工姓名 第3列=部门 我正在将excel中EmployeeName和Department的数据粘贴到DataGridView中,将第1列留空。我的问题是,当我按下AssignID按钮时,如何在DataGridView中为每个员工自动分配EmployeeID。数据库中的最后一个IDNumber是10000 谢谢你的帮助。我还在学习

我有1个DataGridView和3列,1个按钮命名为AssignID,1个数据库和EmployeeList表

Datagridview的列

第1列=员工ID 第2列=员工姓名 第3列=部门 我正在将excel中EmployeeName和Department的数据粘贴到DataGridView中,将第1列留空。我的问题是,当我按下AssignID按钮时,如何在DataGridView中为每个员工自动分配EmployeeID。数据库中的最后一个IDNumber是10000

谢谢你的帮助。我还在学习vb.net。提前谢谢

Im使用以下代码:

Private Sub AssignID_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AssignID.Click
    Dim Dbcon As New OleDbConnection(connStr)

    Dbcon.Open()

    Dim query As String
    Dim dbup As New OleDbCommand
    Try

        query = "SELECT Max (EmployeeID) from EmployeeList"
        dbup = New OleDbCommand(query, Dbcon)

        Dim EmpID As Integer

        EmpID = dbup.ExecuteScalar

        Dim i2 As Integer
        i2 = Me.NewEmployeesDataGridview.CurrentRow.Index

        NewEmployeesDataGridview.Item(0, i2).Value() = EmpID

        For x As Integer = 0 To NewEmployeesDataGridview.Rows.Count - 2
            NewEmployeesDataGridview.Rows(x).Cells(0).Value = NewEmployeesDataGridview.Rows(0).Cells(0).Value + 1

        Next

        NewEmployeesDataGridview.AllowUserToAddRows = False

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

我以前从未使用过这种方法,但我可能会使用数据适配器。在数据行和表中思考更容易

例如:

 Dim connection As SqlConnection = New sqlconnection()
  connection.ConnectionString = "<whatever your connection string is>"
  connection.Open()
  Dim adp As SqlDataAdapter = New SqlDataAdapter _
  (SELECT Max (EmployeeID) from EmployeeList)   
  Dim ds As DataSet = New DataSet()

  'fill adapter
  adp.Fill(ds)  
  Dim DT as datatable = ds.Tables(0)
因此,在DT中,您将有一个datatable,假设只有一行包含您请求的员工作为其内容。然后您可以像这样获取值:

Dim empID as integer = DT.rows(0).item("<name of SQL column with employee ID>") 
然后遍历datagridview中的每一行,并查找包含要更改的员工的正确行

NewEmployeesDataGridview.Rows(<integer of row>).Cells(<integer of column with IDs>).Value = empID 

这只是一种方法。您只需找到该员工所在的行,并将其分配给for循环中的适当单元格即可。或者使用LINQ,如果你能胜任的话,也可以使用distinct来更快地找到它

如果表中最后分配的ID是10000,那么下一个ID是10000+1,即10001。因此:

    EmpID = dbup.ExecuteScalar + 1

    '.Note #1: The code that is commented is not necessary
    'Dim i2 As Integer
    'i2 = Me.NewEmployeesDataGridview.CurrentRow.Index
    '
    'NewEmployeesDataGridview.Item(0, i2).Value() = EmpID
    '.Note #1.

    'To Rows.Count - 1 throw the correct result:
    NewEmployeesDataGridview.AllowUserToAddRows = False

    'For each row in the datagridview, we increase by one each ID from the last ID
    For x As Integer = 0 To NewEmployeesDataGridview.Rows.Count - 1
        NewEmployeesDataGridview.Rows(x).Cells(0).Value = EmpID + x
    Next

我对你的问题有点困惑。您是否正在尝试获取如何在datagridview单元格中用合适的人获取合适的ID?现在可以了。非常感谢Aprendiendo.NET!