2015-02-10 86 views
0

有人可以请帮我解决这个问题我是一个初学者编程。如何使用多个组合框来过滤数据

有两个组合框是S.Y.(学年)和Sem(学期),我想用这两个组合框在下面的列表视图中有更具体的数据。

Private Sub Search_Record() 
    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 edp_number, LastName + ', ' + FirstName as name, course as course, Address as address, syear as syear, Sem as sem FROM tblStudent" 
     If Me.cboSearchBy.Text = "1st" Then 
      sSQL = sSQL & " where Sem like '1st" & Me.txtSearch.Text & "%'" 
     Else 
      sSQL = sSQL & " where Sem like '2nd" & 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 
End Sub 

这个代码仅使用SEM组合框是cboSearchby所以现在我需要知道的是如何使组合框S.Y运作也是一样,如果还使用texbox搜索名字和姓氏。

回答

1

,你只需要在你的if语句添加另一个条件:

If Me.cboSearchBy.Text = "1st" and Me.cboSY.Text = "2014-2015" Then 
    sSQL = sSQL & " where Sem like '1st" & Me.txtSearch.Text & "%' and SY like '" & Me.cboSY.Text & "%' " 
Else 
    sSQL = sSQL & " where Sem like '2nd" & Me.txtSearch.Text & "%' and SY like '" & Me.cboSY.Text & "%' " 
End If 

然后如果你想添加的搜索的姓氏和名字,只是添加的if语句的另一个条件。

注意:在使用逻辑运算符,如果所有条件为真,而为真,如果条件ATLEAST之一为真是真实的。

+0

非常感谢你的先生!我很感激,还有一件事是先生,这两者之间存在冲突,例如当我选择2014-2016并且在第二个组合框中我选择第二个sem时,仍然存在2015-2016的记录,因为他们正在响应第二个sem组合框..对这位先生的任何建议? – user3459793 2015-02-10 11:06:22

+0

我很抱歉,但问题不明白。你能详细说明吗?你能提供一些例子吗? – Kim 2015-02-10 16:27:38

+0

抱歉,如果我的问题不明确,我遵循上面的代码,当我在cboSY中选择“2015-2016”并在cboSearchby中选择“1st”sem时,结果对于“2015-2016”但它显示了第二学期记录而不是第一个sem的预期输出。 – user3459793 2015-02-10 17:09:46

相关问题