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

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

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


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

        知识共享图文直播---(二)组合查询_第1张图片


       其次,分析问题

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

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


你可能感兴趣的:(sql,sql,数据库,server,总结,vb,2008)