学生基本信息维护主要包括两大功能查询和修改。这里的查询比之前做的简单查询稍稍复杂了点,此处要用到组合查询。要成功实现查询这一功能,首先要找到突破点,关键点就是组合关系。如果没有选择组合关系,便是一般的简单查询,反之,则是组合查询。在组合查询中,很重要的一点是将combobox中的中文字转换成英文。这里,我用到的是函数的转换——FiledName
此实现此功能的重要代码如下:
'查询满足条件的内容
txtsql = "select * from student_info where "
'查询同时满足选择条件、输入内容的信息
txtsql = txtsql & FiledName(comboFiledName1.Text) & Trim(comboOperate1.Text) & " " & Trim(txtContent1.Text) & " "
'如果第一个组合关系不为空
If Trim(comboRelation1.Text <> "") Then
If Trim(comboFiledName2.Text) = "" Or Trim(comboOperate2.Text) = "" Or Trim(txtContent2.Text) = "" Then
MsgBox "你选择了第一个组合关系,请输入第二行数据之后再查询!", vbOKOnly, "提示"
Exit Sub
Else
txtsql = txtsql & FiledName(comboRelation1.Text) & " " & FiledName(comboFiledName2.Text) & Trim(comboOperate2.Text) & " " & Trim(txtContent2.Text) & " "
'如果第二个组合关系不为空
If Trim(comboRelation2 <> "") Then
If Trim(comboFiledName3.Text) = "" Or Trim(comboOperate3.Text) = "" Or Trim(txtContent3.Text) = "" Then
MsgBox "你选择了第二个组合关系,请输入第三行数据之后再查询!", vbOKOnly, "提示"
Exit Sub
Else
txtsql = txtsql & FiledName(comboRelation2.Text) & " " & FiledName(comboFiledName3.Text) & Trim(comboOperate3.Text) & " " & Trim(txtContent3.Text) & " "
End If
End If
End If
End If
'执行查询语句
Set mrc = ExecuteSQL(txtsql, msgtext)
Public Function FiledName(strFliedName As String) As String
Select Case strFliedName
Case "卡号"
FiledName = "cardno"
Case "学号"
FiledName = "studentno"
Case "姓名"
FiledName = "studentname"
Case "性别"
FiledName = "sex"
Case "系别"
FiledName = "depart"
Case "年级"
FiledName = "grade"
Case "班级"
FiledName = "class"
Case "与"
FiledName = "and "
Case "或"
FiledName = "or"
End Select
End Function
第二大功能是修改。首先,单击修改按钮会自动跳到“修改学生信息”窗体,此时要明白修改的内容是查询到的其中一条记录进行修改,因此要对修改的记录进行选择,并将将该条记录显示在“修改学生信息”的窗体上。其次就是实现“修改学生信息”窗体中的两大功能:确定修改和取消修改。
思路理清了,就是代码的编写过程了。以下是点击修改按钮的重要代码:
'单击时选择整行
myFlexGrid.SelectionMode = flexSelectionByRow
'在当前单元的周围画一个焦点框
myFlexGrid.FocusRect = flexFocusNone
'该值决定了所选定的单元是否突出显示
myFlexGrid.HighLight = flexHighlightWithFocus
With myFlexGrid
If .RowSel = 0 Then
MsgBox "请选择要修改的数据!", vbOKOnly, "提示"
Exit Sub
Else
If .RowSel > 0 Then
' frmBasicInfoMaintain.Hide
TmpCardno = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 0)
frmEditStudent.txtSID = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 1)
frmEditStudent.txtName = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 2)
frmEditStudent.comboSex = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 3)
frmEditStudent.txtDept = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 4)
frmEditStudent.txtGrade = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 5)
frmEditStudent.txtClass = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 6)
frmEditStudent.txtCardNo = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 0)
frmEditStudent.txtCash = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 7)
frmEditStudent.txtStatus = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 9)
frmEditStudent.txtExplain = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 8)
frmEditStudent.comboType = myFlexGrid.TextMatrix(myFlexGrid.RowSel, 12)
frmEditStudent.Show
End If
End If
End With
不得不说SQL语句的功能很强大呀!在这个窗体中,我也学会了很多。刚开始,还很迷茫,加上给的系统实现的功能并不完美。不过还好,身边有这么多优秀的小伙伴,多多交流碰撞,思路一下子就打开了。“站在巨人的肩膀上!”哈哈