论文部分内容阅读
摘要:Visual Basic具有强大的数据库功能,是开发数据库管理系统的常用工具。输入设计是系统设计中一个重要部分,良好的输入,可以确保数据的准确性和可靠性,数据输入有效性监测是输入设计重点考虑的问题。
关键词:数据输入;有效性监测;主要措施;实现手段
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10768-03
1 引言
Visual Basic作为一种面向对象的可视化编程工具,具有简单易学,灵活方便和易于扩充的特点。强大的数据库功能,使Visual Basic越来越多地用作大型公司数据和客户机-服务器(C/S)应用程序的前端开发工具,它与后端的SQL Server数据库相结合,能够提供一个高性能的客户机—服务器解决方案。VB数据库操作的灵活性、智能性和交互性,使Visual Basic倍受数据库应用程序开发者的喜爱,是当今开发数据库管理系统的重要工具之一。
在数据库管理系统的开发中,输入模块承担着将系统外的数据以一定的格式送入计算机的任务。数据输入是整个数据库管理系统的基础,一个好的输入设计可以确保录入数据的完整性、准确性和可靠性,提高信息的质量,为用户和系统带来友好的工作界面。因此,输入设计是系统设计中不可忽视的部分。输入设计要考虑输入设备、输入方式、输入界面、数据有效性监测等多方面的问题[1]。数据有效性监测是输入设计的应重点考虑的中心问题,采取有效的数据监测手段,可以减少输入错误,确保数据的准确性、可靠性。下面我们以某校图书管理系统中“图书类型设置”输入设计(界面如图1所示)为例,谈谈数据有效性监测的主要措施及实现方法。
图1
2 数据类型监测
主要是为了判断当前的数据类型是否符合特定的要求。[2]例如在添加图书类型时,可借天数字段定义为整数型,若添加记录时,在可借天数文本框中输入“abc”这样的数据,这是错误的数据,保存时将会出现错误(如图2)。若输入1.6这样的数据,根据字段的实际意义,这也是错误数据,为此必须对可借天数文本框中输入的数据类型进行校验。对文本框中输入的字符进行过滤,只有满足条件的字符才能够输入进来。在可借天数文本框text3的KeyPress事件中编写数据校验代码,检查键入的是否是'0'-'9'之间的字符,即判断是否为整数。
图2
Private Sub Text3_KeyPress(keyascii As Integer)
if keyascii <48 or keyascii> 57 then
msgbox "输入有误,可借天数必须为整数"
keyascii = 0
end if
End Sub
下表是Visual Basic中用于检查数据类型的常用函数:
3 数据范围监测
根据字段实际的取值范围校验数据。很多情况下,数据库字段的取值范围不是该字段类型默认的取值范围,而是根据实际情况而设定。例如可借天数字段为整型,VB中整型的取值范围为-32768~32767,但实际上可借天数取值范围应该在1~某个正整数n之间(n应根据各图书馆的制度来定)。这时,就需要根据实际取值范围校验数据。在可借天数文本框text3的LostFocus事件中编写数据校验代码。如果发现输入数据不在1~60之间,则及时提示用户,并使可借天数文本框保持焦点。
Private Sub Text3_LostFocus()
'假定可借天数最长为60天
If Val(Text3.Text) <= 0 Or Val(Text3.Text) > 60 Then
MsgBox "可借天數必须是0~60之间的整数"
Text3.SetFocus
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End If
End Sub
4 数据长度监测
根据字段定义的长度判定输入的数据是否符合特定的要求。如某校学生学号采用十位数字编码,学号字段设置为10,在输入学号时不仅要对学号文本框进行数据类型的监测,而且还要进行长度的验证,超过10位以及不足10位的都将是错误数据。可设置文本框的MaxLength属性为10,直接限制文本框中输入的字符的最大数量,在学号文本框text1的LostFocus事件过程中,编写代码校验学号不足10位的情况。
Private Sub Text1_LostFocus()
If Len(Trim(Text1.Text)) < 10Then
MsgBox "学号必须为10位"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
End Sub
5 空字段监测
在建立数据库时,有的字段设为必填字段,在输入数据时,必须在此字段或绑定到此字段的控件中输入数值,若该字段未填为空,则保存出现错误(如图3);有的字段设为非必填字段,允许为空值,录入时可为空,没有错误,但如果程序编写中读取该字段数值时未做空字段检验,而直接将读取的数值赋值给某控件属性,程序就会报错(如图4)。
因此在输入设计时,对设为必填的字段要进行有效性验证,若该字段录入为空值,则要及时警告,提醒操作者改正输入;比如,图书类型代码文本框text1是必填字,编写如下代码进行验证:
图3
图4
Private Sub Text1_LostFocus()
If Trim(Text1.Text) = "" Then
MsgBox "图书类型代码不能为空"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
End Sub
对设为允许为空的字段,在读取该字段数值时必须做空字段检验,用IsNull函数和Format 函数进行判断是否为空,如果不为空,可直接获取该字段的值,否则不能直接读取该字段的值。[3]
6 主索引字段不包含重复数据的监测
主索引字段是数据表中唯一能标识记录的字段,该字段的值不能为空,否则将出现错误(如图5);主索引字段的值不能出现重复值,否则也将出现错误(如图6)。在输入时必须有对主索引字段进行数据监测的机制。在“图书类型设置”输入设计中“图书类型代码”字段为该数据表的主索引,必须对它进行空值检查和重复数据检查。
图5
图6
重复数据检查,即在“图书类型表”中查询是否存在与当前图书类型代码文本框中输入的数据相同的图书类型代码。具体实现方法如下:
Private Sub Form_Initialize()
'实现adodc1数据控件与数据库的连接
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" &_App.Path & "\tsk.mdb;Persist Security Info=False"
Adodc1.CommandType = adCmdTable
Adodc1.RecordSource = "图书类型表"
'将字段与控件进行数据绑定
Set DataGrid1.DataSource = Adodc1
Set Text1.DataSource = Adodc1
Text1.DataField = "图书类型代码"
Set Text2.DataSource = Adodc1
Text2.DataField = "图书类型名称"
Set Text3.DataSource = Adodc1
Text3.DataField = "可借天数"
End Sub
Private Sub Text1_LostFocus()
'实现adodc2数据控件与数据库中的"图书类型表"连接
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" _& App.Path & "\tsk.mdb;Persist Security Info=False"
Adodc2.CommandType = adCmdTable
Adodc2.RecordSource = "图书类型表"
Adodc2.Refresh
'保存当前记录的书签
n = Adodc1.Recordset.Bookmark
'在图书类型表中查询与当前记录的图书类型代码相同的记录是否存在,即判断图书类型代碼字段是否出现重复值
Adodc2.Recordset.MoveFirst
Adodc2.Recordset.Find "图书类型代码=" & "'" & Trim(Text1.Text) & "'"
Do While Not Adodc2.Recordset.EOF
If Adodc2.Recordset.Bookmark <> n Then
MsgBox "图书类型代码重复"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
Adodc2.Recordset.MoveNext
Adodc2.Recordset.Find "图书类型代码=" & "'" & Trim(Text1.Text) & "'"
Loop
End Sub
7 结束语
在对数据库的操作中,应当时刻考虑数据是否有效的问题,数据有效性监测应贯穿于数据库操作的整个过程,从而使数据输入规范化、智能化、人性化,提高数据的可靠性。
参考文献:
[1]常晋义. 管理信息系统[M]. 北京:中国电力出版社,2003.270.
[2]张立科. Visual Basic 6.0 数据库开发技术与工程实践[M]. 北京:人民邮电出版社,2004.423.
[3]张晓辉. SQL Server2000 管理及应用系统开发[M]. 北京:人民邮电出版社,2002.590.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:数据输入;有效性监测;主要措施;实现手段
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10768-03
1 引言
Visual Basic作为一种面向对象的可视化编程工具,具有简单易学,灵活方便和易于扩充的特点。强大的数据库功能,使Visual Basic越来越多地用作大型公司数据和客户机-服务器(C/S)应用程序的前端开发工具,它与后端的SQL Server数据库相结合,能够提供一个高性能的客户机—服务器解决方案。VB数据库操作的灵活性、智能性和交互性,使Visual Basic倍受数据库应用程序开发者的喜爱,是当今开发数据库管理系统的重要工具之一。
在数据库管理系统的开发中,输入模块承担着将系统外的数据以一定的格式送入计算机的任务。数据输入是整个数据库管理系统的基础,一个好的输入设计可以确保录入数据的完整性、准确性和可靠性,提高信息的质量,为用户和系统带来友好的工作界面。因此,输入设计是系统设计中不可忽视的部分。输入设计要考虑输入设备、输入方式、输入界面、数据有效性监测等多方面的问题[1]。数据有效性监测是输入设计的应重点考虑的中心问题,采取有效的数据监测手段,可以减少输入错误,确保数据的准确性、可靠性。下面我们以某校图书管理系统中“图书类型设置”输入设计(界面如图1所示)为例,谈谈数据有效性监测的主要措施及实现方法。
图1
2 数据类型监测
主要是为了判断当前的数据类型是否符合特定的要求。[2]例如在添加图书类型时,可借天数字段定义为整数型,若添加记录时,在可借天数文本框中输入“abc”这样的数据,这是错误的数据,保存时将会出现错误(如图2)。若输入1.6这样的数据,根据字段的实际意义,这也是错误数据,为此必须对可借天数文本框中输入的数据类型进行校验。对文本框中输入的字符进行过滤,只有满足条件的字符才能够输入进来。在可借天数文本框text3的KeyPress事件中编写数据校验代码,检查键入的是否是'0'-'9'之间的字符,即判断是否为整数。
图2
Private Sub Text3_KeyPress(keyascii As Integer)
if keyascii <48 or keyascii> 57 then
msgbox "输入有误,可借天数必须为整数"
keyascii = 0
end if
End Sub
下表是Visual Basic中用于检查数据类型的常用函数:
3 数据范围监测
根据字段实际的取值范围校验数据。很多情况下,数据库字段的取值范围不是该字段类型默认的取值范围,而是根据实际情况而设定。例如可借天数字段为整型,VB中整型的取值范围为-32768~32767,但实际上可借天数取值范围应该在1~某个正整数n之间(n应根据各图书馆的制度来定)。这时,就需要根据实际取值范围校验数据。在可借天数文本框text3的LostFocus事件中编写数据校验代码。如果发现输入数据不在1~60之间,则及时提示用户,并使可借天数文本框保持焦点。
Private Sub Text3_LostFocus()
'假定可借天数最长为60天
If Val(Text3.Text) <= 0 Or Val(Text3.Text) > 60 Then
MsgBox "可借天數必须是0~60之间的整数"
Text3.SetFocus
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End If
End Sub
4 数据长度监测
根据字段定义的长度判定输入的数据是否符合特定的要求。如某校学生学号采用十位数字编码,学号字段设置为10,在输入学号时不仅要对学号文本框进行数据类型的监测,而且还要进行长度的验证,超过10位以及不足10位的都将是错误数据。可设置文本框的MaxLength属性为10,直接限制文本框中输入的字符的最大数量,在学号文本框text1的LostFocus事件过程中,编写代码校验学号不足10位的情况。
Private Sub Text1_LostFocus()
If Len(Trim(Text1.Text)) < 10Then
MsgBox "学号必须为10位"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
End Sub
5 空字段监测
在建立数据库时,有的字段设为必填字段,在输入数据时,必须在此字段或绑定到此字段的控件中输入数值,若该字段未填为空,则保存出现错误(如图3);有的字段设为非必填字段,允许为空值,录入时可为空,没有错误,但如果程序编写中读取该字段数值时未做空字段检验,而直接将读取的数值赋值给某控件属性,程序就会报错(如图4)。
因此在输入设计时,对设为必填的字段要进行有效性验证,若该字段录入为空值,则要及时警告,提醒操作者改正输入;比如,图书类型代码文本框text1是必填字,编写如下代码进行验证:
图3
图4
Private Sub Text1_LostFocus()
If Trim(Text1.Text) = "" Then
MsgBox "图书类型代码不能为空"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
End Sub
对设为允许为空的字段,在读取该字段数值时必须做空字段检验,用IsNull函数和Format 函数进行判断是否为空,如果不为空,可直接获取该字段的值,否则不能直接读取该字段的值。[3]
6 主索引字段不包含重复数据的监测
主索引字段是数据表中唯一能标识记录的字段,该字段的值不能为空,否则将出现错误(如图5);主索引字段的值不能出现重复值,否则也将出现错误(如图6)。在输入时必须有对主索引字段进行数据监测的机制。在“图书类型设置”输入设计中“图书类型代码”字段为该数据表的主索引,必须对它进行空值检查和重复数据检查。
图5
图6
重复数据检查,即在“图书类型表”中查询是否存在与当前图书类型代码文本框中输入的数据相同的图书类型代码。具体实现方法如下:
Private Sub Form_Initialize()
'实现adodc1数据控件与数据库的连接
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" &_App.Path & "\tsk.mdb;Persist Security Info=False"
Adodc1.CommandType = adCmdTable
Adodc1.RecordSource = "图书类型表"
'将字段与控件进行数据绑定
Set DataGrid1.DataSource = Adodc1
Set Text1.DataSource = Adodc1
Text1.DataField = "图书类型代码"
Set Text2.DataSource = Adodc1
Text2.DataField = "图书类型名称"
Set Text3.DataSource = Adodc1
Text3.DataField = "可借天数"
End Sub
Private Sub Text1_LostFocus()
'实现adodc2数据控件与数据库中的"图书类型表"连接
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" _& App.Path & "\tsk.mdb;Persist Security Info=False"
Adodc2.CommandType = adCmdTable
Adodc2.RecordSource = "图书类型表"
Adodc2.Refresh
'保存当前记录的书签
n = Adodc1.Recordset.Bookmark
'在图书类型表中查询与当前记录的图书类型代码相同的记录是否存在,即判断图书类型代碼字段是否出现重复值
Adodc2.Recordset.MoveFirst
Adodc2.Recordset.Find "图书类型代码=" & "'" & Trim(Text1.Text) & "'"
Do While Not Adodc2.Recordset.EOF
If Adodc2.Recordset.Bookmark <> n Then
MsgBox "图书类型代码重复"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
Adodc2.Recordset.MoveNext
Adodc2.Recordset.Find "图书类型代码=" & "'" & Trim(Text1.Text) & "'"
Loop
End Sub
7 结束语
在对数据库的操作中,应当时刻考虑数据是否有效的问题,数据有效性监测应贯穿于数据库操作的整个过程,从而使数据输入规范化、智能化、人性化,提高数据的可靠性。
参考文献:
[1]常晋义. 管理信息系统[M]. 北京:中国电力出版社,2003.270.
[2]张立科. Visual Basic 6.0 数据库开发技术与工程实践[M]. 北京:人民邮电出版社,2004.423.
[3]张晓辉. SQL Server2000 管理及应用系统开发[M]. 北京:人民邮电出版社,2002.590.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。