服务器 频道

将 Access 用作 Automation 服务器

Application 对象的 UserControl 和 Visible 属性对于控制 Microsoft Access 的屏幕显示方式很重要。UserControl 属性使您能确定 Microsoft Access 实例是由用户还是由其它使用 Automation 的应用程序启动的。 Visible 属性使您能确定 Microsoft Access 实例是可见的还是被最小化了。

打开或激活 Microsoft Access 实例时,根据在 Visual Basic 中激活 Application 对象时 Microsoft Access 是否已经运行,自动设置 UserControl 和 Visible 属性。例如,下表说明在不同情形下的设置: 激活 MS Access 的方法 UserControl Visible
----------------------------------------------------------

打开了 Microsoft Access True True
实例之后的 GetObject() 函数

Shell() 函数 True True

尚未打开 Microsoft Access 实例时的 False False
GetObject() 函数

CreateObject() 函数 False False

UserControl 属性
--------------------
UserControl 属性


UserControl 属性始终是只读,因此,使用 Automation 无法设置该属性。但是,如果在 Automation 代码空闲时用户对代码进行干预,UserControl 属性可能自动更改。例如,发生以下事件时,UserControl 属性将更改为 False:


用户创建 Microsoft Access 实例,该实例将 UserControl 属性设置为 True。
在控制器应用程序中运行 Automation 代码,该代码使用 GetObject() 函数激活以前打开的 Microsoft Access 实例。实例使用的对象变量为 Public 或模块级变量。
用户使用 Windows 任务栏(或 Windows NT 中的“任务列表”)还原 Microsoft Access。
用户试图通过单击“关闭”框来关闭 Microsoft Access。由于 Automation 控制器有引用该 Microsoft Access 实例的 Public 或模块级对象变量,所以实例没有按照设想的方式关闭。而是将实例最小化,这样将 UserControl 和 Visible 属性设置为 False。
同样,如果发生以下事件,会将 UserControl 属性更改为 True。


使用 Automaton 新建 Microsoft Access 实例。UserControl 属性为 False。Visible 属性也为 False,因此,实例被最小化。
用户使用 Windows 任务栏(或 Windows NT 中的“任务列表”)还原 Microsoft Access。或者,在 Visual Basic 中调用 ShowWindow() API 函数还原使用代码的实例。在上述两种情况下,UserControl 和 Visible 属性将更改为 True。
如果 UserControl 属性为 True,它可以影响控制 Microsoft Access 屏幕显示方式的能力。应该特别注意以下限制:


在试图将 Visual 属性设置为 True 时,可能会在 Automation 代码中收到错误消息;UserControl 属性为 True 时 Visible 属性为只读。
无法象 OLE Server 应用程序一样捕获或抑制 Microsoft Access 生成的错误消息。如果执行错误的命令(例如,试图打开当前数据库中不存在的窗体),将显示错误消息。
当引用实例的对象变量 (objAccess) 设置为 Nothing 或此变量没有指定范围时,Microsoft Access 实例不会自动关闭。
Visible 属性


在不同的条件下,Visible 属性可以为只读或读写。当 UserControl 属性为 True 或 Microsoft Access 实例最初由用户(而不是由 Automation 代码)创建时,Visible 属性为只读。当 UserControl 属性为 False 时,Visible 属性为读写。但是,在少数情况下,如果实例的 Visible 属性已经为 True 并且已经被用户最小化,将 Visible 属性设置为 True 可能无法看见 Microsoft Access 实例。

0
相关文章