MS Access:确定对象类型

时间:2010-01-19 01:59:26

标签: ms-access object access-vba

在将引用传递给函数时,有没有办法确定对象类型?

我正在使用安全权限功能,该功能确定用户是否有权查看/编辑通过引用传递给它的表单。我想扩展它以包含报告。

为了使函数保持通用,我想传递一个ref作为对象的Form或Report,例如: function gfSecurity_Permission(obj as Object)

但是,我需要确定函数中对象的type

有谁知道这样做的方法?

MTIA

2 个答案:

答案 0 :(得分:11)

看看

typeOf and typeName

  

通用对象变量(即,您声明为Object的变量)   可以保存任何类的对象。使用Object类型的变量时,   你可能需要根据类别采取不同的行动   宾语;例如,某些对象可能不支持特定的对象   财产或方法。 Visual Basic提供了两种确定方法   哪种类型的对象存储在对象变量中:TypeName   function和TypeOf ...是运算符。

     

TypeName和TypeOf ...
  该   TypeName函数返回一个字符串,是您的最佳选择   需要存储或显示对象的类名,如图所示   以下代码片段:

Dim Ctrl As Control = New TextBox  
MsgBox(TypeName(Ctrl))
     

TypeOf ...运算符是测试对象的最佳选择   类型,因为它比等效的字符串比较快得多   使用TypeName。以下代码片段使用TypeOf ...在一个   如果......那么......其他声明:

If TypeOf Ctrl Is Button Then  
    MsgBox("The control is a button.") 
End If

答案 1 :(得分:6)

确定访问中访问类型的最简单方法是在Access系统表中进行对象查找。

这是查找:

DLookup("Type","MSysObjects","NAME = '" & strObject & "'")

strObject是Access

中对象的名称

如果Access

中不存在该对象,则结果是OR NULL之下的数字之一
1 = Access Table
4 = OBDB-Linked Table / View
5 = Access Query
6 = Attached (Linked) File  (such as Excel, another Access Table or query, text file, etc.)
-32768 = Access Form
-32764 = Access Report
-32761 = Access Module

所以,dlookup会为表单提供“-32768”或为报表提供“-32764” 希望有所帮助