学生信息管理系统之问题总结(2)

 

         相比之下这篇博客来的晚了些、也不知道最近在忙什么,时间就不知不觉的找不到了...

 

       继之前的 “  学生信息管理系统之问题总结(1)  咱们继续完善在敲 学生管理系统中遇到的种

题,帮别人也帮自己、

 

 

      1、ByRef  参数类型不符,编译错误、

 

             学生信息管理系统之问题总结(2)_第1张图片

 

       出现这种问题可能会有很多种情况,我遇到的是 “上下不匹配” 、下面进行分析、

       1。传递参数未定义类型,假如参数在调用前未定义类型,系统自动将他定义为variant类型,由于和过程或函数

中的对就参数类型不相同,所以提示"byref参数类型不符"



       2。传递参数类型已定义,但由于定义方法不对,所以提示"byref参数类型不符"。具体情况如下:

       当vb中如此定义变量时,将会出现以上错误信息的出现



      private sub command1_click()
        dim i , j as integer
           i = 3
           j = 4


          call get1(i, j)
          text1.text = i


      end sub

      private sub get1(byref para1 as integer, para2 as integer)
         para1 = para1 + para2


     end sub

     假如将 dim i , j as integer 改为 

       dim i  as integer   

       dim i  as integer

      程式执行正常。也就是说,第一种方法的变量定义,只是对 j 做了定义,并未对前面的 i 进行定义



      一般在过程和函数中定义参数时采用byref,则需要参数声明的类型和实际参数的类型完全相同,否则vb就会报告错误。可以参考资料:http://www.sudu.cn/info/html/edu/net/20071226/24393.html

 

 

      

      2、实时错误 ' 340 '  :  

            控件数组元素 ’ 2' 不存在

 

                

 

 

       已存在的控件数组中没有引用的索引值所指定的控件。 

       对存在元素的其中之一,把 Index 属性的设置改为所引用的值。或者使用 Load 语句,向数组中添加一个控件,

该控件的索引等于此值,然后再引用此索引值。

 

       再者,就是你的控件与代码是不符合的,让其保持一致性、

 

 

       3、实时错误 ‘91’:对象变量或With块变量未设置

 

       在frmSetcourseinfo

          Private Sub comboGrade_Click()

          Dim mrc As ADODB.Recordset

          Dim txtSQL As String

          Dim MsgText As String

          Dim i As Integer

   

          listSelectcourse.Clear

          txtSQL = "select * from gradecourse_Info where grade='" & comboGrade.Text & "'"

 

     没有查询出数据结果,查询语句出现了问题、

 

      错误原因:   缺少语句  Set mrc = ExecuteSQL(txtSQL, MsgText)

 

      4、实时错误 ’ 3201 ’ :

            BOF  或  EOF  中 有一个是 “真” , 或者当前的记录已被删除,所需的操作要求一个当前的记录。

 

                                                  学生信息管理系统之问题总结(2)_第2张图片

 

 

          先看这样一段错误的代码代码

 

            Private SubcmdPre_Click()

                    If mrc.BOF = True Then

                                   mrc.MoveLast

                     Else

                                  mrc.MovePrevious

                   End If

                   CallViewData

           End Sub

                         

        

      为什么会出错呢,我们来分析一下.当指针指向第一条记录的时候,if条件不成立,所以会执行mrc.MovePrevious,

此时指针指向第一条记录之前,callviewdata时出错.

 

 

学生信息管理系统之问题总结(2)_第3张图片               (“偷”的 “海燕学姐的”)

    所以正确的程序应该是这样的:

             Private SubcmdPre_Click() 

                      mrc.MovePrevious

                      If mrc.BOF = True Then

                                 mrc.MoveLast

                       End If

                       Call ViewData

              End Sub

                       





你可能感兴趣的:(学生信息管理系统)