关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
Access文本框有两个属性:text和value属性。
这两个属性对于vb的人来说是一样的,而在Access vba中反而不一样了。
有比较大的区别,这个区别主要是Access的绑定机制造成的。
我讲东西喜欢从本质入手,那么就先讲讲Access这个机制吧。
Access的窗体可以绑定数据源(数据源可以是表,也可以是查询),控件可以绑定数据源中的字段。
如果数据源是可以编辑更新的话,可以直接在控件上修改对应的数据,更新当前的记录。
那么修改了数据,可以会提交更新,也可能不会提交(撤销)。控件提交数据的过程分为几个过程,也对应几个事件。
编辑数据 --> 完成编辑 --> 数据提交前 --> 验证通过 --> 写入数据库完成更新 --> 提交后其他操作
以文本框为例。
当你编辑文本框里面的文字,就是处于编辑数据的过程。
回车或者鼠标点击其他控件,文本框就认为你完成编辑。这时会先进行数据验证。验证包括数据库自检和你在这个文本框写的Before_Update事件。
通过验证之后,数据库立马更新数据,之后触发提交后After_Update事件。
好了,本质的东西讲到这里。
下面的东西,也就是text和value的区别就很容易听懂了。
value属性是控件提交之后的值;
text属性是控件当前显示的值,并且只有在有焦点的情况下才能使用。
控件当前显示的值不一定是提交之后的值,有可能当前的文本框正在编辑,数据未提交。
那么value属性的值和text属性的值就不一样了。提交之后,尚未继续编辑的话,这两个属性值就一致了。
通常在Access窗体当中,要用到text属性很少。一般获取文本框的值用value属性,或者默认不写属性。
只有在文本框的Change事件会用到text属性。例如限制文本框的输入内容,动态根据内容实现其他筛选等等。
这时候再用value属性就不能获取当前的值了,只能用text属性。
最后附上两组源码。
文本框限制输入的内容:
'文本框输入限制用KeyPress事件或这KeyDown事件比较好' Private Sub Text0_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case Asc("0") To Asc("9") '限制数字' Case Asc("a") To Asc("z") '限制小写字母' KeyAscii = 0 '限制哪个就写这句话' Case Asc("A") To Asc("Z") '限制大写字幕' Case 13 '回车'KeyPress事件不能识别,若要限制回车需要在KeyDown事件处理 End Select End Sub
文本框动态筛选:
'假设有个子窗体名为sub1,动态应用子窗体的筛选' Private Sub Text0_Change() Dim strSql As String strSql = "select * from 表名 where 字段 like '*" & Text0.Text & "*'" Me.sub1.Form.RecordSource = strSql End Sub