閱讀470 返回首頁    go 阿裏雲 go 技術社區[雲棲]


機房收費係統之組合查詢

增刪改查,數據庫中最基本的四個操作。不論是學生信息管理係統,還是機房收費係統,它們一個都不少。這一次,就來說說“查”。

剛開始,看到機房收費係統的查詢,傻眼了,橫看,四個Label框,所謂的查詢條件;豎看,多個文本框、組合框。



                                              

在運行了很多次係統之後,終於越來越有思路了。
首先,我們很清楚查詢的兩種形式:簡單查詢和組合查詢。這兩者的劃分,組合關係的選擇就是關鍵了。

所以,根據上麵所給的各個控件,我們可以自由選擇是簡單查詢還是組合查詢。不管做什麼,思路很重要,思路決定出路。下麵是自己對組合查詢的思路梳理: 

簡單地說,也就是如果想要進行組合查詢,在將查詢條件填寫完整的前提下,必須將組合關係也填寫上,否則,查詢失敗。


下麵是關於查詢的代碼,自己也是采用了兩種方法運行。也就是采用了不同的方法將文本框中的字段轉換為SQL中的字段,即是否調用函數。
一.直接寫查詢代碼。
首先進行轉化:

<span ><strong>'將組合框中的選中字段轉化為SQL語句中的字段
    If comboFieldOne.Text = "卡號" Then comboFieldOne.Tag = "UserCardID"
    If comboFieldOne.Text = "學號" Then comboFieldOne.Tag = "ClassNo"
    If comboFieldOne.Text = "姓名" Then comboFieldOne.Tag = "UserName"
    If comboFieldOne.Text = "性別" Then comboFieldOne.Tag = "sex"
    If comboFieldOne.Text = "性別" Then MsgBox "請填寫男、女", vbOKOnly + vbExclamation, "警告"
    
    If comboFieldOne.Text = "係別" Then comboFieldOne.Tag = "Department"
    If comboFieldOne.Text = "年級" Then comboFieldOne.Tag = "grade"
    If comboFieldOne.Text = "班級" Then comboFieldOne.Tag = "class"</strong></span>

接著進行查詢:

<span ><strong>'判斷已選擇準確的查詢條件一
    If comboFieldOne.Text = "" Then
        MsgBox "字段不能為空,請輸入第一個查詢字段!", vbOKOnly + vbExclamation, "警告"
        comboFieldOne.SetFocus
        Exit Sub
    Else
        If comboOperationOne.Text = "" Then
            MsgBox "操作符不能為空,請輸入第一個操作符!", vbOKOnly + vbExclamation, "警告"
            comboOperationOne.SetFocus
            Exit Sub
        Else
            If txtInquireOne.Text = "" Then
                MsgBox "查詢內容不能為空,請輸入第一個查詢內容!", vbOKOnly + vbExclamation, "警告"
                txtInquireOne.SetFocus
                Exit Sub
            End If
        End If
         '查詢語句一
        strTxtSQL = "select * from tb_StudentInformation where (" & comboFieldOne.Tag & comboOperationOne.Text & "'" & txtInquireOne.Text & "'"
</strong></span>

每選擇一個查詢條件,隻要將strTxtSQL語句聯結即可。
二.調用函數編寫的代碼。
<span ><strong>Public Function FieldName(StrFieldName As String) As String  '判斷選擇字段函數

    Select Case StrFieldName
        Case "卡號"
            FieldName = "UserCardID"
        Case "姓名"
            FieldName = " UserName"
        Case "上機日期"
            FieldName = "OnlineDate"
        Case "上機時間"
            FieldName = "OnlineTime"
        Case "下機日期"
            FieldName = "LineDate"
        Case "下機時間"
            FieldName = "LineTime"
        Case "消費金額"
            FieldName = "Cost"
        Case "餘額"
            FieldName = "ExtraMoney"
        Case "備注"
            FieldName = "Comment"
       。。。。。。
    End Select
    
End Function
Public Function ComboInquire(StrCombo As String) As Boolean  '定義函數:判斷是否是組合查詢

    If StrCombo = "" Then
        ComboInquire = False
    Else
        ComboInquire = True
    End If
    
End Function</strong></span>

兩者本質上其實一樣,隻是采用第二種,代碼量不大。
上麵的是機房收費係統的查詢,下麵不如拿它和學生管理的查詢比較一下。


應該都記得,學生中的查詢走到哪兒都是這三個複選框,可以選擇多個,也可以隻選擇一個。這就看到了機房查詢和它的相同之處了。
查詢語句都是單個SQL或者多個SQL間的聯結。
學生查詢SQL句:


機房查詢SQL句:



這一路,還是不要瞎想,還是不要恐懼,隻要去做,什麼都可以的。

最後更新:2017-04-03 05:39:53

  上一篇:go Android Lint的使用
  下一篇:go java對象和json數據轉換實現方式1-使用json-lib實現