【添加学籍信息窗体之问题篇】
问题一:下拉文本框——即文本框控件,需要修改属性
1.文本框控件的常用属性
(1)Text属性:表示文本框中包含的内容
(2)Locked属性:决定文本框内容是否可编辑
(3)Multiline: 为ture,可输入多行文本,默认为false
(4)Scrollbars:决定是否有滚动条以及滚动条的显示方式。默认为不显示。
(5)passwordchar:显示在文本框中的替代符,如“*”,主要用于口令的输入。
Maxlength:指定显示字符的个数,超出部分不接收,并同时发出嘟嘟声。
2.文本框控件显示文本
文本框显示文本受text属性控制。Text属性可以用以下3种方式设置:
-
设计时在属性窗口进行
-
编程时通过代码设置
-
运行时由用户输入
若不希望用户更改文本,可以把文本框的locked 属性设置为true或将enabled属性设置为False。
3.多行文本框
若需要在文本框中显示多行文本,可以在属性窗口中修改文本框的multiline和scorllbars属性。
Multline属性:True:可以输入和显示多行文本,同时具有文字处理器的自动换行功能,按Ctrl+Enter组合键可以插入一行。
Scorllbars属性:只有当MultiLine属性为true时,该属性值才有效。在WordWrap属性值为true时,
水平滚动条将不起作用。
ScrollBars.None (无滚动条)
ScrollBars.Horizontal(水平滚动条)
ScrollBars.Vertical(垂直滚动条)
ScrollBars.Both(水平和垂直滚动条)
若无horizontal滚动条,文本框的文本会自动按字换行,当加了它之后,自动换行功能会自动消失,只要按enter键才能换行。
问题二:日期控件问题:日期控件不能使用text文本框,或是数据不正常,且随机。
改换控件:
优化方式就是使用DTPicker控件,详情见下面。
问题三:实时错误 '-2147217887 (80040e21)':多步操作产生错误。请检查每一步的状态值。
原因:填写的数据 不符合或者没有转换 成 数据库相应字段的数据类型 或 约束。
或者数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。
多步OLE DB操作产生错误。如果可能,请检查每个OLE DB状态值。 当我们在修改信息的时候,如果修改的信息量超过了OLEDB所允许的信息量就会出现类似于溢出的问题,即多步OLEDB 操作产生错误。
解决方法有两个:
第一:设置text的属性maxlength 为特定数值,例如3,这样在text中只能输入3个字符。
第二:到数据库中对表的数据长度进行修改。找到相应的表后右击选择修改,在数据类型处修改即可。
调试代码显示我出现的错误是在电话列表:
仔细观察代码之后,发现代码没有问题,那下一步考虑数据库,打开Student表tele列
原因找到了,原来数据库电话号码这一列数据里面要求只能输入10位,我们输入的电话号码是11位。改成11就可以了,如果修改之后点击保存会出如下错误
Student 表处右键-设计,然后便可以改数据类型或限制。
在数据库中修改完成限制长度就OK啦。(此问题在修改学籍窗体也有遇到,还是电话字符长度限制问题,同样方法解决)
【添加学籍信息窗体之优化篇】
一:有关日期问题
1.添加学籍的时候需要在text中输入出生日期和入学日期,而且还要求yyyy-mm-dd格式,比较麻烦,所以这里调用DTPicker控件。方法如下:
添加过程:工具-部件-控件-“Microsoft Windows common control2.6.0”-应用-确定选择DTPicker控件进行添加。
注意:DTPicke控件是以Value属性来取值的,代码中要把text属性改为value属性。
2.限制出生日期必须要比入学日期早!
Dim borndate As Date
Dim getdate As Date'定义变量
borndate =Trim(txtBorndate.value)
getdate =Trim(txtRudate.value)
If getdate<=borndate then'进行比较
MsgBox"入学时间不能早于出生时间,请重新输入",vbOKOnly + vbInformation,"警告"
txtRudate.SetFocus
Exit Sub
End If
二: '限制姓名文本框字符长度为10,只能是汉字或英文字母
Private Sub txtname_KeyPress(KeyAscii As Integer)
txtname.MaxLength = 10
If ((KeyAscii <= -3652 And KeyAscii >= -20319) Or (KeyAscii >= 65 And KeyAscii <= 90) Or (KeyAscii >= 97 And KeyAscii <= 122) Or KeyAscii = 32 Or KeyAscii = 8) = False Then
KeyAscii = 0
End if
End Sub
三.如何限制文本框输入内容的长度
txtClassno.MaxLength = 10
四.限制只输入数字和删除键
Private Sub txtSID_KeyPress(KeyAscii As Integer) '限制学号只输入数字和删除键
If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
五.限制comboBox框不可输入
Private Sub ComboclassNo_KeyPress(KeyAscii As Integer)
KeyAscii = 0 '输入无效
End Sub