機房——操作員——組合查詢
阿新 • • 發佈:2018-12-17
機房有幾個重點,組合查詢,上下機,結賬和報表。
今天,就分享下組合查詢
組合查詢,顧名思義,就是多種查詢條件組合的情況下查詢資訊。我們以前接觸到的學生也涉及到了組合查詢,不過相對來說較簡單。
下圖為組合查詢窗體圖
從圖中可以看出,如果沒有選擇第一個組合關係的時候,第二行查詢資訊是不能選擇的,也就是說嗎,當選擇了組合關係後,才會啟用下一行查詢條件。
如圖
程式碼如下
Private Sub Combo7_click() '第一個組合關係 If Combo7.Text <> "" Then '第一個組合關係不為空 Combo2.Enabled = True '第二行查詢條件 Combo5.Enabled = True '第二行查詢條件 txt2.Enabled = True '第二行查詢條件 Combo8.Enabled = True '第二個組合關係 End If End Sub Private Sub Combo8_click() '第二個組合關係 If Combo8.Text <> "" Then '第二個組合關係不為空 Combo3.Enabled = True '第三行組合關係 Combo6.Enabled = True '第三行組合關係 txt3.Enabled = True '第三行組合關係 End If End Sub
接下來便是組合查詢部分
流程圖如下
從流程圖可以看出,當第一行查詢條件不為空時,便可以查詢第一行的資訊,當選擇第一個組合關係後,啟用第二行查詢條件,此時可以結合前兩行的查詢條件查詢資訊。當選擇第二個組合關係後,第三行查詢條件啟用,輸入查詢條件後,此時可以查詢三行的資訊。
部分程式碼如下
txtsql = "select * from student_info where " '第一組查詢關係是否完整 If Combo1.Text = "" Or Combo4.Text = "" Or txt1.Text = "" Then MsgBox "請輸入完整的查詢條件!", 48, "提示" Exit Sub Else txtsql = "select * from student_info where " & " " & Field(Trim(Combo1.Text)) & " " & Trim(Combo4.Text) & " " & " '" & Trim(txt1.Text) & "'" ' txtsql = "select * from student_info where " & Field(Trim(Combo1.Text)) & " " & Trim(Combo4.Text) & " '" & Trim(txt1.Text) & "'" End If If Combo7 <> "" Then '此時已選擇第一個組合關係 If Combo2.Text = "" Or Combo5.Text = "" Or txt2.Text = "" Then MsgBox "你已選擇第一個組合關係,請輸入完整的查詢條件", 48, "提示" Exit Sub Else 'txtsql = txtsql & " " & Field(Combo7.Text) & "" & Field(Combo2.Text) & "" & Combo5.Text & "'" & Trim(txt2.Text) & "'" txtsql = txtsql & " " & Field(Combo7.Text) & " " & Field(Combo2.Text) & " " & Combo5.Text & "'" & Trim(txt2.Text) & "'" End If End If If Combo8 <> "" Then '此時已選擇第二個組個關係 If Combo3.Text = "" Or Combo6.Text = "" Or txt3.Text = "" Then MsgBox "你已選擇第二個組合關係,請輸入完整的查詢條件", 48, "提示" Exit Sub Else txtsql = txtsql & " " & Field(Combo8.Text) & " " & Field(Combo3.Text) & " " & Combo6.Text & "'" & Trim(txt3.Text) & "'" 'txtsql = txtsql & " " & Field(Combo8.Text) & Field(Trim(Combo3.Text)) & " " & Trim(Combo6.Text) & " " & "'" & Trim(txt3.Text) & "'" End If End If Set mrc = ExecuteSQL(txtsql, msgtext) If mrc.EOF = True Then MsgBox "沒有查詢到該條件的資訊", 48, "提示" Exit Sub End If
到現在,組合查詢的邏輯已經清楚了,但還是不能查詢出要查詢的資訊,因為給查詢條件進行賦值,也就是說,你的查詢語句寫的OK,但是資料庫不認,因為沒有提前賦值。
下面為賦值程式碼,定義一個select case語句,把組合關係和查詢條件全進行賦值即可:
Public Function Field(i As String) As String Select Case i Case "卡號" Field = "cardno" Case "學號" Field = "studentno" Case "姓名" Field = "studentname" Case "系別" Field = "department" Case "年級" Field = "grade" Case "班級" Field = "class" Case "性別" Field = "sex" Case "與" Field = "and" Case "或" Field = "or" End Select End Function
剩下的就是查詢後再MSHFlexGrid控制元件上顯示了,這個大家都已經輕車熟路了,就不再贅述了。
後期陸續更新,歡迎大家評論區留言!