在跨过了机房的三座大山之后,我们更要回过头来,看看我们所做的窗体有哪些功能需要完善。
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
这次就分享到这里啦!