機房收費系統之組合查詢
阿新 • • 發佈:2018-12-30
組合查詢不愧是機房三大難點之一,起初不知道如何組建查詢的關係就去找巨人去了,最後看到巨人們的總結,捋順了才明白,其實很簡單。
我們的欄位名選擇是漢字,要想在資料庫中查詢欄位,根本就不認識,這就需要我將漢字轉換為相應的字串,為了方便簡潔,定義一個函式,程式碼中的FiledName就是我要利用到的一個函式。
'將漢字轉換為相應的欄位名字 Public Function FiledName(StrFiledName As String) As String Select Case StrFiledName Case "卡號" FiledName = "cardno" Case "學號" FiledName = "studentNo" Case "姓名" FiledName = "studentName" Case "性別" FiledName = "Sex" Case "學院" FiledName = "department" Case "年級" FiledName = "grade" Case "班級" FiledName = "class" Case "與" FiledName = "and" Case "或" FiledName = "or" End Select End Function
我們以學生基本資訊維護為例:
首先,它是一個多條件的組合查詢,也就是說當我們先判斷第一條件,若需要,在組合查詢的列表框選擇我們組合條件(即“與”or“或”)與第二條件判斷,若第二條件也滿足不了查詢需求,則可使用第三條件。
關鍵程式碼展示:
Private Sub cmdQuery_Click() Dim mrc As ADODB.Recordset Dim txtsql As String Dim msgtext As String txtsql = "select * from student_Info where " '判斷欄位的選擇是否為空 If Not Testtxt(comboFiledName1.Text) Then MsgBox "請選擇欄位!", vbOKOnly + vbExclamation, "警告" comboFiledName1.SetFocus Exit Sub End If '判斷操作符的選擇是否為空 If Not Testtxt(comboOperate1.Text) Then MsgBox "請選擇操作符!", vbOKOnly + vbExclamation, "警告" comboOperate1.SetFocus Exit Sub End If '判斷要查詢的內容是否為空 If Not Testtxt(txtContent1.Text) Then MsgBox "請在輸入要查詢的內容", vbOKOnly + vbExclamation, "警告" txtContent1.SetFocus Exit Sub End If txtsql = txtsql & FiledName(comboFiledName1.Text) & " " & comboOperate1.Text & "'" & txtContent1.Text & "'" '利用模版函式檢視是否是組合查詢第一行為空時,查詢無效 '開始組合查詢 If Trim(comboRelation1.Text <> "") Then If Trim(comboFiledName2.Text) = "" Or Trim(comboOperate2.Text) = "" Or Trim(txtContent2.Text) = "" Then MsgBox "您選擇了組合關係,請輸入資料之後再查詢", vbOKOnly, "提示資訊" Exit Sub Else txtsql = txtsql & FiledName(comboRelation1.Text) & " " & FiledName(comboFiledName2.Text) & comboOperate2.Text & "'" & Trim(txtContent2.Text) & "'" End If End If If Trim(comboRelation2.Text) <> "" Then If Trim(comboFiledName3.Text) = "" Or Trim(comboOperate3.Text) = "" Or Trim(txtContent3.Text) = "" Then MsgBox "您選擇了第二個組合,請輸入資料之後在查詢", vbOKOnly, "提示" Exit Sub Else txtsql = txtsql & FiledName(comboRelation2.Text) & " " & FiledName(comboFiledName3.Text) & comboOperate3.Text & "'" & Trim(txtContent3.Text) & "'" End If End If
總結:
通過組合查詢,我認識最深的一點就是不要上來就去看被人的部落格,別人的不一定好,一定要自己先把邏輯關係弄清,要不上來就抄人家的程式碼之後功能實現了,感覺會了,心理就會想不過如此嘛!可當真正自己扔掉柺棍就會發現自己寸步難行。