学生信息管理系统终于完工了,这场战役比我想象的要久一些,前天验收的时候,真是让我捏了一把汗。本来自己操作的都挺成功的,结果师父一运行的时候,哪哪都是错啊!
回去反思了一下,造成这些错误的根本原因是我没有本着全心全意为人民服务的宗旨做这个系统。
下面我列举几个细节问题,希望以后师弟师妹们能看看,避免出现这样的错误:
1、SQL注入
当我们在用户名那输入单引号时,系统就会出错,这是因为数据库对它敏感。
解决方法:我们只要让文本框不能输入单引号就可以了。
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 39 Then KeyAscii = 0
End Sub
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
2、添加完所有文本框全部清空
如何一次性清空一个窗体上的所有文本框?
解决方法:
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then '是否为文本框TextBox
ctrl.Text = ""
End If
Next
这个方法既简单又实用,详情请看水镜师哥的博客《VB清空窗体内所有文本框(其他控件同理)》
3、时间控件
如何实现点击窗体中一个文本框出现日历控件,然后可以选择相应的日期,填入文本框,日历控件消失?
解决方法:先添加部件Microsoft Windows Common Controls-2 6.0
Private Sub Form_Load()
MonthView1.Visible = False
End Sub
Private Sub Text1_Click()
MonthView1.Visible = True
End Sub
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Text1.Text = MonthView1.Year & "-" & MonthView1.Month & "-" & MonthView1.Day
MonthView1.Visible = False
End Sub
4、组合框只能选,不能输入。
这个其实就设置一下属性:style=2 就可以了。
5、没有符合查询条件的信息时,你那有没有提示?
解决方法:
If mrc.EOF = True Then
MsgBox "无信息!", vbOKOnly + vbExclamation, "警告"
End If
打包完之后怎样才能在其他电脑上面运行?
解决方法:首先先看刘硕师哥的博客:SQL sever 2008远程连接,然后再修改模块中的代码,如下:
源代码:
对于vb中连接数据源的代码。有以下三种连接方式。
改成后两种即可。
7、科目重复添加
这个是设置年级课程信息的模块中,如果点击添加按钮,无论已选课程的List中有没有已选项,它都会无限制的添加下去。
解决方法:编写一个自定义函数。
这个问题的解决参考了周洲的博客:《【VB与数据库】MIS总结——我将愈挫愈勇! - 周 洲的日志 - 网易博客》。
这一个一个的错误都成为了我们成长道路上的垫脚石。学生信息管理系统就此告一段落,以后再做系统,一定要以全心全意为人民服务为宗旨。