2013-09-25 4 views
0

학생, 관리자 및 강사가 3 단계 액세스 권한을 가지고 있습니다. 그래서 나는 "강사"인 사람들 만 보여주고 싶습니다. 코딩에 그냥 초보자 고마워요.어떻게 datagridview에 표시 할 데이터베이스를 필터링 할 수 있습니까?

Me.cboSearchBy.SelectedIndex = 0 
     Dim conn As New OleDbConnection 
     Dim cmd As New OleDbCommand 
     Dim da As New OleDbDataAdapter 
     Dim dt As New DataTable 
     Dim sSQL As String = String.Empty 

     Try 

      conn = New OleDbConnection(Get_Constring) 
      conn.Open() 
      cmd.Connection = conn 
      cmd.CommandType = CommandType.Text 
      sSQL = "SELECT Username, lname + ', ' + fname + ' ' + mname as name, password FROM Instructor" 
      If Me.cboSearchBy.Text = "Name" Then 
       sSQL = sSQL & " where lname + ', ' + fname + ' ' + mname like '%" & Me.txtSearch.Text & "%'" 
      Else 
       sSQL = sSQL & " where Username =" & Me.txtSearch.Text 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

      Me.dtgResult.DataSource = dt 
      If dt.Rows.Count = 0 Then 
       MsgBox("No record found!") 
      End If 

     Catch ex As Exception 
      MsgBox(ErrorToString) 
     Finally 
      conn.Close() 
     End Try 
+0

당신은 학생용으로 1 개, 관리자 용으로 1 개, 그리고 강사용으로 1 개씩 3 개의 테이블이 있다는 것을 의미합니까? –

+0

오직 하나의 테이블과 나는 그 하나가 테이블에 있기 때문에 datagridview에 강사 인 사람 만 표시하고 싶습니다. – user2715202

+0

테이블 1 개만 ... – user2715202

답변

2

검색어 부분을 다음으로 바꾸십시오.

 sSQL = "SELECT Username, lname + ', ' + fname + ' ' + mname as name, password FROM Instructor" 
    If Me.cboSearchBy.Text = "Name" Then 
     sSQL = sSQL & " where lname + ', ' + fname + ' ' + mname like '%" & Me.txtSearch.Text & "%'" 
     sSQL = sSQL & " and level like '%instructor%'" 
    Else 
     sSQL = sSQL & " where Username =" & Me.txtSearch.Text 
     sSQL = sSQL & " and level like '%instructor%'" 
    End If 
+0

정말 고마워요 :) – user2715202

0

@Nadeem_MK이 선호하는 방법이 있지만, 데이터베이스가, 당신은 모든 데이터를 원하는 거기에 시간에서 무엇이 최선인지 할 수 있도록하고 (데이터베이스에 다른 전화없이) 로컬로 필터링 할 필요가있다. 이렇게 할 수있는 한 가지 방법은 다음과 같습니다.

...Your code 
da.SelectCommand = cmd 
da.Fill(dt) 
'Filter locally 
dim drs as datarow() = dt.select("level = 'Instructor'") 
'Use the datarow array as your datasource instead of the data table 
Me.dtgResult.DataSource = drs 

또는 "BindingSource"를 사용하는 경우 필터링 할 수도 있습니다.

관련 문제