学生信息管理系统问题(一)

来源:互联网 发布:淘宝全球购资质查询 编辑:程序博客网 时间:2024/06/08 00:48

[TOC]

一、模块代码与登录窗体

问题一:子程序或函数未定义
这里写图片描述

解决:没有打冒号
这里写图片描述

executeSQL_error语句需要用“:”来引导下面的问题,总的来说还是敲代码的时候不认真

问题二:实时错误91,对象变量或with块变量未定义
这里写图片描述

解决:
未加双引号
是一个常见的问题,此处的对象只有mrc前面定义的一个recordset记录集,根本原因是数据库未连接,导致后面的recordset对象的EOF和BOF属性无效。

没有链接上数据库的原因,常见五种

  1. ODBC数据源没有配置好,导致VB与数据库链接不成功
  2. 数据库自身的配置管理器没有启动服务,导致数据库无法使用
    这里写图片描述

  3. 企业管理器-安全性-登陆”这里面访问的默认数据库没有设为你要访问的数据库,在属性里面可以更改

  4. 模块处链接数据库代码的错误
    这里写图片描述

  5. SQL语句是否敲错这里写图片描述

注意这里的符号分别为双引号、单引号+双引号、双引号+单引号+双引号。我就是出现了语句敲错的现象。

这段代码的意思是 从user_info表中查找用户编号的容,使之等于 txtusename中的内容

二、修改学籍窗体

问题一:错误91
又遇到这个问题
这里写图片描述

打开数据库连接时显示
这里写图片描述

ODBC数据源链接时显示
这里写图片描述

这个错误就是上面提到的数据库自身的配置管理器没有启动服务所致
解决:
这里写图片描述

问题二:类型不匹配
这里写图片描述

光标显示
这里写图片描述

类型不匹配错误,个人理解为等号两边的数据类型不能赋值。
即mrc的数据类型与 txtsql 和 msgtext的数据类型不匹配。
向上查找了一下,发现问题,改正之后可运行
这里写图片描述

问题三:实时错误3021 BOF或EOF中有一个是真,或当前的记录一被删除,所需要的操作需要一个当前的记录
这里写图片描述
无法修改记录集
错误原因:
由于系统中还未添加任何信息,没有可修改的内容,使得BOF(当前记录位于recordset对象的第一个记录之前)和EOF(当前记录位于recordset对象的最后一个记录之后)都为true,即数据库中没有记录。
解决办法:
1、添加错误处理

 Private Sub Form_Load()    Dim txtsql As String    Dim msgtext As String    'SQL语句    txtsql = "select * from student_info"    '执行查询操作    Set mrc = ExecuteSQL(txtsql, msgtext)    On Error GoTo 1:    '添加错误处理    mrc.MoveFirst    '显示数据    Call viewdata    '记录当前记录的位置    mybookmark = mrc.Bookmark    '给标志赋值    mcclean = True1:    If Err = 3021 Then        MsgBox "没有学籍信息,无法修改!"         unload Me    End IfEnd sub

2、可加在MID主窗体上,即当点击菜单中“修改学籍信息”按钮时直接弹出提示框。
在主窗体上添加代码

Private Sub modifysinfoMenu_Click()    Dim txtsql As String    Dim msgtext As String    Dim a    'SQL语句    txtsql = "select * from student_info"    '执行查询操作    Set mrc = ExecuteSQL(txtsql, msgtext)    If mrc.BOF And mrc.EOF Then        a = MsgBox("没有学籍信息,无法修改!是否添加学籍信息?", 4 + 48, "提示")        If a = 6 Then           frmAddsinfo.Show        Else        End If   Else        frmModifysinfo.Show    End IfEnd Sub'msgbox提示框中的个数字代表VB课本P62

3、在删除记录时,当全部删除记录也会报91的错误,原理和上面的一样,主要是要弄懂BOF与EOF的作用,详尽可看我的下一篇博客。
下面是对完全删除记录时报91错误的处理(创建错误处理)

Private Sub cmdDelete_Click()    Dim str2$    Dim str1    '记下当前记录的位置    mybookmark = mrc.Bookmark    '提示是否删除    str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")    On Error GoTo 1:    '判断按钮类型    If str2$ = vbOK Then        '移动到数据集下一条记录        mrc.MoveNext        '判断数据集对象是否为空        If mrc.EOF Then            '移动到数据集的第一条记录            mrc.MoveFirst            '记载当前记录的位置            mybookmark = mrc.Bookmark            '移动到最后一条记录            mrc.MoveLast            '删除记录            mrc.Delete            mrc.Bookmark = mybookmark            '调用函数显示数据            Call viewdata        Else            '记载当前位置            mybookmark = mrc.Bookmark            '移动到前一条记录            mrc.MovePrevious            '删除记录            mrc.Delete            '回到原来位置            mrc.Bookmark = mybookmark            '调用函数显示数据            Call viewdata        End If    Else        mrc.Bookmark = mybookmark        Call viewdata    End If    Exit Sub   '注意一定要有exit sub1:    Unload Me    str1 = MsgBox("已无班级记录,是否添加班级信息?", vbOKCancel + vbQuestion, "问题:")    If str1 = vbOK Then        frmaddclassinfo.Show    Else    End IfEnd Sub

同理——修改密码、修改课程、修改班级、修改成绩窗体也可使用同样的解决办法。

问题四:实时错误-2147217887(80040e21)
这里写图片描述
原因是:多大数是输入的数据违反了数据库的约束条件、字段大小超过限制提交的数据个数、字段数据类型不匹配、自动编号指定了值、或者自动编号未作自动赋值、字段不允许为空值等。
我在修改学籍信息时,将出生日期输入的年份太早了,而数据库中日期字段的数据类型有一定的范围,使得两者不匹配所致。
这里写图片描述
对于日期字段的数据类型范围可以自己查一下。

未完待续……..

原创粉丝点击