0

我有 3 级访问权限,表中的 STUDENT、ADMIN 和 INSTRUCTOR。所以我想只显示那些“教练”。谢谢我只是一个编码新手。

 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
4

2 回答 2

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
于 2013-09-25T10:35:41.360 回答
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”,您也可以对其进行过滤。

于 2013-09-25T14:34:44.617 回答