Access文本框value属性和text属性的区别

  • 发布时间:2016年5月20日 10:47
  • 作者:杨仕航
  • 分类标签: 数据库
  • 阅读(12562)
  • 评论(0)

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

上一篇:Python写个猜数字玩一玩

下一篇:我的网站搭建(第18天) 评论或回复发送邮件通知

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空