`
wsql
  • 浏览: 11756685 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

做学生管理系统中中遇到的问题汇总(1)

 
阅读更多

我们的学习是i+1式的,一点点的学习,一点点的进步,不慌不忙,一步一个脚印,就像去年寒假的时候对vb进行了学习,接着就让我们自己动手去实现——九期提高班作品展中一个个小软件就是我收获的硕果,回忆起来我们的寒假过的是那么的充实,今年暑假也不例外,我们设计到的有对英语SB的学习,还有数据库的学习,看完了耿建玲老师的视频,敲完了5个实例还有相应的举一反三以后我们接触了学生管理系统,耿建玲老师的视频中理论较多些,我们再动手去实现一下,理解的就更透彻了。

拿到学生管理系统模版以后,先吧程序调通了,看看里边的功能,画了画里边的联系,就准备开始自己制作了,基本上我的每一个窗体都会遇到相应的问题 ,虽然针对一个窗体调通了,但是当我把所有的窗体都完成以后再运行起来就又出现了相应的问题,下面就是我遇到的问题中的三个问题。


1.登陆界面

这里遇到的问题是当我输入用户名和密码的时候,如果你输入正确的话能顺利的进入系统,但是如果一不小心输入错误的话,程序就会瘫了,这是为什么呢 ?大家帮我想想办法吧,谢谢了。


2.日期.(大意惹的祸)


开始我以为是代码错了呢,函数没用正确还是格式错了什么的,这是时间函数部分代码

If Not IsDate(txtBorndate.Text) Then
          MsgBox "出生时间应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
          txtBorndate.SetFocus
       Else
          txtBorndate = Format(txtBorndate, "yyyy-mm-dd")
          If Not IsDate(txtRudate.Text) Then
             MsgBox "入校日期应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
             txtRudate.SetFocus
          Else
               txtRudate = Format(txtRudate, "yyyy-mm-dd")
               txtSQL = "select*from student_Info"
               Set mrc = ExecuteSQL(txtSQL, Msgtext)
               
               mrc.AddNew
               mrc.Fields(0) = Trim(txtSID.Text)
               mrc.Fields(1) = Trim(txtName.Text)
               mrc.Fields(2) = Trim(comboSex.Text)
               mrc.Fields(3) = Trim(txtBorndate.Text)
               mrc.Fields(4) = Trim(comboClassNo.Text)
               mrc.Fields(5) = Trim(txtTel.Text)
               mrc.Fields(6) = Trim(txtRudate.Text)
               mrc.Fields(7) = Trim(txtAddress.Text)
               mrc.Fields(8) = Trim(TxtComment.Text)
               mrc.Update
               MsgBox "添加学籍信息成功!", vbOKOnly + vbExclamation, "添加学籍信息"
               mrc.Close
               Me.Hide
               
          End If
       End If


看了代码,看了看我输入的数据也没有发现有错误,奇怪啊这是怎么回事呢?

代码没有错误添加信息的时候逻辑上出现问题了?我把出生日期写的比入校时间还晚,呵呵,就弹出了相应的错误,但是实在看不出来是哪句代码起的这个作用啊,看来设计的还是有漏洞啊,问了问加翰,才恍然大悟啊确实是输入的信息有问题,我输入了一个1345年这个不在datetime的范围中,所以提示错误

从数据库中看两个日期函数属于datetime类型的

而datetime是这样定义的,Datetime数据类型用于存储日期和时间的结合体,它可以存储从公元1753年1月1日零时起到公元8888年12月31时59分59秒之间的所有日期和时间。我输入的年份没在这个范围之中所以出错了,问题就是这么简单,但是当你大意的时候它总会让你吃不消。

解决问题的时候也了解了其它两个函数也是用于SQL Server 的使用过程中的,但是不常用,与大家分享一下留着以后用,

1> isnumeric(expression )

-- 返回值 1 | 0,判断是否是数字类型。数值类型包括(int、bigint、smallint、tinyint、numeric、money、smallmoney、float、decimal、real)

示例:

select * from tablename

where isnumeric(columnname)<> 1;

go

以上示例使用 isnumeric 返回所有非数值的数据行。

2> isdate( expression )

-- 如果 expression 是有效的 date、time 或 datetime 值,则返回 1;否则返回 0。示例:

if isdate('2009-05-12 10:19:41.177') = 1

print '有效的日期'

else

print '无效的日期'

上面的示例使用 isdate 测试某一字符串是否是有效的datetime。

3> patindex( '%pattern%' , expression )

-- 返回指定表达式中某模式第一次出现的起始位置;-- 如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。

'pattern' : 一个通配符字符串。pattern 之前和之后必须有 % 字符(搜索第一个或最后一个字符时除外)。expression : 通常为要在其中搜索指定模式的字符串数据类型列。示例:

select patindex('%BB%','AA_BB_CC_DD_AA_BB_CC_DD')

-- 返回:4上面示例返回的是第一个‘BB’的开始位置。

其实,使用 charindex 函数也能实现上面示例的查询,如下:

select charindex('BB','AA_BB_CC_DD_AA_BB_CC_DD')

--返回:4

patindex 函数与 charindex 函数的区别:selectpatindex('%[0-9][A-Z]%', 'AA_BB_9C_DD_AA_9F_CC_DD')

-- 返回:7

select charindex('%[0-9][A-Z]%','AA_BB_9C_DD_AA_9F_CC_DD')

-- 返回:0看出来没有?patindex 函数可以使用通配符,而charindex 函数不能。也就是说:patindex 函数功能更强大!


3.数据



当我添加了班级信息以后,马上去修改信息的时候,点击最后一条记录按钮的时候,出现的不是刚添加的信息。



因为我设置班号的是按升序排列的,所以正常情况应该是出现在最后一条才算对了,还以为是与数据库连接的问题呢,我理解的是数据库中原有的数据能在系统运行的时候显示出来,新添加的显示不出来呢,问了问双喆 说应该不是这个原因 ,因为代码中都有写数据集,然后数据就应该会更新的,然后我们又把系统打开看了看 原来人家能显示,就是没在最后一条记录那显示,数据库中是按升序排列的 我插入的数据按情理就是应该出现在最后一条的,接着我就把数据都删了,重新添加的数据,然后这一次就正常了,按我设置的升序排列的,应该是我之前添加的数据问题,乱了。

我出现的这几个问题算不上大问题,可以归结为疏忽大意,不缜密造成的,但是这些问题当你遇到的时候也会让你吃不消,所以在这里警告我自己,也希望大家以我为戒不要犯这类的错误。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics