【VB】学生信息管理系统之优化问题

一、键盘事件

对于键盘事件我们要学习的有很多,之前看VB课本的时候都没怎么注意过键盘事件的使用方法,看来学习还真是需要不断重复的过程,即使永远记不住的。
关于键盘事件,百度了一篇文章感觉知识点很全
键盘事件总结文章

那么要学习键盘事件,当然ASCII表是必不可少的。

【VB】学生信息管理系统之优化问题_第1张图片

1、文本框输入内容只能为汉字###

Private Sub txtDirector_KeyPress(KeyAscii As Integer)
    If KeyAscii >= -20319 And KeyAscii <= -3652 Or KeyAscii = 8 Then
    Else
        MsgBox "请输入中文!", 0 + 48, "提示"
        KeyAscii = 0
        txtDirector.SetFocus
        
    End If
End Sub

2、文本框输入内容为数字

Private Sub txtCourseno_KeyPress(KeyAscii As Integer)
    If KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8 _
        Or KeyAscii = 13 Then
    Else
        If KeyAscii = 32 Then
            MsgBox "不能输入空格!", 0 + 48, "警告"
            KeyAscii = 0
        Else
            MsgBox "对不起,课程编号为数字!", 0 + 48, "警告"
            KeyAscii = 0
            txtCourseno.Text = ""
            txtCourseno.SetFocus
        End If
    End If
End Sub

感觉这只是最简单的一种方法,看了云召的博客,其实有好多种解决办法的,有兴趣的可以看一下
云召兄博客链接

二、出生日期与入校日期符合逻辑

'判断日期是否符合逻辑
If Val(Left(txtRudate, 4)) <= Val(Left(txtBorndate, 4)) Then
      MsgBox "入学年份和出生年份逻辑错误,请重新输入", vbOKOnly +vbExclamation, "警告"
      txtBorndate.SetFocus
                
      '给当前记录做标签
Exit Sub
Else
      txtSQL = "select * from student_info"
      '执行查询操作
      Set mrc = ExecuteSQL(txtSQL, MsgText)
      '添加记录
      mrc.AddNew
      '给每个字段赋值
		…….

利用了VB中学到的 val left函数,这样判断的并不是很精细,想要更精细当然要在添加条件。
当然办法不只这一种,看了邵聪的博客说还可以将这两个日期赋为两个不同的整型值,在通过代码比较这两个值得大小,感觉这个办法也很不错。
更多的办法自己去探讨啦!

三、将子窗体设置在屏幕中间代码

 Me.Left = Screen.Width / 2 - Me.Width / 2
 Me.Top = Screen.Height / 2 - Me.Height / 2

四、将选择文本框设置为自动显示第一条记录

If comboSID.ListCount > 0 Then
        comboSID.ListIndex = 0
End If

五、查询修改内容是否与数据库中重复

'查询方法一
'If Not (mrc.EOF Or mrc.BOF) Then
	'mrc.MoveFirst
	'While (mrc.EOF = False)
'If (Trim(mrc.Fields(0)) = Trim(txtClassno.Text) And Trim(mrc.Fields(1)) = Trim(combograde.Text)) Then
    'MsgBox "班号或年级已经存在,请重新输入!", vbOKOnly + vbExclamation, "警告"
    'txtClassno.Text = ""
    'txtClassno.SetFocus
    'Exit Sub
'Else
    'mrc.MoveNext
'End If
'Wend
'mrc.Bookmark = mybookmark
'mrc.Delete
'mrc.addnew
'......
    
    
'第二种查询方法
 txtSQL = "select * from class_info"
 Set mrcc = ExecuteSQL(txtSQL, MsgText)
    
 If Not (mrcc.EOF Or mrcc.BOF) Then
        mrcc.MoveFirst
    While (mrcc.EOF = False)
        If (Trim(mrcc.Fields(0)) = Trim(txtClassno.Text) And Trim(mrcc.Fields(1)) = Trim(combograde.Text) And _Trim(mrcc.Fields(2)) = Trim(txtDirector.Text) And Trim(mrcc.Fields(3)) = Trim(txtClassroom.Text)) Then
             MsgBox "班号或年级已经存在,请重新输入!", vbOKOnly + vbExclamation, "警告"
             mrcc.Close
             txtClassno.Text = ""
             txtClassno.SetFocus
             Exit Sub
         Else
             '移动到下一条记录
              mrcc.MoveNext
         End If
     Wend
        mrc.Delete
        mrcc.Close
        
        mrc.AddNew
        mrc.Fields(0) = Trim(txtClassno.Text)
        mrc.Fields(1) = Trim(combograde.Text)
        mrc.Fields(2) = Trim(txtDirector.Text)
        mrc.Fields(3) = Trim(txtClassroom.Text)
        mrc.Update
        MsgBox "更新数据成功!", vbOKOnly + vbExclamation, "修改班级信息"
    
    Else
         
         Exit Sub
    
    End If

六、设置年级课程,使已选课程不能重新加入

先判断后加入

Private Sub cmdadd_Click()
    '判断是否有内容被选中(列表框的listindex属性用来指示当前选择项,-1说明没有没选中的数据项

    
    For i = 0 To listselectcourse.ListCount - 1
                If listselectcourse.List(i) = listallcourse.List(listallcourse.ListIndex) Then 
                    MsgBox "此项已添加,请勿重复添加!"
                    Exit Sub
                End If
                
            Next
               
                
     If listallcourse.ListIndex <> -1 Then
        listselectcourse.AddItem listallcourse.List(listallcourse.ListIndex)
    End If
End Sub

你可能感兴趣的:(学生信息管理项目,VB与数据库知识)