使用 SysCmd 方法可以:在狀態(tài)欄中顯示進度表或可選的指定文本,返回有關 Microsoft Access 及其關聯(lián)文件的信息,或返回指定數(shù)據(jù)庫對象的狀態(tài)(表明對象是打開的、是新對象,還是已進行更改但沒有保存)。Variant 型。
expression.SysCmd(Action, Argument2, Argument3)
expression 必需。返回“應用于”列表中的一個對象的表達式。
Action 必需 AcSysCmdAction。下列固有常量之一,標識要執(zhí)行的操作類型。下面的常量集適用于進度表。如果這些操作成功,SysCmd 方法將返回一個 Null 值。否則,Microsoft Access 將產(chǎn)生運行時錯誤。
AcSysCmdAction 可以是下列 AcSysCmdAction 常量之一:
acSysCmdAccessDir。返回 Msaccess.exe 所在的目錄名
acSysCmdAccessVer。返回 Microsoft Access 的版本號。
acSysCmdClearHelpTopic
acSysCmdClearStatus。下列常量提供有關數(shù)據(jù)庫對象狀態(tài)的信息:
acSysCmdGetObjectState。返回指定數(shù)據(jù)庫對象的狀態(tài)。使用該 action 值時,必須指定 argument1 和 argument2 參數(shù)。
acSysCmdGetWorkgroupFile。返回工作組文件 (System.mdw) 的路徑。
acSysCmdIniFile。返回與 Microsoft Access 關聯(lián)的 .ini 文件。
acSysCmdInitMeter。初始化進度表。使用該操作時,必須指定 argument1 和 argument2 參數(shù)。
acSysCmdProfile。在通過命令行打開 Microsoft Access 時,返回由用戶指定的 /profile 設置。
acSysCmdRemoveMeter。刪除進度表。
acSysCmdRuntime。如果正在運行 Microsoft Access 的運行時版本,返回 True (–1)。
acSysCmdSetStatus。將狀態(tài)欄文本設置為 text 參數(shù)。
acSysCmdUpdateMeter。用指定值更新進度表。使用該操作時,必須指定 text 參數(shù)。
Argument2 可選 Variant 型。字符串表達式,表示狀態(tài)欄中靠左顯示的文本。當 action
參數(shù)是 acSysCmdInitMeter、acSysCmdUpdateMeter 或 acSysCmdSetStatus 時,該參數(shù)為必需項;該參數(shù)對其他 action 參數(shù)值無效。
注釋 在指定 Action 參數(shù)的 acSysCmdGetObjectState 值時,必須指定相應的 acObjectType。
acTable
acQuery
acForm
acReport
acMacro
acModule
acDataAccessPage
acDefault
acDiagram
acServerView
acStoreProcedure
該參數(shù)對于其他 action 參數(shù)值無效。
Argument3 可選 Variant 型。數(shù)值表達式,用于控制進度表的顯示。當 action 參數(shù)是 acSysCmdSetStatus 時,該參數(shù)為必需項;該參數(shù)對其他 action 參數(shù)值無效。
注釋 在指定 Action 參數(shù)的 acSysCmdGetObjectState 值時,必須指定數(shù)據(jù)庫對象的名稱。
說明
例如,如果正建立一個創(chuàng)建新窗體的自定義向?qū)В梢允褂?SysCmd 方法來顯示一個進度表,指出向?qū)嫿ù绑w時的進度。
通過使用各種進度表操作來調(diào)用 SysCmd 方法,可以在狀態(tài)欄中顯示一個已知持續(xù)時間或步驟數(shù)目的操作進度表,并且可以對其更新以表示操作的進度。
若要在狀態(tài)欄中顯示進度表,首先必須使用 acSysCmdInitMeter action 參數(shù)、text 和 value 參數(shù)來調(diào)用 SysCmd 方法。當 action 參數(shù)為 acSysCmdInitMeter 時,value 參數(shù)是進度表的值或 100%。
若要更新進度表以顯示操作的進度,請用 acSysCmdUpdateMeter action 參數(shù)和 value 參數(shù)來調(diào)用 SysCmd 方法。當 action 參數(shù)是 acSysCmdUpdateMeter 時,SysCmd 方法使用 value 參數(shù)來計算進度表中顯示的百分比。例如,如果設置值為 200,然后用 100 的值更新此表,則進度表只填滿了一半。
也可以通過調(diào)用帶有 acSysCmdSetStatus action 參數(shù)和 text 參數(shù)的 SysCmd 方法來更改狀態(tài)欄中顯示的文本。例如在排序期間,可能希望文本改為“正在排序...”。當排序完成時,還想通過刪除該文本來重置狀態(tài)欄。text 參數(shù)可以包含大約 80 個字符。因為狀態(tài)欄文本使用成比例的字體來顯示,可以顯示的實際字符數(shù)目取決于 text 參數(shù)指定的所有字符的總寬度。
在增加狀態(tài)欄文本寬度的同時,也減少了該進度表的長度。如果文本比狀態(tài)欄還要長而且 action 參數(shù)是 acSysCmdInitMeter,則 SysCmd 方法將忽略該文本,在狀態(tài)欄上無任何顯示。如果文本比狀態(tài)欄還要長而且 action 參數(shù)為 acSysCmdSetStatus,則 SysCmd 方法將截取文本以填充狀態(tài)欄。
不能將狀態(tài)欄文本設置為零長度字符串 (" ")。如果想從狀態(tài)欄中刪除現(xiàn)有的文本,請將 text 參數(shù)設置為一個空格。下面的示例說明了從狀態(tài)欄中刪除文本的方法:
varReturn = SysCmd(acSysCmdInitMeter, " ", 100) varReturn = SysCmd(acSysCmdSetStatus, " ")
使用 acSysCmdSetStatus action 參數(shù)調(diào)用 SysCmd 方法來設置該文本時,如果進度表已經(jīng)顯示,則 SysCmd 方法將自動刪除此表。
可以用其他操作調(diào)用 SysCmd 方法,以決定有關 Microsoft Access 的系統(tǒng)信息,這些信息包括 Microsoft Access 正在運行的版本號、是否是運行時版本、Microsoft Access 可執(zhí)行文件的位置、命令行中指定的 /profile 參數(shù)設置和與 Microsoft Access 相關聯(lián)的 .ini 文件名。
注釋 Microsoft Access 的常規(guī)和自定義設置現(xiàn)在都存儲在 Windows 注冊表中,因此不能不再需要對 Microsoft Access 應用程序使用 .ini 文件。acSysCmdIniFile 使用 action 參數(shù)是為了與 Microsoft Access 的早期版本兼容。
用 acSysCmdGetObjectState action 參數(shù)和 objecttype 及 objectname 參數(shù)來調(diào)用 SysCmd 方法可以返回指定數(shù)據(jù)庫對象的狀態(tài)。對象可能為這四種狀態(tài)之一:沒有打開或不存在、打開、新建或更改但沒有保存。
例如,如果您正在設計一個在表中插入新字段的向?qū)?,則可能需要確定表的結構是否已經(jīng)更改但尚未保存,以便在修改其結構前保存它。檢查 SysCmd 方法返回的值就可以確定表的狀態(tài)。
使用 acSysCmdGetObjectState action 參數(shù)的 SysCmd 方法可以返回下列常量的任一組合:
常量 數(shù)據(jù)庫對象的狀態(tài) 值
acObjStateOpen 打開 1
acObjStateDirty 更改但未保存 2
acObjStateNew 新建 4
注釋 如果 objectname 參數(shù)引用的對象未打開或不存在,則 SysCmd 方法將返回零值。
將 ActiveX 控件添加到窗體后,可使用下列代碼在表達式中啟用 ActiveX 控件:
SysCmd 14, ""
注釋 請使用標識要在表達式中啟用的 ActiveX 控件的全局標識符 (GUID) 替換 。
注釋 將 ActiveX 控件添加到許用控件列表后,就不能刪除它。
使用例子:
判斷一個窗體是否打開的函數(shù)
Function fIsLoaded(ByVal strFormName As String) As Integer
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> 0 Then
If Forms(strFormName).CurrentView <> 0 Then
fIsLoaded = True
End If
End If
End Function
expression.SysCmd(Action, Argument2, Argument3)
expression 必需。返回“應用于”列表中的一個對象的表達式。
Action 必需 AcSysCmdAction。下列固有常量之一,標識要執(zhí)行的操作類型。下面的常量集適用于進度表。如果這些操作成功,SysCmd 方法將返回一個 Null 值。否則,Microsoft Access 將產(chǎn)生運行時錯誤。
AcSysCmdAction 可以是下列 AcSysCmdAction 常量之一:
acSysCmdAccessDir。返回 Msaccess.exe 所在的目錄名
acSysCmdAccessVer。返回 Microsoft Access 的版本號。
acSysCmdClearHelpTopic
acSysCmdClearStatus。下列常量提供有關數(shù)據(jù)庫對象狀態(tài)的信息:
acSysCmdGetObjectState。返回指定數(shù)據(jù)庫對象的狀態(tài)。使用該 action 值時,必須指定 argument1 和 argument2 參數(shù)。
acSysCmdGetWorkgroupFile。返回工作組文件 (System.mdw) 的路徑。
acSysCmdIniFile。返回與 Microsoft Access 關聯(lián)的 .ini 文件。
acSysCmdInitMeter。初始化進度表。使用該操作時,必須指定 argument1 和 argument2 參數(shù)。
acSysCmdProfile。在通過命令行打開 Microsoft Access 時,返回由用戶指定的 /profile 設置。
acSysCmdRemoveMeter。刪除進度表。
acSysCmdRuntime。如果正在運行 Microsoft Access 的運行時版本,返回 True (–1)。
acSysCmdSetStatus。將狀態(tài)欄文本設置為 text 參數(shù)。
acSysCmdUpdateMeter。用指定值更新進度表。使用該操作時,必須指定 text 參數(shù)。
Argument2 可選 Variant 型。字符串表達式,表示狀態(tài)欄中靠左顯示的文本。當 action
參數(shù)是 acSysCmdInitMeter、acSysCmdUpdateMeter 或 acSysCmdSetStatus 時,該參數(shù)為必需項;該參數(shù)對其他 action 參數(shù)值無效。
注釋 在指定 Action 參數(shù)的 acSysCmdGetObjectState 值時,必須指定相應的 acObjectType。
acTable
acQuery
acForm
acReport
acMacro
acModule
acDataAccessPage
acDefault
acDiagram
acServerView
acStoreProcedure
該參數(shù)對于其他 action 參數(shù)值無效。
Argument3 可選 Variant 型。數(shù)值表達式,用于控制進度表的顯示。當 action 參數(shù)是 acSysCmdSetStatus 時,該參數(shù)為必需項;該參數(shù)對其他 action 參數(shù)值無效。
注釋 在指定 Action 參數(shù)的 acSysCmdGetObjectState 值時,必須指定數(shù)據(jù)庫對象的名稱。
說明
例如,如果正建立一個創(chuàng)建新窗體的自定義向?qū)В梢允褂?SysCmd 方法來顯示一個進度表,指出向?qū)嫿ù绑w時的進度。
通過使用各種進度表操作來調(diào)用 SysCmd 方法,可以在狀態(tài)欄中顯示一個已知持續(xù)時間或步驟數(shù)目的操作進度表,并且可以對其更新以表示操作的進度。
若要在狀態(tài)欄中顯示進度表,首先必須使用 acSysCmdInitMeter action 參數(shù)、text 和 value 參數(shù)來調(diào)用 SysCmd 方法。當 action 參數(shù)為 acSysCmdInitMeter 時,value 參數(shù)是進度表的值或 100%。
若要更新進度表以顯示操作的進度,請用 acSysCmdUpdateMeter action 參數(shù)和 value 參數(shù)來調(diào)用 SysCmd 方法。當 action 參數(shù)是 acSysCmdUpdateMeter 時,SysCmd 方法使用 value 參數(shù)來計算進度表中顯示的百分比。例如,如果設置值為 200,然后用 100 的值更新此表,則進度表只填滿了一半。
也可以通過調(diào)用帶有 acSysCmdSetStatus action 參數(shù)和 text 參數(shù)的 SysCmd 方法來更改狀態(tài)欄中顯示的文本。例如在排序期間,可能希望文本改為“正在排序...”。當排序完成時,還想通過刪除該文本來重置狀態(tài)欄。text 參數(shù)可以包含大約 80 個字符。因為狀態(tài)欄文本使用成比例的字體來顯示,可以顯示的實際字符數(shù)目取決于 text 參數(shù)指定的所有字符的總寬度。
在增加狀態(tài)欄文本寬度的同時,也減少了該進度表的長度。如果文本比狀態(tài)欄還要長而且 action 參數(shù)是 acSysCmdInitMeter,則 SysCmd 方法將忽略該文本,在狀態(tài)欄上無任何顯示。如果文本比狀態(tài)欄還要長而且 action 參數(shù)為 acSysCmdSetStatus,則 SysCmd 方法將截取文本以填充狀態(tài)欄。
不能將狀態(tài)欄文本設置為零長度字符串 (" ")。如果想從狀態(tài)欄中刪除現(xiàn)有的文本,請將 text 參數(shù)設置為一個空格。下面的示例說明了從狀態(tài)欄中刪除文本的方法:
varReturn = SysCmd(acSysCmdInitMeter, " ", 100) varReturn = SysCmd(acSysCmdSetStatus, " ")
使用 acSysCmdSetStatus action 參數(shù)調(diào)用 SysCmd 方法來設置該文本時,如果進度表已經(jīng)顯示,則 SysCmd 方法將自動刪除此表。
可以用其他操作調(diào)用 SysCmd 方法,以決定有關 Microsoft Access 的系統(tǒng)信息,這些信息包括 Microsoft Access 正在運行的版本號、是否是運行時版本、Microsoft Access 可執(zhí)行文件的位置、命令行中指定的 /profile 參數(shù)設置和與 Microsoft Access 相關聯(lián)的 .ini 文件名。
注釋 Microsoft Access 的常規(guī)和自定義設置現(xiàn)在都存儲在 Windows 注冊表中,因此不能不再需要對 Microsoft Access 應用程序使用 .ini 文件。acSysCmdIniFile 使用 action 參數(shù)是為了與 Microsoft Access 的早期版本兼容。
用 acSysCmdGetObjectState action 參數(shù)和 objecttype 及 objectname 參數(shù)來調(diào)用 SysCmd 方法可以返回指定數(shù)據(jù)庫對象的狀態(tài)。對象可能為這四種狀態(tài)之一:沒有打開或不存在、打開、新建或更改但沒有保存。
例如,如果您正在設計一個在表中插入新字段的向?qū)?,則可能需要確定表的結構是否已經(jīng)更改但尚未保存,以便在修改其結構前保存它。檢查 SysCmd 方法返回的值就可以確定表的狀態(tài)。
使用 acSysCmdGetObjectState action 參數(shù)的 SysCmd 方法可以返回下列常量的任一組合:
常量 數(shù)據(jù)庫對象的狀態(tài) 值
acObjStateOpen 打開 1
acObjStateDirty 更改但未保存 2
acObjStateNew 新建 4
注釋 如果 objectname 參數(shù)引用的對象未打開或不存在,則 SysCmd 方法將返回零值。
將 ActiveX 控件添加到窗體后,可使用下列代碼在表達式中啟用 ActiveX 控件:
SysCmd 14, ""
注釋 請使用標識要在表達式中啟用的 ActiveX 控件的全局標識符 (GUID) 替換 。
注釋 將 ActiveX 控件添加到許用控件列表后,就不能刪除它。
使用例子:
判斷一個窗體是否打開的函數(shù)
Function fIsLoaded(ByVal strFormName As String) As Integer
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> 0 Then
If Forms(strFormName).CurrentView <> 0 Then
fIsLoaded = True
End If
End If
End Function