深圳office培训 深圳excel培训
深圳excel培训 深圳office培训
咨询服务
深圳office培训
深圳office培训
office培训
excel培训
ppt培训
vba培训
access培训
word培训
visio培训
project培训
outlook培训
数据库培训
深圳access培训
深圳sql培训
深圳office培训
 

access如何引用窗体控件


2016年8月26日 作者: 来源:

Access 内置对象中所有的集合,就像一个数组的强化版:像数组的,我们以下标获得某一个元素;强化的是我们的下标是可以用数字(在集合里面的位置),或文本名字,来参考出某一个元素。

大家非常熟识的集合会有
Forms
Reports

而我们参考某个表单就会用 Forms!录入表单,这是  Forms("录入表单") 的简化版,意思是 以 “录入表单” 作为下标在集合里面找出元素,这是容易理解的。

往下一层了: Forms!录入表单!用户名  呢? 近年比较少人用这种表达式了

其实这是名称为 “录入表单” 的表单中,名称为 “用户名” 控件。

根据Access设计原则,这代表着表单对象下 一个默认集合里的一个元素的简写,全写应该是

Forms!录入表单.Controls("用户名")  ----- 这原来就是 Forms!录入表单!用户名。

Access VBA 的 Form 类设计,就设置了一个默认集合 -> Controls,所以对所有 Form 对象用上 ! 就是默认从 Controls 属性这个集合中索引一个对象出来。

Access Objects 的架构中相同的 默认属性类有

DAO.Recordset

DAO.Relation

References

.....

DAO.Recordset :  

Set rs = currentdb().open("学生")

a = rs!学号     ' 就会完全等同 rs.fields("学号") ,也是同样的道理
 
近年,让我们有所混淆的就是 表单的空间可以用 点号来引用(这是VB开发人员跟 Access 开发团队申辩过后才提供的功能)

Me!学号  用  Me.学号   同样通用!

Form 对象在 好像 2003 还是 2007 做了这个扩展,我们在 Form 对象(注意不是 Forms) 添加的控件

Forms!学生.Controls 集合里 添加了 Name 为 "学生" 的控件后,

VBE 同时在 Forms!学生 对象扩展了 一个 类属性  学生,同时指向 .Controls("学生") 元素,(至少指针所耗内存不多)

所以我们在 VBE 编写代码的时候,就可以 Me.学生 引用该个控件了,方便了大家编写代码了!


如果,”学号” 控件是拖放在表单的主体内的话,在内存里 Forms!学生.Controls("学号") 这个对象同时被

Forms!学生.Controls("学号")
Forms!学生.学号
Forms!学生!学号
Forms!学生.Controls("学号")
Forms!学生.Section(0).Controls("学号")
Forms!学生.Section("主体").Controls("学号")

那么多解析同时指向同一个控件。

不过注意,以下这些是不存在的:

Forms!学生.Section(0).学号
Forms!学生.Section("主体").学号

原因是Access 并没有对 Section 对象 建立类属性的快捷键!

那么复杂的代码,每人会用的,只是我们需要了解

1.  Me!学号 与 Me.学号 虽然指向一样,但是是两个意思

    如果表单里面没有 “学号” 这个控件

    Me!学号 是不会报错的,因为这是运行时的代码;而

    Me.学号 是 设计时 的解析,当表单上没有这个控件,基本上已经报错了!

    所以,Me.学号 运行起来一定会快速一点!因为编译能通过的话,代码编译后对象的参考位址已经固话到代码里了。

2.  Me!学号 如果在不考虑运行速度的损耗的话,代码的观赏性会高很多。

3. Me("学号") 基本上会与 Me!学号 运行速度一致的,都是在编译的时候,把字符串固话到编译后代码,在运行时在集合里用文字来查找;但是一般我们用 Me( string) 的情况是,我们会用变量,就是连运行的时候,我们都不确定 用户选择了哪个控件的情况下使用;又或者在一些根据数据创建控件的应用里,才会用到最低效率的 Me(n) 表达式。


阅读:1053 上一则:access中的CurrentProject对象 下一则:access如何让窗体总在最前面

返回前页 返回顶部
温馨提示:本中心是深圳较为专业office培训机构、咨询及报名请先预约,电话:0755-82124110。
深圳地址:深圳红荔路四川大厦1109B-1110(3号龙岗线通新岭地铁站A出口10米)
热线:0755-82124110(福田、南山、宝安) 0755-22205758(罗湖、龙岗、龙华) 13510024571(东莞、惠州、珠海、广州)
北京地址:北京清华大学华业大厦三区三楼 版权所有:深圳万博计算机教育 粤ICP备11006947号-1
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训 欢迎咨询!
您好!请点击这里咨询万博教育
深圳万博吴老师
您好!请点击这里咨询万博教育
深圳万博史老师
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训