机房收费之细节优化

          登高而望远,感觉机房收费系统也是如此,刚开始敲机房的时候就觉得会有很多细节去考虑和添加,自己也尽量边敲边完善,但毕竟身在此山中,云深不知处。有很多东西是当时所不曾考虑到的,所以越到后面问题所暴露出来的也就越多,下面是自己对部分细节的优化:

1、临时用户下机相当于退卡

    txtSQL = "select * from student_Info where type ='临时用户' and cardno ='" & Trim(txtCardNo.Text) & "'"    '如果是临时用户下机相当于退卡
    Set mrc5 = ExecuteSQL(txtSQL, MsgText)
    If Not (mrc5.BOF And mrc5.EOF) Then
        mrc5.Fields(10) = Trim("不使用")
    mrc5.Update

上机时,如果此卡已注销,再次上机需要重新激活

If Trim(CStr(mrc.Fields(10))) = "不使用" Then   '注销的卡号如果再次使用需要重新激活
        a = MsgBox("此卡已注销,是否重新激活?!", vbYesNo + vbQuestion, "提示")
        If a = vbYes Then
        txtSQL = "update student_Info set status= '" & Trim("使用") & "' where cardno = '" & txtCardNo.Text & "'"
        Else
        txtCardNo.Text = ""
        txtCardNo.SetFocus
        Exit Sub

2、一开始以为值班教师表只涉及到一个查询,后来才发现它和上机一样,教师登陆和退出也是一样要留下痕迹然后更新到表的。

txtSQL = "select * from User_Info where UserID ='" & UserName & "'" '根据用户名来判断用户等级
    Set mrc1 = ExecuteSQL(txtSQL, MsgText)
    If Not (mrc1.BOF And mrc1.EOF) Then
    strLevel = mrc1.Fields(2)
    '给正在值班老师表增加一行记录
    txtSQL = "select * from OnWork_info"
    Set mrc2 = ExecuteSQL(txtSQL, MsgText)
    mrc2.AddNew
    mrc2.Fields(0) = UserName
    mrc2.Fields(1) = strLevel
    mrc2.Fields(2) = Format(Date, "yyyy-mm-dd")
    mrc2.Fields(3) = Format(Time, "hh:mm:ss")
    mrc2.Fields(4) = Trim(VBA.Environ("computername"))
    mrc2.Update
    '给值班记录表添加记录
    txtSQL = "select * from worklog_info"
    Set mrcc = ExecuteSQL(txtSQL, MsgText)
    
    mrcc.AddNew
    mrcc.Fields(1) = UserName
    mrcc.Fields(2) = strLevel
    mrcc.Fields(3) = Format(Date, "yyyy-mm-dd")
    mrcc.Fields(4) = Format(Time, "hh:mm:ss")
    mrcc.Fields(7) = Trim(VBA.Environ("computername"))
    mrcc.Fields(8) = Trim(True)
    mrcc.Update

</pre><pre>
3、全部学生下机,开始的时候完全没思路,后来问的贾文静同学,用了一个循环。

Private Sub AllStudent_Click()
    Dim i, j As Single  '定义一个循环
    With myflexgrid
    If myflexgrid.Rows < 2 Then     '如果表格行数小于2的话...
        MsgBox "暂无学生上机"
    Else
    
    With myflexgrid
    i = myflexgrid.Rows - 1    'i=记录数
        For j = i To 1 Step -1  '从 j = i 到 1 步长 -1
        myflexgrid.RowSel = j   '选中j行
    Call viewdata   'Call了一个选中下机过程
    Next j
    
    MsgBox "恭喜您,全部下机成功!", vbOKOnly + vbInformation, "恭喜您"
    End With
  
End If
End With
End Sub


4、在MSHFlexGrid中选中、移除某行

    myflexgrid.SelectionMode = flexSelectionByRow     '单击的时候选择的是整行
    myflexgrid.FocusRect = flexFocusNone               '在当前单元的周围画一个焦点框
    myflexgrid.HighLight = flexHighlightWithFocus       '该值决定了所选定的单元是否突出显示
    .RemoveItem .RowSel           '移除所选的那行
5、根据用户不同的等级来限制用户的管理权限

Private Sub MDIForm_Load()
    Dim mrcc As ADODB.Recordset
    Dim txtSQL As String
    Dim MsgText As String
    Dim strLevel As String  '定义变量

    txtSQL = "select * from User_Info where UserID ='" & UserName & "'" '根据用户名来判断用户等级
    Set mrcc = ExecuteSQL(txtSQL, MsgText)

    strLevel = mrcc!Level
    Select Case Trim(strLevel)
 
    Case "管理员"
    Case "操作员"   '如果是操作员,则管理员那一栏不可用
    administrator.Enabled = False
    Case "一般用户"   '如果是一般用户,则管理员和操作员两栏不可用
    administrator.Enabled = False
    operator.Enabled = False
    End Select
    
End Sub
6、如果有些地方实在是不好解决的话,在不伤大雅的情况下还是可以用下On Error GoTo进行错误跳转的。



评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值