读书人

学识共享图文直播-(二)组合查询

发布时间: 2013-10-08 17:08:58 作者: rapoo

知识共享图文直播---(二)组合查询

这几天刚刚结束机房收费系统,在敲完机房收费系统之后发现自己遇到的问题其实也没有什么,要是真的说有什么问题难到了自己的话我只能说在组合查询、报表的设计、结账这三个地方给我一点点的麻烦。

今天我就写写我的怎么解决组合查询问题的吧。


首先,看看组合查询主界面

学识共享图文直播-(二)组合查询


其次,分析问题

字段名是我们可查询的学生信息,比如:卡号、姓名、学号等;操作符包括,“=”、“>”、“<”、“<>”;组合关系,或、非、空。

我们能够得到的组合情况有: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语句,加上一个条件语句就能解决了。


读书人网 >编程

热点推荐