2014-02-18 21 views
0

我在使用類別對datagridview中的數據進行計數時遇到問題,即當我通過「Department」過濾數據時,它顯示同一類別中的所有數據。但我想要統計該類別(部門)中包括多少員工,主管和經理。我希望它顯示在我的文本框中,例如txtStaff,tstManagers,txtSups。謝謝!計數數據顯示在我的datagridview類別

這裏是我當前的代碼:

Try 
    Dim conF As New OleDb.OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0.; Data Source = ..\Database\IRMG TO.accdb") 
    conF.Open() 
     Dim query As String 
     query = "SELECT Employee_Name, P_Level, Position_Title, Department, Team, Subteam1, Subteam2, Immediate_Head, CAREER_BAND, CAREER_ZONE FROM tblEmployees WHERE (" & txtFilterType.Text & " LIKE '%" & txtFilter.Text & "%') " 
     Dim command As New OleDb.OleDbCommand(query, conF) 
    Dim adapter As New OleDb.OleDbDataAdapter 
     Dim dt As New DataTable 
    adapter.SelectCommand = command 
    adapter.Fill(dt) 
    dgvEmployee.DataSource = dt 
    adapter.Dispose() 
    command.Dispose() 
     conF.Close() 
    Catch ex As Exception 
    End Try 

回答

0

你可能想做到這一點的SQL語句...

query = "SELECT (Select COUNT(Employee_Name) FROM tblEmployees WHERE Position_Title='Staff' AND (" & txtFilterType.Text & " LIKE '%" & txtFilter.Text & "%')) as StaffCount, 
     (Select COUNT(Employee_Name) FROM tblEmployees WHERE Position_Title='Supervisor' AND (" & txtFilterType.Text & " LIKE '%" & txtFilter.Text & "%')) as SupervisorCount, 
     (Select COUNT(Employee_Name) FROM tblEmployees WHERE Position_Title='Manager' AND (" & txtFilterType.Text & " LIKE '%" & txtFilter.Text & "%')) as ManagerCount, 
     Employee_Name, P_Level, Position_Title, Department, Team, Subteam1, Subteam2, Immediate_Head, CAREER_BAND, CAREER_ZONE FROM tblEmployees WHERE (" & txtFilterType.Text & " LIKE '%" & txtFilter.Text & "%')" 

那麼你應該VB去這樣的事情...

adapter.Fill(dt) 
    txtStaff.Text = dt.Rows(0).Item("StaffCount") 
    txtSups.Text = dt.Rows(0).Item("SupervisorCount") 
    tstManagers.Text = dt.Rows(0).Item("ManagerCount") 

不要忘記在datagridview被填滿後隱藏前三列。你正在使用數據源屬性,所以一切都會出來,只是隱藏它們。如果您執行顯示項目的循環,而不是直接使用數據源,那麼在填充之前,您可以更好地控制datagridview。

+0

嗨,我的意思是,這不是我想要計算的行,這是我的數據表中的數據。即我按部門過濾了我的表格,然後部門包含了諸如主管,經理和員工姓名等數據。我想要統計有多少員工,經理和主管,並將數據插入三個文本框。即txtStaffCount,txtManagersCount和txtSupervisorsCount –

+0

因此,當您過濾數據時,所有字段,主管,經理和員工都顯示正確嗎?假設你選擇某個部門,有3行出現,只有主管有價值觀,那麼這個主管= 3,經理= 0,員工= 0?我有問題嗎? –

+0

是的,就像這樣,當我選擇一個有5行的部門,由3個主管和2個工作人員組成時,我希望顯示主管和員工的計數到各自的文本框中。 :) –

0

試試這個..:

txtResult.Text = dgvEmployee.Rows.Count 
+0

嗨,我的意思是,它不是我要數的行,這是我的數據表中的數據。即我按部門過濾了我的表格,然後部門包含了諸如主管,經理和員工姓名等數據。我想要統計有多少員工,經理和主管,並將數據插入三個文本框。即txtStaffCount,txtManagersCount和txtSupervisorsCount –