学生信息管理系统——错误集锦(五)

啊!明日复明日,明日何其多。 我生待明日,万事成蹉跎。 真是我有意,时间无情呀,待我回过神来,已到一周之末,忽然发现好多事情还没有完成,新的计划又要开始,真的是万事成蹉跎呀!哎!罢了,罢了,继续总结吧!

错误一:

指定的 DLL 函数未找到(错误 453)

在用户库引用中找到动态链接库 (DLL),但在 DLL 内找不到指定的 DLL 函数。此错误有以下的原因和解决方法:

在函数声明中指定了错误的序号:

检查序号或以名称调用的函数。

所给的 DLL 名称虽正确,但指定的函数的版本并非当前的。

从机器上可得到正确的版本,但如果路径中含有错误版本的目录是在含有正确版本的目录之前的话,就会访问到错误的 DLL。检查机器上不同的版本,如果是较旧的版本,联系供给商以取得较新的版本。

如果在 32-位 Microsoft Windows 平台上工作的话,DLL 名称和别名(如果使用的话)都必须正确。

确保 DLL 名称和别名都正确。

有些 32-位 DLL 包含少量不同版本的函数,以适应 UnicodeANSI字符串。函数名称尾端的 "A" 表示是 ANSI 版本。函数名称尾端的 "W" 表示是 Unicode 版本。

如果函数有字符串类型参数,试着在函数名称尾端加上 "A"。

扫描二维码关注公众号,回复: 4605493 查看本文章

具体原因是:代码敲错(在函数声明中指定了错误的序号: 检查序号或以名称调用的函数。)

解决方法:在“外接程序”中,打开“外接程序管理器”,在“可用外接程序”中选择“VB 6 API Viewer”,在“加载行为”中选择“在启动中加载”和“加载/卸载”,点击“确定”。

之后,在“外接程序”中打开“API浏览器”,在“文件”中选择“加载文本文件”,选择“WIN32API”,点击“确定“。再在”键入您要查找的内容的开头几个字母“中输入需要查找的内容,在这个错误中需要输入”Get UserName“,点击”私有“,点击”插入“,会弹出:

点击“是“会插入相应的函数,点击”添加“即可。即:

Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

但是,在经过上一错误后,发现虽然进入程序,但是并没有加载窗体,原因是在进行到加红时跳过了:

具体原因是“If miCount = 3 Then“不对,猜测其意思时要登录3次才会加载窗体,事实也确实如此,应该改为” If miCount < 3 Then “

错误二:

在修改学籍信息,点击“更新记录”时,遇到错误:

错误:

    mrc.Delete              '删除当前记录

应改为:“mrcc.Delete     '删除当前记录”,同样的位置,继续报错为:实时错误“91”未解决。经过网上搜索,理解修改学籍过程是,在窗体加载的时候进行数据查询,在窗体中显示第一条数据并用书签记下当时位置,当你点击更改数据按钮时,它是先把这条正在修改的数据删除, 然后检查更改后的学号是否重复,如果没有重复就执行更改操作,然后回到当初用书签记录的位置。

解决问题链接:https://blog.csdn.net/zwj_jyzl/article/details/76150888

Private Sub cmdUpdate_Click()
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrcc As ADODB.Recordset
    
    myBookmark = mrc.Bookmark
    '判断是否处于修改状态
    If mcclean Then
        MsgBox "请先修改学籍信息", vbOKOnly + vbExclamation, "警告"
        Exit Sub
    End If
    '判断学号是否为空
    If Not Testtxt(Trim(txtSID.Text)) Then
        MsgBox "请输入学号!", vbOKOnly + vbExclamation, "警告"
        txtSID.SetFocus
        Exit Sub
    End If
    '判断姓名是否为空
    If Not Testtxt(Trim(txtName.Text)) Then
        MsgBox "请输入姓名!", vbOKOnly + vbExclamation, "警告"
        txtName.SetFocus
        Exit Sub
    End If
    '判断性别是否为空
    If Not Testtxt(Trim(comboSex.Text)) Then
        MsgBox "请选择性别!", vbOKOnly + vbExclamation, "警告"
        comboSex.SetFocus
        Exit Sub
    End If
   
    If Not Testtxt(Trim(comboClassNo.Text)) Then
        MsgBox "请选择班号!", vbOKOnly + vbExclamation, "警告"
        comboClassNo.SetFocus
        Exit Sub
    End If
    '判断联系电话是否为空
    If Not Testtxt(Trim(txtTel.Text)) Then
        MsgBox "请输入联系电话!", vbOKOnly + vbExclamation, "警告"
        txtTel.SetFocus
        Exit Sub
    End If
    If Len(txtTel.Text) < 11 Then
        MsgBox "号码小于11位,请重新输入!", vbOKCancel + vbExclamation, "警告"
        txtTel.Text = ""
     End If
   
    If Not Testtxt(Trim(txtAddress.Text)) Then
        MsgBox "请输入家庭住址!", vbOKOnly + vbExclamation, "警告"
        txtAddress.SetFocus
        Exit Sub
    End If
    '判断学号是否为数字
    If Not IsNumeric(Trim(txtSID.Text)) Then
        MsgBox "学号请输入数字!", vbOKOnly + vbExclamation, "警告"
        txtSID.SetFocus
        Exit Sub
    End If
    
    '判断是否有重复记录
    txtSQL = "select * from student_info where student_id = '" & Trim(txtSID.Text) & "'"
    Set mrcc = ExecuteSQL(txtSQL, MsgText)
    If mrcc.EOF = False Then
        MsgBox "学号重复,请重新输入!", vbOKOnly + vbExclamation, "警告"
        txtSID.SetFocus
    Else

                mrc.AddNew
                mrc.Fields(0) = Trim(txtSID.Text)
                mrc.Fields(1) = Trim(txtName.Text)
                mrc.Fields(2) = Trim(comboSex.Text)
                mrc.Fields(3) = Trim(DTBornDate.Value)
                mrc.Fields(4) = Trim(comboClassNo.Text)
                mrc.Fields(5) = Trim(txtTel.Text)
                mrc.Fields(6) = Trim(DTRuDate.Value)
                mrc.Fields(7) = Trim(txtAddress.Text)
                mrc.Fields(8) = Trim(txtComment.Text)
                mrc.Update
                MsgBox "修改学籍信息成功!", vbOKOnly + vbExclamation, "修改学籍信息"
                'SQL语句
                txtSQL = "select * from student_info"
                '执行查询操作
                Set mrc = ExecuteSQL(txtSQL, MsgText)
                '移动到第一条记录
                mrc.Bookmark = myBookmark
                Call viewDate
                Frame2.Enabled = True
                '使各个按钮有效
                cmdFirst.Enabled = True
                cmdPrevious.Enabled = True
                cmdNext.Enabled = True
                cmdLast.Enabled = True
                '使各个文本框失效
                txtSID.Enabled = True
                txtName.Enabled = True
                comboSex.Enabled = True
                comboClassNo.Enabled = True
                txtTel.Enabled = True
                txtAddress.Enabled = True
                txtComment.Enabled = True
                mcclean = True
            End If
    
End Sub

更新记录、取消修改记录、删除记录运行需在“修改记录”的前提下进行!

错误三:

原因:

解析:为了使学生信息在一行上,需要把”.Row-1”都改为“.Rows-1”,为了防止和学生信息之间出现空行,可把.Rows = .Rows + 1删掉。蓝色部分使为了防止标题行之上出现空白行。

数据库:

在调试“设置年级课程”,选择了“选择年级”中的具体年级后,会在“所有课程”下显示该年级的所有课程,然而我记得数据库中“初中一年级-语文”是设置了一个,打开发现编辑了两次,在删除其中一条时,出现了错误:在调试“设置年级课程”,选择了“选择年级”中的具体年级后,会在“所有课程”下显示该年级的所有课程,然而我记得数据库中“初中一年级-语文”是设置了一个,打开发现编辑了两次,在删除其中一条时,出现了错误:

出现问题原因:

  1. 没有设置主键
  2. 表中此条信息不是唯一的,存在多条相同信息。

解决方法如下:

(1)点击数据库中的“新建查询”,根据要删除的行编写代码:delete from 数据库名.表名where 列名=“关键字‘。

(2)点击数据库中的“执行(黄色标识)”,即可删除。

小知识:

If Not (dd(0) Or dd(1) Or dd(2)) Then
        MsgBox "请设置查询方式!", vbOKOnly + vbExclamation, "警告"
        Exit Sub
    End If

Not后不加括号,只会判断第一个,而不会判断后面的!

总结:

最近说不出的特别忙(可能是之前太懒),正是因为忙,所以才要做好时间管理,和时间赛跑的前提是要有时间观念,这样才有可能跑的赢,到现在很遗憾,我没能赛过时间(达到预期的目标),接下来为了更好的和时间赛跑、把握时间,要严格按照计划去执行,21天养成一个习惯,我们可以!挑战自我,加油!

猜你喜欢

转载自blog.csdn.net/zql_LV1314/article/details/83961885
今日推荐