2014-10-28 2 views
0

3 개의 열, 이라는 이름의 버튼이 1 개 있습니다., 1 데이터베이스 EmployeeList 테이블. DataGridView에Datagridview에서 직원 번호 자동 할당

  1. 열 1 = 직원 ID
  2. 열 2 = EmployeeName
  3. 3 열 = 부서

내가 EmployeeName부서의 데이터를 붙여 해요 from excel from DataGridView 열 1을 비워 둡니다. 내 문제는 AssignID 단추를 누를 때 DataGridView에서 EmployeeID가 인 직원 당 을 자동으로 할당하는 방법입니다. 데이터베이스에있는 IDNumber은 10000입니다.

감사합니다. 나는 아직도 vb.net을 배우고있다. 미리 감사드립니다.

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 
+0

나는 당신의 문제에 약간 혼란 스럽습니다. DataGridview 셀에서 올바른 사람과 올바른 ID를 얻는 방법을 배우려고하십니까? – Kat

답변

1

테이블에서 마지막으로 할당 된 ID가 10,000이면 다음 ID는 10,000 + 1 즉 10,001입니다. 그러므로 :

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 
1

내가 전에 그 방법을 사용한 적이 있지만, 나는 아마 datadapter을 사용합니다 :

임 코드 아래 사용. 데이터 위주와 표에서 생각하는 것이 더 쉽습니다. 예를 들어

:

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에 당신은 당신이 그 내용으로 요청 된 직원 만 1 개 행을 가정의, 데이터 테이블이있을 것이다. 된 DataGridView의 각 행을 통해 다음

Dim empID as integer = DT.rows(0).item("<name of SQL column with employee ID>") 

당신 루프를 변경하려는 직원이있는 오른쪽 행을 찾습니다 그런 다음과 같이 값을 잡을 수 있습니다.

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

그 방법 중 하나 일뿐입니다. 해당 직원이있는 행을 찾아 for 루프의 적절한 셀에 할당 할 수 있습니다. 또는 LINQ를 사용하는 경우에는 그것을 사용하고 distinct()를 사용하면 더 빨리 찾을 수 있습니다.

+0

지금 작동 중입니다. Aprendiendo.NET. 대단히 감사합니다! –