2015-01-21 44 views
0

我只想在一個textbox中搜索,如果搜索到的id在學生或教師表中都是相同的,它將查看錶格並顯示數據,但我不知道如何。如何在兩張表中搜索?

cn.Open() 

    With cmd 
     .Connection = cn 
     If (dt.Rows.Count > 0) Then 
      .CommandText = "SELECT * FROM Students WHERE Familyname = '" & search.Text & "' OR Firstname = '" & search.Text & "' OR StudentID = '" & search.Text & "' OR RFID = '" & search.Text & "'" 
      Searchfrm.Show() 
      da.SelectCommand = cmd 
      dt.Clear() 
      da.Fill(dt) 
      cn.Close() 

     Else : .CommandText = "SELECT * FROM FactandStaff WHERE Familyname LIKE '%" & search.Text & "%' OR Firstname LIKE '%" & search.Text & "%' OR FacultyorStaffID LIKE '%" & search.Text & "%' OR RFID LIKE '%" & search.Text & "%' OR College LIKE '%" & search.Text & "%'" 
      searchfrm2.Show() 
      da.SelectCommand = cmd 
      dt.Clear() 
      da.Fill(dt) 
      cn.Close() 
     End If 
    End With 
+0

如果textbox.text匹配兩個表怎麼辦? – RezaRahmati 2015-01-21 09:35:41

+0

SQL注入,你需要學習LINQ – Gouda 2015-01-21 09:38:02

+0

你爲什麼不把你的兩個表合併成一個通用表,並且有一個字段告訴你他們是教師還是學生(使用case語句)並查詢這個表 – 2015-01-21 09:40:18

回答

0

我假設你需要顯示兩個表例如兩個要顯示FirstNameFamilyName然後你只需要運行1個查詢如下

"Select 1 as [type] , FirstName, LastName from Students "+ 
" WHERE Familyname = '" & search.Text & "' OR Firstname = '" & search.Text & "' OR StudentID = '" & search.Text & "' OR RFID = '" & search.Text & "'"+ 
+" Union All " 
+" Select 2 , FirstName, LastName from FactandStaff)"+ 
+"WHERE Familyname LIKE '%" & search.Text & "%' OR Firstname LIKE '%" & search.Text & "%' OR FacultyorStaffID LIKE '%" & search.Text & "%' OR RFID LIKE '%" & search.Text & "%' OR College LIKE '%" & search.Text & "%'" 

PS一般的數據:而不是像這樣使用string.format,如下所示

String.Format("Select 1 as [type], FirstName, LastName from Students where Familyname = '{0}' or Firstname = '{0}' OR StudentID = {0} OR RFID = '{0}' \r Union All \r Select 2,FirstName, LastName from FactandStaff WHERE Familyname LIKE '%{0}%' OR Firstname LIKE '%{0}%' OR FacultyorStaffID LIKE '%{0}%' OR RFID LIKE '%{0}%' OR College LIKE '%{0}%'", search.Text); 
+0

但先生如果在文本框中輸入的ID等於教師或學生如何顯示錶單? – 2015-01-21 09:56:19

+0

@AlistaireTurno查詢將返回兩個記錄,但是如果在兩個表中有兩個記錄具有相同的firstName,那麼是否希望發生這種情況?在這種情況下,您的策略是什麼?如果你想顯示錯誤,如果id相同(即結果包含多條記錄),請做相同的操作。如果你想把它們全部展示給用戶,用戶可以在它們之間進行選擇,對於ID也是一樣的 – RezaRahmati 2015-01-21 09:59:40

+0

@AlistaireTurno aslo我已經添加了一個'type'列來查詢我的答案,所以在結果集中你會理解記錄是屬於的到哪個表 – RezaRahmati 2015-01-21 10:01:21