首页 > 解决方案 > MS 访问控制值

问题描述

MS Access 和 VBA 似乎具有内置的数据类型转换功能。例如,我的表单中有一个文本框控件,我看到它以以下两种方式之一进行引用:

If Form!transaction_type = "Credit Card"

If Form!transaction_type.Value = "Credit Card"

transaction_type控件的Value属性有什么意义?有人可以指导我查看有关 Value 属性的一些文档,什么时候使用它,什么时候不使用它等等。

标签: vbams-access

解决方案


为方便起见,对象通常具有默认属性。这允许您的第一个示例的表示法,乍一看似乎为对象本身分配了一个字符串值。幕后实际发生的是 VBA 将数据分配给默认属性,在本例中为.Value. 您可以自己使用您创建的类在 VBA 中模仿这种行为。VBA 编辑器中有一种方法可以做到这一点,但在我目前坐的机器上,我没有安装 Office。它的作用基本上是用这些值编辑类文件:https ://www.vbforums.com/showthread.php?839161-Default-Class-Properties-and-Let-Get

我个人不太喜欢依赖那个机制,因为它会导致你正在经历的那种困惑。虽然这将是一种非常糟糕的处理方式,但想象一下原始作者在对象的未来版本中更改了默认属性。突然之间,您的代码充其量是中断和错误,最坏的情况是仍然可以工作,但会导致难以跟踪错误。如果您不依赖默认属性,而是直接处理它,您的代码将不会受到该更改的影响并继续正常工作。

编辑:( 我最初链接到用于创建默认属性的 VB.NET 文档,即Default Property


推荐阅读