学生信息管理系统 那些事儿(二)

       

         学生信息管理系统已经告一段落了,但需要我们体会理解的还很多,师傅说我们现在最重要的不是实现了功能,是学会总结的方法,学会系统包含的设计理念和为人民服务的精神。

         不过,本节先进行一个技术问题总结吧,思想理念方面的敬请关注 《那些事儿(三)  》。

         首先,问题一:总是出现下图提示:

                                           

         已经毫无疑问了,出现该问题的原因是数据库没连接上,而导致数据库没连上又有多种原因的。其中简单分析一下代码方面原因,大概有以下几种情况:1、符号格式错误(中、英文半角和全角),尤其是紧密关联执行数据库语句的引号;2、表名、数据库名写错;3、空格是否应该存在。   由于该系统比较简单,很容易就能解决。

 

         问题二:运行后frmMain不出来或出现次数冲突。

         开始敲的时候,由于有的同学并不是从类模块开始的,或是没好好分析系统结构,把启动窗体想当然地设置为frmLogin,因而就会导致代码工作完成后frmMain出不来。这个系统的启动机制是标准模块下的Sub Main,所以设置一下“工程-工程属性-启动对象”为Sub main就OK啦。

         还有就是有的同学发现主窗体出不来时,就在frmLogin下加了Show方法。这样会导致如下错误:

                                         

         由于frmMain是父窗体,在一个工程里只能存在一个,所以与类模块下Sub Main冲突,解决方法同上。

         

         问题三:关于修改信息

         当我们修改信息时(以修改成绩信息为例),如果删除所有信息后,修改窗体消失。但再次单击修改菜单后,修改窗体还是会弹出来。这是因为单击修改按钮后仍然执行了frmModifyResult.Show的命令,要想使不再弹出或显示添加窗体,则需要在frmMain下的frmModifyResult菜单中添加如下代码:

Private Sub modifyresultMenu_Click()

   Dim txtSQL As String       ’定义文本型数据库连接字符串

    Dim MsgText As String      ’定义信息提示

    Dim mrc As ADODB.Recordset    ’定义ADO的记录集

    Dim msgAddRecord  As String           ’定义添加提示信息

     

    txtSQL = "select * from result_Info"         ’执行数据库成绩信息

    Set mrc = ExecuteSQL(txtSQL, MsgText)

    

    If mrc.RecordCount = 0 Then             ’如果ADO的记录数为零,此时成绩无记录

        msgAddRecord = MsgBox("没有记录,是否添加?", vbOKCancel, "提示")

        If msgAddRecord = vbOK Then      ’确定添加

            frmAddresult.Show

            Exit Sub                                       

        Else

            Exit Sub                                        ’不添加则退出该过程

        End If

    Else

        frmModifyresultInfo.Show      ’修改成绩信息窗体显示

    End If

End Sub


         其他关于修改的窗体同上。

 

         问题四   年级与班级的添加问题

       在添加班级信息时,我们会发现当初一添加了1班后,初二就不能添加1班了,因为没有年级处理机制。解决办法很简单,只需要把1-n的班号和每个年级绑定,1-n再和初一绑定,1-n再和初二绑定……参考代码(部分):

If Trim(comboGrade.Text) = "初中一年级" Then
        While (mrc.EOF = False)
            If Trim(mrc.Fields(0)) = Trim(txtClassno.Text) And Trim(mrc.Fields(1)) = "初中一年级" Then
                MsgBox "班号已存在,请重新输入!", vbOKOnly + vbExclamation, "警告"
                txtClassno.SetFocus
                Exit Sub
            Else
                mrc.MoveNext
            End If
        Wend
    End If


       再重复绑定几个年级就可以了。

       最后,再跟大家啰嗦一下listIndex的问题,问题起源于,在frmSetcourseInfo下单击“年级”组合框后,listAllcourse并不显示课程名,仔细一看,是cmdAdd和cmdDel按钮下的listIndex和listCount写混了。Listindex是list中项的索引值,List1.ListIndex<>-1 前面为>0且<>-1的数,表示“如果前面有选择”;如果没有选择,则前面是-1。

 

            问题五:List 可重复输入问题

            在frmSetCourseinfo窗体中,在选课时会出现多次单击“设置课程”总课程数重复出现,多次单击“选择课程——>”所选课程可重复添加的现象,导致一门课程的多次出现。

            处理这个问题我们需要考虑一下,大家首先先到的是添加一个不重复的命令。不错,可以使用循环进行比较,重复则移除。这个方法对于listSelectCourse很适用,但第一个呢?是不是也有必要这样处理?答案当然是否定的!我们只需要把“设置课程”按钮禁用就可以了!这里需要我们具体问题具体分析,寻求最优化的解决方案。

            下面是使listSelectCourse不重复代码(只介绍循环移除部分):

’listcountSelectCourse1和listcountSelectCourse2代表循环变量

For listcountSelectCourse1 = 0 To listSelectcourse.ListCount - 1  '第一次循环,共循环list内总数次
        For listcountSelectCourse2=listcountSelectCourse1 + 1 To listSelectcourse.ListCount          '第二次循环,共循环list内总数-1次


            If listSelectcourse.List(listcountSelectCourse1) = listSelectcourse.List(listcountSelectCourse2) Then           ‘如果记录相同则移除相同项
                 listSelectcourse.RemoveItem     listcountSelectCourse2            '移除   

                 MsgBox "该课程已选!"
                 Exit Sub           '退出
            End If


        Next   listcountSelectCourse2    

Next   listcountSelectCourse1


 

       

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值