以学生上机统计信息查询
#前言
学生上机统计信息查询要实现的功能是查询 line 表中的一些信息,要查询的关键词主要是line表中的各个属性,可根据多个属性结合的方式来查询相关内容,所以是组合查询。
#正文
代码如下(相关解释在代码里)
Private Sub cmdOK_Click()
'建立与数据库的联系(查询line表)
txtsql = "select * from line_Info where "
'判断第一行的3个选择条件是否为空
'判断字段的选择是否为空
If comboFiledName1.Text = "" Then
MsgBox "请选择需要查询的信息!", vbOKOnly + vbExclamation, "警告"
comboFiledName1.SetFocus
Exit Sub
End If
'判断操作符的选择是否为空
If ComboOperate1.Text = "" Then
MsgBox "请选择限定符号!", vbOKOnly + vbExclamation, "警告"
ComboOperate1.SetFocus
Exit Sub
End If
'判断要查询的内容是否为空
If Text1.Text = "" Then
MsgBox "请在输入要查询的内容", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Exit Sub
End If
'根据第一行进行查询(只有第一行不需要组合查询)
txtsql = txtsql & Trim(Field(comboFiledName1.Text)) & " " & Trim(ComboOperate1.Text) & "'" & Trim(Text1.Text) & "'"
'开始组合查询(有下一行可就开始组合查询)
If Combo7.Text = "与" Or Combo7.Text = "或" Then '选择框中有了与或者或
If Trim(Field(comboFiledName2.Text)) = "" Or Trim(ComboOperate2.Text) = "" Or Trim(Text2.Text) = "" Then '判断第二行是否为空
MsgBox "您选择了组合关系,请输入数据之后再查询", vbOKOnly, "提示信息"
Exit Sub
Else
txtsql = txtsql & Trim(Field(Combo7.Text)) & " " & Trim(Field(comboFiledName2.Text)) & ComboOperate2.Text & "'" & Trim(Text2.Text) & "'" '组合查询
End If
End If
If Combo8.Text = "与" Or Combo8.Text = "或" Then '有3行的组合查询
If Trim(Field(comboFiledName3.Text)) = "" Or Trim(ComboOperate3.Text) = "" Or Trim(Text3.Text) = "" Then
MsgBox "您选择了第二个组合,请输入数据之后在查询", vbOKOnly, "提示"
Exit Sub
Else
txtsql = txtsql & Trim(Field(Combo8.Text)) & " " & Trim(Field(comboFiledName3.Text)) & ComboOperate3.Text & "'" & Trim(Text3.Text) & "'"
End If
End If
'开始进行查找
Set mrc = executeSQL(txtsql, msgtext)
If mrc.RecordCount = 0 Then
MsgBox "没有您要查找的学生上机记录!", vbOKOnly + vbCritical, "查询提示"
comboFiledName1.SetFocus
myFlexGrid.Rows = 1
'存在上机记录查询成功,填充到表格
Else
With myFlexGrid '添加表头
.Rows = 1
.CellAlignment = 4
.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) = "备注"
If mrc.BOF Then '判断数据库是否为空
MsgBox "学生上机记录为空!"
Exit Sub
End If
Do While Not mrc.EOF '逐行添加数据
.Rows = .Rows + 1
.CellAlignment = 4
.TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(1))
.TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(3))
.TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(6))
.TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(7))
.TextMatrix(.Rows - 1, 4) = Trim(mrc.Fields(8)) & ""
.TextMatrix(.Rows - 1, 5) = Trim(mrc.Fields(9)) & ""
.TextMatrix(.Rows - 1, 6) = Trim(mrc.Fields(11))
.TextMatrix(.Rows - 1, 7) = Trim(mrc.Fields(12))
.TextMatrix(.Rows - 1, 8) = Trim(mrc.Fields(13))
mrc.MoveNext
Loop
End With
mrc.Close
myFlexGrid.CellAlignment = 4
End If
End Sub
其他的command就比较简单了。
#注意事项
##(1) 逻辑很重要,逻辑对了代码就会非常的简单和清晰。
当两个组合框都为空时,则不用组合查询,只需要查询line表&第一行数据(此时下边两行查询条件都锁住不可操作);
当组合框1不为空时,则表明查询第一行和第二行,需要组合查询,(第二行解锁),此时需要查询line表&第一行数据&第二行数据(此时第三行还是锁住不可操作);
当组合框2也不为空时,则表明查询三行数据,更是组合查询,(三行都解锁),此时查询line表&第一行数据&第二行数据&第三行数据。
##(2)如何在没有组合查询的时候将第二行和第三行锁住?
我们是以组合框是否为空来判断要不要锁住下边的条件框,所以需要在还没操作之前就将后两行的锁住。在此窗体的click时间处进行。也就是这里:
然后,当点击组合框时解锁即可.。
##(3)用户体验是很重要的,对于第一图中的符号,要查询内容,是不是比原来的操作符等更通俗易懂呢,让用户体验更好,是我们的目标!
代码如有问题,请于本作者联系删除改正!