1. 程式人生 > >機房收費系統之組合查詢

機房收費系統之組合查詢

組合查詢不愧是機房三大難點之一,起初不知道如何組建查詢的關係就去找巨人去了,最後看到巨人們的總結,捋順了才明白,其實很簡單。

我們的欄位名選擇是漢字,要想在資料庫中查詢欄位,根本就不認識,這就需要我將漢字轉換為相應的字串,為了方便簡潔,定義一個函式,程式碼中的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

總結:

通過組合查詢,我認識最深的一點就是不要上來就去看被人的部落格,別人的不一定好,一定要自己先把邏輯關係弄清,要不上來就抄人家的程式碼之後功能實現了,感覺會了,心理就會想不過如此嘛!可當真正自己扔掉柺棍就會發現自己寸步難行。