使用 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 参数是 acSysCmdInitMeter、acSysCmdUpdateMeter 或 acSysCmdSetStatus 时,该参数为必需项;该参数对其他 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 控件添加到许用控件列表后,就不能删除它。