机房优化

在跨过了机房的三座大山之后,我们更要回过头来,看看我们所做的窗体有哪些功能需要完善。

1.组合查询之退格
思路:利用timer的特性,实时判断用户的选择,达到实现退格的目的。

Private Sub Timer1_Timer()
    If ComboCombine1.Text = "" Then
        Combofield2.Enabled = False
        Combofield3.Enabled = False
        ComboOpsign2.Enabled = False
        ComboOpsign3.Enabled = False
        Txtquery2.Enabled = False
        Txtquery3.Enabled = False
        ComboCombine2.Enabled = False
        Combofield2.Text = ""
        Combofield3.Text = ""
        ComboOpsign2.Text = ""
        ComboOpsign3.Text = ""
        Txtquery2.Text = ""
        Txtquery3.Text = ""
    Else
        If ComboCombine2.Text = "" Then
            Combofield3.Enabled = False
            ComboOpsign3.Enabled = False
            Txtquery3.Enabled = False
            Combofield3.Text = ""
            ComboOpsign3.Text = ""
            Txtquery3.Text = ""
        End If
    End If
End Sub

2.根据选择的内容加载不同内容

思路:根据选择的内容加载不同的内容或控件

Private Sub Combofield1_Click()
    ComboOpsign1.Clear
    If Combofield1.Text = "姓名" Then
        ComboOpsign1.AddItem "="
        ComboOpsign1.AddItem "<>"
    Else
        ComboOpsign1.AddItem "="
        ComboOpsign1.AddItem "<>"
        ComboOpsign1.AddItem ">"
        ComboOpsign1.AddItem "<"
    End If
End Sub
Private Sub Combofield1_Click()
    Select Case Combofield1.Text
        Case "教师"
            Txtquery1.Visible = True
            DTPicker1.Visible = False
            Txtquery1.Text = ""
        Case "机器名"
            Txtquery1.Visible = True
            DTPicker1.Visible = False
            Txtquery1.Text = ""
        Case Else
            DTPicker1.Visible = True
            Txtquery1.Visible = False
            Txtquery1.Text = Trim(DTPicker1.Value)
    End Select
End Sub

3.动态下机
思路:利用timer控件的特性,每隔几分钟进行一次数据的对比,得以使其成功自动下机。
动态下机的实现离不开几个比较重要的部分
1.利用数组对多条进行查询

    ReDim a(mrc.RecordCount) As String
    For i = 0 To mrc.RecordCount - 1
    a(i) = Trim(mrc!cardno)
    cardno = a(i)

2.获取单位金额

pay = Format(mrc1.Fields(0) / 60, "0.0")

3.获取上机时间

valueDate = DateDiff("n", mrc!ondate, Date)
valueTime = DateDiff("n", mrc!OnTime, Time)
valueTime = valueDate + valueTime

4.根据用户判断消费金额与余额

    If Trim(mrc2.Fields(14)) = "固定用户" Then
        valueDate = DateDiff("n", mrc!ondate, Date)
        valueTime = DateDiff("n", mrc!OnTime, Time)
        valueTime = valueDate + valueTime
        pay = Format(mrc1.Fields(0) / 60, "0.0")
        pay = Format(pay * valueTime, "0.0")
        If mrc2.EOF And mrc2.BOF Then
            Exit Sub
        Else
            If pay > Val(mrc2.Fields(7)) Then

            mrc2.Fields(7) = 0
            mrc2.Update
            mrc3.AddNew
            mrc3.Fields(1) = mrc4!cardno
            mrc3.Fields(2) = mrc4!studentNo
            mrc3.Fields(3) = mrc4!studentName
            mrc3.Fields(4) = mrc4!Department
            mrc3.Fields(5) = mrc4!sex
            mrc3.Fields(6) = mrc4!ondate
            mrc3.Fields(7) = mrc4!OnTime
            mrc3.Fields(8) = Date
            mrc3.Fields(9) = Time
            mrc3.Fields(10) = valueTime
            mrc3.Fields(11) = pay
            mrc3.Fields(12) = mrc2!cash - pay
            mrc3.Fields(13) = "正常下机"
            mrc3.Fields(14) = GetThisComputerName
            mrc3.Update
            mrc2!cash = mrc3.Fields(12)
            mrc2.Update
            mrc4.Delete
            mrc.MoveNext
            MsgBox "卡号:" & a(i) & "余额不足,即将下机!", vbOKOnly + vbExclamation, "提示"
            
            End If
        End If

4.打开后一个窗体时自动关闭前一个窗体
这个算是一个小小的不足之处,第一次做出来整体时没有发现这个问题,后来是伟强跟我说我这里有一个很神奇的东西,你肯定还没发现。结果让他一点,不出意外的前一个窗体就被卡死了。后来在网上查的时候才知道是因为VB6.0只允许同时有一个活动窗体。解决办法如下:

Private Sub Form_Activate()
    Dim x As Form
    For Each x In Forms
        If x.Name <> Me.Name And x.Name <> FrmMain.Name Then
            Unload x
        End If
    Next
End Sub

这次就分享到这里啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值