组合查询 ——vb

来源:互联网 发布:sql语言培训班 编辑:程序博客网 时间:2024/06/05 10:57

     机房收费系统中需要组合查询,如图

需实现的功能如图

     首先,我分析了查询的流程,并画了流程图,如下:

流程图


思路总结好了,下面就是代码的编写了(以学生上机统计信息为例):

Dim mrc As ADODB.RecordsetDim txtSQL As StringDim Msgtxt As String   If Combo3(0).Text = "" Then                                 '不需要组合查询,第一行有为空值时提示错误信息       If Combo1(0).Text = "" Then           MsgBox "请选择字段名", vbOKOnly + vbExclamation, "警告"           Exit Sub       Else         If Combo2(0).Text = "" Then            MsgBox "请选择操作符", vbOKOnly + vbExclamation, "警告"            Exit Sub         Else           If Text1.Text = "" Then             MsgBox "请填写要查询的内容", vbOKOnly + vbExclamation, "警告"             Exit Sub           Else                                 '组合关系框为空且条件成立时,建立的查询,只有第一行"   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''               txtSQL = "select * from line_info where "               txtSQL = txtSQL & FName(Combo1(0).Text) & Trim(Combo2(0).Text) & "'" & Trim(Text1.Text) & "'"  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''              Set mrc = ExecuteSQL(txtSQL, Msgtxt)                            If Not (mrc.BOF And mrc.EOF) Then                  MSFlexGrid1.Rows = 1                                    MSFlexGrid1.CellAlignment = 4                  MSFlexGrid1.TextMatrix(0, 0) = "卡号"                  MSFlexGrid1.TextMatrix(0, 1) = "姓名"                  MSFlexGrid1.TextMatrix(0, 2) = "上机日期"                  MSFlexGrid1.TextMatrix(0, 3) = "上机时间"                  MSFlexGrid1.TextMatrix(0, 4) = "下机日期"                  MSFlexGrid1.TextMatrix(0, 5) = "下机时间"                  MSFlexGrid1.TextMatrix(0, 6) = "消费金额"                  MSFlexGrid1.TextMatrix(0, 7) = "金额"                  MSFlexGrid1.TextMatrix(0, 8) = "备注"                  Do While Not mrc.EOF                                   '显示数据                 With MSFlexGrid1                 .Rows = .Rows + 1 '这种方式也可防止空白行的出现                 .CellAlignment = 4                 .TextMatrix(.Rows - 1, 0) = mrc.Fields(1)                 .TextMatrix(.Rows - 1, 1) = mrc.Fields(2)                 .TextMatrix(.Rows - 1, 2) = Format(mrc.Fields(6), "yyyy-mm-dd")                 .TextMatrix(.Rows - 1, 3) = mrc.Fields(7)                 .TextMatrix(.Rows - 1, 4) = Format(mrc.Fields(8), "yyyy-mm-dd")                 .TextMatrix(.Rows - 1, 5) = mrc.Fields(9)                 .TextMatrix(.Rows - 1, 6) = mrc.Fields(11)                 .TextMatrix(.Rows - 1, 7) = mrc.Fields(12)                 .TextMatrix(.Rows - 1, 8) = mrc.Fields(13)                                   mrc.MoveNext                 End With               Loop             Else                   MsgBox "该条件下没有记录!"             End If           End If        End If      End If   End If          If Not (Combo3(0).Text = "") Then                                        'combo3(0)不为空时,分两行或三行查询       If (Combo1(0).Text = "" Or Combo1(1).Text = "") Then           MsgBox "请选择字段名", vbOKOnly + vbExclamation, "警告"              '第一行与第二行都不能有空值,否则报错           Exit Sub       Else         If (Combo2(0).Text = "" Or Combo2(1).Text = "") Then            MsgBox "请选择操作符", vbOKOnly + vbExclamation, "警告"            Exit Sub         Else           If (Text1.Text = "" Or Text2.Text = "") Then             MsgBox "请填写要查询的内容", vbOKOnly + vbExclamation, "警告"             Exit Sub           Else             If Combo3(1).Text = "" Then     'combo3(1)为空值时,前两行查询                       txtSQL = "select * from line_info where "                       txtSQL = txtSQL & FName(Combo1(0).Text) & " " & Trim(Combo2(0).Text) & "'" & Trim(Text1.Text) & "'" & FName(Combo3(0).Text) & " " & FName(Combo1(1).Text) & Combo2(1).Text & "'" & Trim(Text2.Text) & "'"                                     End If              If Not Combo3(1).Text = "" Then                         'combo3(1)不为空值时,三行查询                 If (Combo1(2).Text = "") Then                    MsgBox "请选择条件3字段名", vbOKOnly + vbExclamation, "警告"              '第一行与第二行都不能有空值,否则报错                    Exit Sub                 Else                    If (Combo2(2).Text = "") Then                      MsgBox "请选择条件3操作符", vbOKOnly + vbExclamation, "警告"                      Exit Sub                    Else                      If (Text3.Text = "") Then                         MsgBox "请填写条件3要查询的内容", vbOKOnly + vbExclamation, "警告"                         Exit Sub                      Else                     '没有空值                                               txtSQL = "select * from line_info where "                                                  txtSQL = txtSQL & FName(Combo1(0).Text) & Trim(Combo2(0).Text) & "'" & Trim(Text1.Text) & "'" & FName(Combo3(0).Text) & " " & FName(Combo1(1).Text) & Trim(Combo2(1).Text) & "'" & Trim(Text2.Text) & "' " & FName(Combo3(1).Text) & " " & FName(Combo1(2).Text) & Trim(Combo2(2).Text) & "'" & Trim(Text3.Text) & "'"                       End If                    End If                  End If               End If            End If          End If        End If     End If              Set mrc = ExecuteSQL(txtSQL, Msgtxt)                            If Not (mrc.BOF And mrc.EOF) Then                  MSFlexGrid1.Rows = 1                                    MSFlexGrid1.CellAlignment = 4                  MSFlexGrid1.TextMatrix(0, 0) = "卡号"                  MSFlexGrid1.TextMatrix(0, 1) = "姓名"                  MSFlexGrid1.TextMatrix(0, 2) = "上机日期"                  MSFlexGrid1.TextMatrix(0, 3) = "上机时间"                  MSFlexGrid1.TextMatrix(0, 4) = "下机日期"                  MSFlexGrid1.TextMatrix(0, 5) = "下机时间"                  MSFlexGrid1.TextMatrix(0, 6) = "消费金额"                  MSFlexGrid1.TextMatrix(0, 7) = "余额"                  MSFlexGrid1.TextMatrix(0, 8) = "备注"                  Do While Not mrc.EOF                                   '显示数据                 With MSFlexGrid1                 .Rows = .Rows + 1 '这种方式也可防止空白行的出现                 .CellAlignment = 4                 .TextMatrix(.Rows - 1, 0) = mrc.Fields(1)                 .TextMatrix(.Rows - 1, 1) = mrc.Fields(2)                 .TextMatrix(.Rows - 1, 2) = Format(mrc.Fields(6), "yyyy-mm-dd")                 .TextMatrix(.Rows - 1, 3) = mrc.Fields(7)                 .TextMatrix(.Rows - 1, 4) = Format(mrc.Fields(8), "yyyy-mm-dd")                 .TextMatrix(.Rows - 1, 5) = mrc.Fields(9)                 .TextMatrix(.Rows - 1, 6) = mrc.Fields(11)                 .TextMatrix(.Rows - 1, 7) = mrc.Fields(12)                 .TextMatrix(.Rows - 1, 8) = mrc.Fields(13)                                  mrc.MoveNext                 End With               Loop             Else                   MsgBox "该条件下没有记录!"             End If                     mrc.Close

       逻辑不难,但是查询的时候我的思维有些问题,太麻烦了 ,在跟别人交流时,发现这种查询方法比我的简单多了,学到了很多,尤其是思维方式,自己应该积极转变,多多学习。
 txtSQL = "select * from line_info where " txtSQL = txtSQL & ...


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机密码忘记了怎么办 苹果手机iphone已停用怎么办 手机被停用怎么办不用电脑 激活锁是别人的怎么办 6s开机密码忘了怎么办 苹果手机忘记解锁密码怎么办 忘记苹果触控id怎么办 苹果6app被锁了怎么办 捡的苹果id锁了怎么办 苹果手机id密码锁了怎么办 美版5s刷机后激活怎么办 vivo手机图案解锁忘记了怎么办 苹果5sid锁死了怎么办 苹果id账号被锁怎么办 苹果6s忘了ld怎么办 小米忘记图形解锁怎么办呢 索尼手机忘记解锁图案怎么办 oppoa37忘记锁屏密码怎么办 oppoa37锁屏密码忘了怎么办 oppor9图案密码忘了怎么办 oppor忘记锁屏图案怎么办 oppor手机忘记解锁图案怎么办 oppor手机忘记图案了怎么办 oppo手机屏幕锁忘了怎么办 三星手机屏幕锁忘了怎么办 手机主菜单坏了怎么办 索尼手机密码忘了怎么办 索尼笔记本密码忘了怎么办 索尼手机解锁密码忘了怎么办 索尼记录仪密码忘了怎么办 索尼z3手机忘记开机密码怎么办 索尼忘记锁屏密码怎么办 索尼手机忘记锁屏密码怎么办 忘了手机解锁图案怎么办 索尼手机忘记开机密码怎么办 索尼笔记本开机密码忘了怎么办 手机的开机密码忘了怎么办 联想手机开机密码忘了怎么办 红米note3忘记开机密码怎么办 小米2忘了密码怎么办 小米笔记本电脑忘记开机密码怎么办