您的位置:首页 > 其它

【机房收费系统】-查询

2018-02-11 23:25 190 查看

前言:

      刚开始做的时候总会自己吓自己,组合查询这个之前学生的时候师父就告诉说是很重要,这次在做之前就有了充分的心理准备,其实开始动手之后远远没有自己想象中的那么难,提起机房总免不了提起一个词-逻辑,理清逻辑有多重要,大家也都进行了,想必是深有体会啊,接下来就总结和梳理下自己捣鼓这个时候的思路;

内容:

       在这里就以学生基本信息维护为例,总结下关于组合查询的内容,其余的两个也都是大同小异;

思考过程:

      1、第一个查询条件可单独查询,组合关系combo3(0)符合的时候txtSQL1和txtSQL2同时查询,当组合框combo3(1)选中的时候txtSQL1、txtSQL2、txtSQL3三行条件一起查询。
      2、当字段名是性别的时候操作符中的符号只能是“=”和“< >”并且提示只能输入“男” 或“女”。当字段名为时间或者是日期的时候,combo2(1)要有限制只能输入日期或者是时间,这个还需要在后续的优化中继续完善;

     3、注意:组合查询combo3(0)为空的时候txtSQL2不能点击输入,只有单击combo3(0)的时候txtSQL2才能用;



代码展示:

查询代码展示:
Private Sub cmdInquire_Click()

Dim txtSQL As String
Dim MsgText As String
Dim mrc As ADODB.Recordset

'定义三个字符串,表示三种查询条件
Dim txtSQL1 As String '第一种查询条件
Dim txtSQL2 As String '第二种查询条件
Dim txtSQL3 As String '第三种查询条件

'在line_info表中获得整行记录,*表示查询的记录
txtSQL = "select * from student_info where"
txtSQL1 = txtSQL & " " & field(Combo1(0).Text) & " " & (Combo2(0).Text) & "'" & Trim(Text1.Text) & "'"
txtSQL2 = txtSQL1 & " " & field(Combo3(0).Text) & " " & field((Combo1(1).Text)) & " " & Combo2(1).Text & "'" & Trim(Text2.Text) & "'"
txtSQL3 = txtSQL2 & " " & field(Combo3(1).Text) & " " &a
4000
mp; field(Combo1(2).Text) & " " & Trim(Combo2(2).Text) & "'" & Trim(Text3.Text) & "'"

'第一行查询条件
If Trim(Combo1(0).Text) = "" Or Trim(Combo2(0).Text) = "" Or Trim(Text1.Text) = "" Then
MsgBox "请输入完整的查询条件!", vbOKOnly, "提示"
Exit Sub
Else
txtSQL = txtSQL1
Set mrc = ExecuteSQL(txtSQL, MsgText)
End If

'判断组合关系框是否填写,两行查询条件
If Combo3(0).Text <> "" Then
'判断第二行内容是否完整,且符合要求
If Combo1(1).Text = "" Or Combo2(1).Text = "" Or Text2.Text = "" Then
MsgBox "请将第二个查询条件内容填写完整!", vbOKOnly, "提示"
Exit Sub
Else
'将前两行条件联系起来完成SQL语句
txtSQL = txtSQL2
Set mrc = ExecuteSQL(txtSQL, MsgText)
End If
End If

'判断第二个组合关系是否选中,三行查询条件
If Combo3(1).Text <> "" Then

'如果选中,判断第二行内容是否填写完整,且符合要求
If Combo1(2).Text = "" Or Combo2(2).Text = "" Or Text3.Text = "" Then
MsgBox "请将第三行查询条件内容填写完整!", vbOKOnly, "提示"
Exit Sub
Else
'将三行的条件联系起来,完成SQL语句
txtSQL = txtSQL3
Set mrc = ExecuteSQL(txtSQL, MsgText)
End If
End If

If mrc.EOF Then
MsgBox "查询无信息,请重新选择查询条件!", vbOKOnly + vbInformation, "提示信息"
Exit Sub
End If

'获得表中数据表头
With MSHFlexGrid1
.ColAlignment(-1) = 4
.Rows = 1
.TextMatrix(0, 0) = "姓名"
.TextMatrix(0, 1) = "卡号"
.TextMatrix(0, 2) = "系别"
.TextMatrix(0, 3) = "年级"
.TextMatrix(0, 4) = "班级"
.TextMatrix(0, 5) = "性别"
.TextMatrix(0, 6) = "状态"
.TextMatrix(0, 7) = "备注"
.TextMatrix(0, 8) = "类型"
.TextMatrix(0, 9) = "日期"
.TextMatrix(0, 10) = "时间"

'循环执行,直到最后一个记录
Do While Not mrc.EOF
.Rows = .Rows + 1 '防止空白行出现
.CellAlignment = 4
.TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(2))
.TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(0))
.TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(4))
.TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(5))
.TextMatrix(.Rows - 1, 4) = Trim(mrc.Fields(6))
.TextMatrix(.Rows - 1, 5) = Trim(mrc.Fields(3))
.TextMatrix(.Rows - 1, 6) = Trim(mrc.Fields(10))
.TextMatrix(.Rows - 1, 7) = Trim(mrc.Fields(8))
.TextMatrix(.Rows - 1, 8) = Trim(mrc.Fields(14))
.TextMatrix(.Rows - 1, 9) = Trim(mrc.Fields(12))
.TextMatrix(.Rows - 1, 10) = Trim(mrc.Fields(13))
mrc.MoveNext
Loop
MsgBox "条件查询结束", vbOKOnly + vbExclamation, "提示!"
mrc.Close
End With
End Sub


注意:

      1、字段名与数据库中的列名相对应,将字段名转化为数据库语言,查询识别;
      2、借助模块和循环语句,减少代码量;
      3、代码输入过程还是要仔细,单引号双引号少一个都会出现不一样的问题;
           单引号是sql查询语句中表示一个字符串的开始结束的符号;双引号是VB语言字符串表示字符串开始结束的符号;

小结:

     做的时候还是要走心,理清思路,一步步完善;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: