访问SysCmd函数对某些操作值的预期效果不正常

时间:2015-06-04 12:18:52

标签: vba ms-access access-vba ms-access-2010 statusbar

我已阅读relevant historical material,这与其他人的问题不同。添加DoEvents无效。

第一个问题

RetVal = SysCmd(4, "Here's an Update!")清除状态栏文本和计量器,而不是更新文本。我已使用?SysCmd(4, "some text")在子窗口和即时窗口中对此进行了测试。

第二个问题

更令人困惑的是SysCmd(3)SysCmd(5) 两者完全删除了状态栏,文字和计费器。 documentation中描述了SysCmd(3)

  

当参数为3时,进度表将从状态栏中删除。

对于another page上的SysCmd(5)

  

当action参数为5时,将删除前一个SysCmd()函数设置的状态栏文本。

与这些描述相反,整个状态栏已被删除。

我甚至尝试过测试the suggested sub from Microsoft

Function StatusBar ()
     Dim RetVal As Variant
     RetVal = SysCmd(4, "The rain in Spain falls mainly ...")
     MsgBox "Press OK when you are ready to finish!"
     RetVal = SysCmd(5)
  End Function

测试此结果只会出现消息框。

其他一切工作

据我所知,其他一切都运转良好。这些按预期工作:

RetVal = SysCmd(1, "Beginning Queries...", 10) 'adds the status bar 
RetVal = SysCmd(2,1) 'moves the meter

添加常量名称(即acSysCmdSetStatus)似乎在Access 2010中没有任何影响(因为这是Access VBA,而不是VBS)。

2 个答案:

答案 0 :(得分:1)

我遇到的问题都是关于一个错误的误解。 SysCmd方法执行a lot of things并且有点压倒性。

在Access的最底部,我们有状态栏。 左下角上的文字是Status Bar Text。这是通过acSysCmdSetStatus(值4)和acSysCmdClearStatus5的值)来控制的。

此文字不能与Status Bar Progress Meter同时使用,here位于状态栏的右下角。它有自己的文字。

上面的误解是状态栏文本操作会更改状态栏进度表的文本。他们没有。

有关SysCmd操作值的参考,请参阅https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html#//apple_ref/doc/uid/TP40008194-CH102-SW1

答案 1 :(得分:0)

很难说。您的代码在A2013中运行良好,缩减版本也是如此:

Public Function StatusBar()
    SysCmd acSysCmdSetStatus, "The rain in Spain falls mainly ..."
    MsgBox "Press OK when you are ready to finish!"
    SysCmd acSysCmdClearStatus
End Function

显示状态文本,消息框弹出,状态栏被清除。