机房收费系统---优化(一般用户)

1:登录窗体的文本框禁止复制

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then 
    Clipboard.clear  ’清空粘贴板
Endif 
End Sub

2:msflexgrid 控件的显示的问题

   a、去除多余空行

原因:

原因:当我们多次单击查询按钮的时候,.rows属性会一直累加,所以导致我们的总行数一直在增加。

这个时候我们需要做的就是: 在每次单击之前先将.rows的属性设置为1 只剩下标题行。

 b : 选中变色

Private Sub myFlexGrid1_Click()
      myFlexGrid1.SelectionMode = flexSelectionByRow '单击的时候选择的是整行
      myFlexGrid1.FocusRect = flexFocusNone  '在当前单元的周围华一个焦点框
End Sub

c:当msflexgrid的内容为空的时候,禁止使用excel 导出:

If MSFlexGrid1.Rows = 1 Then
            MsgBox "当前没有查询到任何记录,所以无法导出到Excel", vbOKOnly + vbExclamation, "警告"
            Exit Sub

在建立表之前添加一条判断语句,当我们的msflexgrid 中的记录只有标题栏,

也就是只有一条记录,那么我们就提示错误,不允许数据导出!

3:上机状态查询窗体:

   a : 当字段名选中为姓名的时候,操作符中只能显示“=”

  b : 当字段名选中日期或者时间的时候要显示日期或时间控件

代码:
Private Sub col1_Click()
      '如果我们选中的是姓名,那么我们的符号框中只能显示等于号
      If col1.Text = "姓名" Then
            fuhao1.Text = "="
            fuhao1.Enabled = False
      Else
            fuhao1.Enabled = True
            
      End If
      '如果我们选中的查询字段是日期,那么我们将显示日期控件,否则隐藏
      If col1.Text = "上机日期" Or col1.Text = "下机日期" Then
            day1.Visible = True
            txt1.Text = day1.Value
            
      Else
            day1.Visible = False
            txt1.Text = ""
            
      End If

但是这样写有一个问题就是当我们在选中时间的时候由于我将日期控件的属性改为时间控件之后,返回的时间值还是日期,所以如果随便输入一些不符合要求的符号,那么久容易出错,所以我在查询控件的代码中加入了一个on error goto 代码:

On Error GoTo Err_line
Err_line:
      
      
      
      Exit Sub

 4:所有学生下机:

优化之前存在的问题:

 

   a : 所有学生下线虽然数据库中的数据都下线了,但是主界面的上机人数却没有改变

     没有跟新line表中的数据,也没有更新student表中所剩的金额

全部下机涉及到的表有:

Line_info  online_info  student_info

 

代码:
Private Sub allDown_Click()
      Dim mrc As ADODB.Recordset '链接online 表
      Dim txtsql As String
      Dim msgtxt As String
      Dim mrcc As ADODB.Recordset '链接line表
      Dim txtsqlc As String
      Dim msgtxtc As String
      Dim mrc_stu As ADODB.Recordset '链接学生表
      Dim txtsqls As String
      Dim msgtxts As String
      Dim dat
      dat = Date
      Dim tim
      tim = Time
      Dim usemoney As Long
      Dim usetime As Long
      Dim cardid As String
      Dim cashmoney As Long
      txtsqlc = "select * from line_info where status='true'"
      Set mrcc = ExecuteSQL(txtsqlc, msgtxtc)
            If Not mrcc.EOF Then
                  Do While Not mrcc.EOF
                        cardid = mrcc.Fields(1)
                        mrcc.Fields(8) = dat
                        mrcc.Fields(9) = tim
                        costday = DateDiff("n", mrcc.Fields(6), Date) '花费的时间
                        costtime = DateDiff("n", mrcc.Fields(7), Time) '花费的时间
                        usetime = Val(costday) + Val(costtime)
                        mrcc.Fields(10) = Trim(Str(usetime))
                        mrcc.Fields(13) = "false"
                        mrcc.Fields(14) = "HYF"
                        
                        mrcc.Update
                  txtsqls = "select * from student_info where cardno='" & Trim(cardid) & "'"
                  Set mrc_stu = ExecuteSQL(txtsqls, msgtxts)
                        cashmoney = mrc_stu.Fields(7)
                        If usetime < 2 Then
                              usemoney = 0
                              mrcc.Fields(11) = 0
                              mrcc.Fields(12) = Trim(Str(cashmoney))
                              mrcc.Update
                        Else
                              If usetime < 60 Then
                                    usemoney = 2
                                    mrcc.Fields(11) = 2
                                    mrcc.Fields(12) = Trim(Val(cashmoney) - Val(usemoney))
                                    mrc_stu.Fields(7) = Trim(Val(cashmoney) - Val(usemoney))
                                    mrc_stu.Update
                                    mrcc.Update
                              Else
                                    usemoney = (usetime Mod 60) * 2
                                    mrcc.Fields(11) = Str(usemoney)
                                    mrcc.Fields(12) = Trim(Val(cashmoney) - Val(usemoney))
                                     mrc_stu.Fields(7) = Trim(Val(cashmoney) - Val(usemoney))
                                    mrc_stu.Fields.Update
                                    mrcc.Update
                              End If
                        End If
                  mrcc.MoveNext
                  
                  Loop
            End If
            
                        
      '将所有的学生下机
      txtsql = "select * from online_info"
      Set mrc = ExecuteSQL(txtsql, msgtxt)
            If mrc.EOF Then
                  MsgBox "当年没有用户上机!", vbOKOnly + vbExclamation, "警告"
            Else
                  Do While Not mrc.EOF
                        mrc.Delete
                        mrc.MoveNext
                  Loop
                  myFlexGrid1.Clear
                  
                  MsgBox "所有学生已经成功下机!", vbOKOnly + vbExclamation, "警告"
                  frmMain.allPeople(10).Caption = "0"
                  
            End If
            
End Sub

5:再某一时刻只让一个窗体显示:

Private Sub Form_Deactivate()
 
    If Me.WindowState <> 1 Then
       Me.WindowState = 1
    End If
End Sub

6:强烈大家在更新数据表中数据的时候,在添加的内容前面加上trim()函数

trim()函数的作用是去掉括号内部字符串的前后空格,

如果不加这个trim()函数,我们添加到数据库表中的数据就是  空格+字符串,所添加的字符串的前面会多一个空字符,

这样不便于后面的“数据库查找操作”!

猜你喜欢

转载自blog.csdn.net/qq_30631063/article/details/82928528