Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何筛选将显示在datagridview中的数据库?_Vb.net_Winforms_Datagridview - Fatal编程技术网

Vb.net 如何筛选将显示在datagridview中的数据库?

Vb.net 如何筛选将显示在datagridview中的数据库?,vb.net,winforms,datagridview,Vb.net,Winforms,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

我有三级权限,学生、管理员和讲师在一张表中。因此,我只想展示那些“讲师”。谢谢,我只是个编码新手

 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

用此替换查询部分

     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

虽然@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”,您也可以对其进行筛选。

您的意思是您有3个表,1个用于学生,1个用于管理员,另一个用于讲师?只有1个表,我只想在datagridview中显示讲师,因为这3个表都在一个表中。您能提供表结构plz吗?我看到您正在从讲师处查询
选择*FROM讲师,其中级别=@user。。。。在“级别”内:讲师、管理员、学生,只想显示帐户中有“讲师”的人。您的表名是讲师?您的@user将包含单词讲师?