SysCmd 方法

expandtri全部显示

使用 SysCmd 方法可以:在状态栏中显示进度表或可选的指定文本,返回有关 Microsoft Access 及其关联文件的信息,或返回指定数据库对象的状态(表明对象是打开的、是新对象,还是已进行更改但没有保存)。Variant 型。

expression.SysCmd(Action, Argument2, Argument3)

expression    必需。返回“应用于”列表中的一个对象的表达式。

Action   必需 AcSysCmdAction。下列固有常量之一,标识要执行的操作类型。下面的常量集适用于进度表。如果这些操作成功,SysCmd 方法将返回一个 Null 值。否则,Microsoft Access 将产生运行时错误

AcSysCmdAction 可以是下列 AcSysCmdAction 常量之一:

acSysCmdAccessDir。返回 Msaccess.exe 所在的目录名

acSysCmdAccessVer。返回 Microsoft Access 的版本号。

acSysCmdClearHelpTopic

acSysCmdClearStatus。下列常量提供有关数据库对象状态的信息:

acSysCmdGetObjectState。返回指定数据库对象的状态。使用该 action 值时,必须指定 argument1 和 argument2 参数。

acSysCmdGetWorkgroupFile。返回工作组文件 (System.mdw) 的路径。

acSysCmdIniFile。返回与 Microsoft Access 关联的 .ini 文件。

acSysCmdInitMeter。初始化进度表。使用该操作时,必须指定 argument1 和 argument2 参数。

acSysCmdProfile。在通过命令行打开 Microsoft Access 时,返回由用户指定的 /profile 设置。

acSysCmdRemoveMeter。删除进度表。

acSysCmdRuntime。如果正在运行 Microsoft Access 的运行时版本,返回 True (–1)。

acSysCmdSetStatus。将状态栏文本设置为 text 参数。

acSysCmdUpdateMeter。用指定值更新进度表。使用该操作时,必须指定 text 参数。

Argument2     可选 Variant 型。字符串表达式,表示状态栏中靠左显示的文本。当 action   参数是 acSysCmdInitMeteracSysCmdUpdateMeteracSysCmdSetStatus 时,该参数为必需项;该参数对其他 action 参数值无效。

注释  在指定 Action 参数的 acSysCmdGetObjectState 值时,必须指定相应的 acObjectType

acTable

acQuery

acForm

acReport

acMacro

acModule

acDataAccessPage

acDefault

acDiagram

acServerView

acStoreProcedure

该参数对于其他 action 参数值无效。

Argument3     可选 Variant 型。数值表达式,用于控制进度表的显示。当 action   参数是 acSysCmdSetStatus 时,该参数为必需项;该参数对其他 action 参数值无效。

注释  在指定 Action 参数的 acSysCmdGetObjectState 值时,必须指定数据库对象的名称。

说明

例如,如果正建立一个创建新窗体的自定义向导,可以使用 SysCmd 方法来显示一个进度表,指出向导构建窗体时的进度。

通过使用各种进度表操作来调用 SysCmd 方法,可以在状态栏中显示一个已知持续时间或步骤数目的操作进度表,并且可以对其更新以表示操作的进度。

若要在状态栏中显示进度表,首先必须使用 acSysCmdInitMeter action 参数、text 和 value 参数来调用 SysCmd 方法。当 action 参数为 acSysCmdInitMeter 时,value 参数是进度表的最大值或 100%。

若要更新进度表以显示操作的进度,请用 acSysCmdUpdateMeter action 参数和 value 参数来调用 SysCmd 方法。当 action 参数是 acSysCmdUpdateMeter 时,SysCmd 方法使用 value 参数来计算进度表中显示的百分比。例如,如果设置最大值为 200,然后用 100 的值更新此表,则进度表只填满了一半。

也可以通过调用带有 acSysCmdSetStatus action 参数和 text 参数的 SysCmd 方法来更改状态栏中显示的文本。例如在排序期间,可能希望文本改为“正在排序...”。当排序完成时,还想通过删除该文本来重置状态栏。text 参数可以包含大约 80 个字符。因为状态栏文本使用成比例的字体来显示,可以显示的实际字符数目取决于 text 参数指定的所有字符的总宽度。

在增加状态栏文本宽度的同时,也减少了该进度表的长度。如果文本比状态栏还要长而且 action 参数是 acSysCmdInitMeter,则 SysCmd 方法将忽略该文本,在状态栏上无任何显示。如果文本比状态栏还要长而且 action 参数为 acSysCmdSetStatus,则 SysCmd 方法将截取文本以填充状态栏。

不能将状态栏文本设置为零长度字符串 (" ")。如果想从状态栏中删除现有的文本,请将 text 参数设置为一个空格。下面的示例说明了从状态栏中删除文本的方法:

varReturn = SysCmd(acSysCmdInitMeter, " ", 100)

varReturn = SysCmd(acSysCmdSetStatus, " ")

使用 acSysCmdSetStatus action 参数调用 SysCmd 方法来设置该文本时,如果进度表已经显示,则 SysCmd 方法将自动删除此表。

可以用其他操作调用 SysCmd 方法,以决定有关 Microsoft Access 的系统信息,这些信息包括 Microsoft Access 正在运行的版本号、是否是运行时版本、Microsoft Access 可执行文件的位置、命令行中指定的 /profile 参数设置和与 Microsoft Access 相关联的 .ini 文件名。

注释  Microsoft Access 的常规和自定义设置现在都存储在 Windows 注册表中,因此不能不再需要对 Microsoft Access 应用程序使用 .ini 文件。acSysCmdIniFile 使用 action 参数是为了与 Microsoft Access 的早期版本兼容。

acSysCmdGetObjectState action 参数和 objecttype 及 objectname 参数来调用 SysCmd 方法可以返回指定数据库对象的状态。对象可能为这四种状态之一:没有打开或不存在、打开、新建或更改但没有保存。

例如,如果您正在设计一个在表中插入新字段的向导,则可能需要确定表的结构是否已经更改但尚未保存,以便在修改其结构前保存它。检查 SysCmd 方法返回的值就可以确定表的状态。

使用 acSysCmdGetObjectState action 参数的 SysCmd 方法可以返回下列常量的任一组合:

常量

数据库对象的状态

acObjStateOpen

打开

1

acObjStateDirty

更改但未保存

2

acObjStateNew

新建

4

 

注释  如果 objectname 参数引用的对象未打开或不存在,则 SysCmd 方法将返回零值。

将 ActiveX 控件添加到窗体后,可使用下列代码在表达式中启用 ActiveX 控件:

SysCmd 14, "<ActiveX Control GUID>"

注释  请使用标识要在表达式中启用的 ActiveX 控件的全局唯一标识符 (GUID) 替换 <ActiveX Control GUID>。

注释  将 ActiveX 控件添加到许用控件列表后,就不能删除它。