学生信息管理系统----优化问题总结(上)

问题一:关于子窗体在MDI窗体中位置的问题

对于学生有一个细节的问题大家可能都会有疑问,同样小编在今天之前也有很大的疑问,那就是我们的大多数窗体为什么都要设置为MDI的子窗体? 感觉好像也没什么区别。

今天我在通过百度了解之后和大家分享,我们为什么设置主窗体和子窗体:
如果你仔细观察就会发现:如果我们不设置子窗体,那么当你关闭程序的主窗体的时候,那个子窗体还任然显示。如果用一个生活中的例子来说就是:当你把一个软件关闭后,它其中的一些功能任然可以运行,这是不是很离谱?
但是今天关于窗体优化的时候遇到一个问题:
子窗体的位置不可以通过属性:startupposition 来设置
这里写图片描述

现在问题出来了,我的所有窗体几乎都是在左上角,既然是优化,就要保证程序的美观,肯定需要将他放在正中间,后来我用代码实现了这个功能
代码:
Private Sub form_resize()
Me.Left = (FrmMain.Width - Me.Width) / 2            
Me.Top = (FrmMain.Height - Me.Height) / 2
Me.Width = 10000
Me.Heigt = 7000      
endsub

但是这个时候又出现一个
这里写图片描述
小编通过百度了解到:

这个问题的意思就是加载的过程中MDI窗体加载之后没有删除就又加载了一次,然而在一个工程中是不可以同时加载俩个MDI窗体的

我们可以找到“公共模块”将下面这个语句块中的一个代码语句改成注释,也就是删除之后,那么就不会出现这个问题。
这里写图片描述

Sub main()
Dim fLogin As New frmLogin
'显示登陆窗口
fLogin.Show vbModal
'判断是否授权用户
If Not fLogin.OK Then
'OK为fMainForm类的成员
    'Login Failed so exit app
    End
End If
Unload fLogin
'判断是将进入系统
'Set fMainForm = New FrmMain
FrmMain.Show

End Sub

最后
题解决

问题二:添加班级信息窗体—-bug

当数据库中没有任何关于班级信息的数据时,点击“添加班级信息窗体”会出错

在优化的时候我把数据库中表中的数据全部删除了,重新开始梳理,但当我运行”添加班级信息窗体” 的时候发现报错:
这里写图片描述

当时提示错误的代码:
这里写图片描述

这个时候我猜测 一定是mrc 的问题: 于是我将鼠标放在 MsgText 之后显示0条记录
所以这说明mrc中是没有数据的,那么整个过程中所有关于mrc的操作的无效的,所以才会出现错误的提示!
这里写图片描述

解决办法的思路:
如果mrc数据集中没有数据,那么我们就让程序跳过这个关于mrc的操作!

即用一个if 判断语句就可以实现:

这里写图片描述

具体代码:

具体代码:
Private Sub Command1_Click()
Dim mrc As ADODB.Recordset
Dim MsgText As String
Dim txtSQL As String
'判断内容是否为空
If Not Testtxt(txtClassno.Text) Then
    MsgBox "请输入班号!", vbOKOnly + vbExclamation, "警告"
    txtClassno.SetFocus
    Exit Sub
End If
If Not Testtxt(txtDirector.Text) Then
    MsgBox "请输入班主任!", vbOKOnly + vbExclamation, "警告"
    txtDirector.SetFocus
    Exit Sub
End If
If Not Testtxt(txtClassroom.Text) Then
    MsgBox "请输入教室!", vbOKOnly + vbExclamation, "警告"
    txtClassroom.SetFocus
    Exit Sub
End If
If Not Testtxt(combograde.Text) Then
    MsgBox "请输入年级!", vbOKOnly + vcexclamation, "警告"
    combograde.SetFocus
    Exit Sub
End If
'返回数据库中所有记录
txtSQL = "select*from class_info"
'执行查询语言
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then


    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
    '关闭数据库对象
    mrc.Close
    MsgBox "添加班级信息成功!", vbOKOnly + vbExclamation, "添加班级信息”"
Else

'移动到第一条语句
mrc.MoveFirst
'开始循环结构的条件是:判断是否到数据集最后
'-----------------------------------------------------------
While (mrc.EOF = False)
    '判断班号是否重复
    If (Trim(mrc.Fields(0)) = Trim(txtClassno.Text)) Then
        MsgBox "班号已经存在,请重新输入班号!", vbOKOnly + vbExclamation, "警告"
        Exit Sub
        txtClassno.Text = ""
        txtClassno.SetFocus
    Else
        '移动到下一条记录
        mrc.MoveNext
    End If
Wend
'_______________________________________________________________
'把当前的内容添加到数据库中
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
'关闭数据库对象
mrc.Closf

MsgBox "添加班级信息成功!", vbOKOnly + vbExclamation, "添加班级信息”"
End If 

所以这个时候即使mrc数据集为空,也不怕程序出现错误提示了

通过if 判断语句执行:

    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
    '关闭数据库对象
    mrc.Close
    MsgBox "添加班级信息成功!", vbOKOnly + vbExclamation, "添加班级信息”"

这里写图片描述

这块小代码运行的前提只是当数据集mrc为空,防止程序运行关于空的mrc的操作!避免出现错误提示!! 如果mrc不为空,那么就可以正常运行之前的代码。

问题三:修改班级信息—

这个bug和上一个窗体的bug有点相似:

当class中的数据为空的时候你点击修改班级信息,就会弹出错误提示

这里写图片描述
经过调试发现任然是由于数据库中没有数据,然后导致mrc为空,里面有很多关于mrc的操作语句

这个就可以用一个完美的提示来盖住这个错误,其实是用一个 if 的判断语句来 避开关于mrc的操作语句,这样就不会有错误提示了~
总是听别人说良好的用户体验至关重要!

当你用到一个软件突然报错了,你会不会有点慌?
但是如果这个时候用一个完美的提示来代替这个错误提示,会不会更好?

Private Sub Form_Load()
Dim txtSQL As String
Dim MsgText As String
'sql语句
txtSQL = "select * from class_info"
'执行查询语言
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
    MsgBox "您的数据中没有添加班级信息,所以无法修改信息,请先添加班级信息再来修改信息!", vbOKOnly + vbExclamation, "警告"
    Mrc.close
Else
'移动到第一条记录
mrc.MoveFirst
'显示数据
Call viewdata
'记录当前记录的位置
mcbookmark = mrc.Bookmark
'给标志赋初值
mcclean = True
'把数据库中的数据添加到列表框中
For i = 1 To mrc.RecordCount
    combograde.AddItem mrc.Fields(3)
    mrc.MoveNext
Next i
  End If
  End Sub

我向窗体的load 事件中添加了一个if 判断语句,判断mrc数据集是否为空,如果是空,那么就提示用户无数据信息,并且关闭数据集。这个就不会提示错误的信息,导致降低程序的用户体验。

其实最开始的时候我用的不是
Mrc.close
而是 unload me , 我想直接退出来,
但是发现错误
这里写图片描述

百度一查发现 在窗体的load 事件中不能添加unload me 事件。

猜你喜欢

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