知識共享圖文直播---(二)組合查詢
這幾天剛剛結束機房收費係統,在敲完機房收費係統之後發現自己遇到的問題其實也沒有什麼,要是真的說有什麼問題難到了自己的話我隻能說在組合查詢、報表的設計、結賬這三個地方給我一點點的麻煩。
今天我就寫寫我的怎麼解決組合查詢問題的吧。
首先,看看組合查詢主界麵
其次,分析問題
字段名是我們可查詢的學生信息,比如:卡號、姓名、學號等;操作符包括,“=”、“>”、“<”、“<>”;組合關係,或、非、空。
我們能夠得到的組合情況有:A、A和B、A或B、A和B或C、A和B和C、A和B和C。
分析到這裏在開始寫代碼之前我們需要解決的問題有兩個。一是,我們如何從數據庫的Student_Info這個表中提取數據;二是,我們如何去寫這六種情況的判斷語句。
對於從表中提取數據我是這樣寫的
strSQL=“select* from Student_Info where" "條件一” & “邏輯運算符” & “條件二”
關於組合情況的選擇,我們既可以先定義這六種情況,然後使用“select case”語句;我們也可以使用“if“條件判斷語句。
最後,代碼實現(下麵是部分代碼,省略了大部分判斷語句)
[vb] view plaincopyprint?
1. If Trim(cboSyntagmatic(0).Text = "") Then
2.
3. strSQL(0) = "select * from OnLine_info where " & strField(0) & strOperator(0) & "'" & txtInfo(0).Text & "'"
4. Set m_rstOnLineInfo(0) = ExecuteSQL(strSQL(0), strMsg)
5.
6. If m_rstOnLineInfo(0).EOF = True Then
7. MsgBox "此卡未注冊,請檢查輸入信息!", vbOKOnly + vbExclamation, "警告"
8. cboFieldName(0).Text = ""
9. cboFieldName(0).SetFocus
10. cboOperators(0).Text = ""
11. txtInfo(0).Text = ""
12. Exit Sub
13. End If
14. '設置myFexgrid控件屬性
15. With MSFlexGrid1
16. .Rows = 1
17. .TextMatrix(0, 0) = "卡號"
18. .TextMatrix(0, 1) = "姓名"
19. .TextMatrix(0, 2) = "上機日期"
20. .TextMatrix(0, 3) = "上機日期"
21. .TextMatrix(0, 4) = "機器名"
22. Do While Not m_rstOnLineInfo(0).EOF
23. .Rows = .Rows + 1 '可防止空白行的出現
24. .CellAlignment = flexAlignCenterCenter '單元內容居中
25. .ColWidth(0) = 1800
26. .ColWidth(1) = 1800
27. .ColWidth(2) = 1800
28. .ColWidth(3) = 1800
29. .ColWidth(4) = 1800
30. .TextMatrix(.Rows - 1, 0) = m_rstOnLineInfo(0).Fields(0)
31. .TextMatrix(.Rows - 1, 1) = m_rstOnLineInfo(0).Fields(3)
32. .TextMatrix(.Rows - 1, 2) = m_rstOnLineInfo(0).Fields(6)
33. .TextMatrix(.Rows - 1, 3) = m_rstOnLineInfo(0).Fields(7)
34. .TextMatrix(.Rows - 1, 4) = m_rstOnLineInfo(0).Fields(8)
35. m_rstOnLineInfo(0).MoveNext
36. Loop
37. End With
38. m_rstOnLineInfo(0).Close
39.
40. ElseIf Trim(cboSyntagmatic(0).Text = "與") Then
41. ...
42.
43. ElseIf cboSyntagmatic(1).Text = "與" Then
44. ......
45. Else
46. ......
47. ElseIf Trim(cboSyntagmatic(0).Text = "或") Then
48.
49. ......
50. ElseIf cboSyntagmatic(1).Text = "與" Then
51. ......
52. Else
53. .....
54.
55. End If
其實,敲完之後你自己也會覺得也就那麼點事,剛開始覺得不會敲是我們看到這個界麵之後,內心覺得可能很難。但是隻要是真的靜下來想想之後發現這其中的邏輯是那麼的簡單,幾句SQL語句,加上一個條件語句就能解決了。
最後更新:2017-04-03 15:22:03