知识共享图文直播---(二)组合查询
这几天刚刚结束机房收费系统,在敲完机房收费系统之后发现自己遇到的问题其实也没有什么,要是真的说有什么问题难到了自己的话我只能说在组合查询、报表的设计、结账这三个地方给我一点点的麻烦。
今天我就写写我的怎么解决组合查询问题的吧。
首先,看看组合查询主界面
其次,分析问题
字段名是我们可查询的学生信息,比如:卡号、姓名、学号等;操作符包括,“=”、“>”、“<”、“<>”;组合关系,或、非、空。
我们能够得到的组合情况有: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语句,加上一个条件语句就能解决了。