【前言】
选中下线和所有学生下线,其实和主窗体的下机按钮的内容一样。感觉自己如果还是把代码在重复的写一遍,好费劲啊。所以聪明的我想了一个聪明的办法,哈哈哈。
【简单方法】
1、分析
MDI窗体的下机按钮的卡号,是控件txtcardno(就是卡号)的文本。那如果调用下机按钮的事件,只需要将选中的学生卡号赋值给txtcardno.text在进行调用下机按钮单机事件就可以了
很容易理解吧。嘿嘿
2、具体实现
(1) 选中学生下线
① 先改变MSHFlexGrid1的属性,如图所示
② 在窗体加载事件里面添加代码
MSHFlexGrid1.SelectionMode = flexSelectionByRow '单击时选择整行
MSHFlexGrid1.FocusRect = flexFocusNone '在当前但愿的周围画一个焦点框
MSHFlexGrid1.HighLight = flexHighlightWithFocus '该值决定了所选定的单元是否突出示
③ 将MDI窗体的下机按钮单击事件,改成Public定义事件
Public Sub cmdOffLine_Click()
④ 在选中学生下线单击事件里面添加代码
Private Sub ChooseOffLine_Click()
With MSHFlexGrid1
If .TextMatrix(.RowSel, 0) = "" Or .RowSel = 0 Then '如果选择的那一行第一列是空或者选择的哪一行是第一行
MsgBox "请选择数据!", vbOKOnly + vbExclamation, "提示"
Exit Sub
Else
frmMain.txtCardNo.Text = .TextMatrix(.RowSel, 0) '将选中的那一行的第一列表示卡号赋值给txtcardno.text
frmMain.cmdOffLine.Value = True '调用主窗体的下机按钮单机事件
.RemoveItem (.RowSel) '将选中的那一行从MSHFlexGrid1移除
MsgBox "选中学生下机成功!", vbOKOnly + vbExclamation, "提示"
End If
End With
End Sub
(2)所有学生下线
① 其实就是上面选中学生下线的前三步,如果设置过,之间进行下面的一步
② 在所有学生下线单击事件里面添加代码
Private Sub AllOffLine_Click()
Dim i As Integer
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim msgtext As String
txtSQL = "select * from online_info" '连接在线表
Set mrc = ExecuteSQL(txtSQL, msgtext)
'判断是否有卡号上机
If mrc.RecordCount = 0 Then
MsgBox "现在没有人上机!", vbOKOnly + vbExclamation, "提示"
mrc.Close
Else
mrc.MoveFirst '回到第一条记录
'将上机卡号定义为一个数组,ReDim就是定义数组的
ReDim a(mrc.RecordCount) As String
For i = 0 To mrc.RecordCount - 1 '建立循环
a(i) = Trim(mrc!CardNo)
CardNo = a(i)
frmMain.txtCardNo.Text = a(i) '给txtcardno.text赋值
frmMain.cmdOffLine.Value = True '调用MDI窗体的下机单机事件
mrc.MoveNext '移动到下一条记录
Next
MsgBox "所有学生下机成功!", vbOKOnly + vbExclamation, "提示"
MSHFlexGrid1.Clear '清空MSHFlexGrid1里面的内容
End If
End Sub