【问题标题】:Can't capture /cmd value in Access Macro无法在 Access 宏中捕获 /cmd 值
【发布时间】:2019-03-02 07:13:06
【问题描述】:

Office 365 中的 MS Access(2007 - 2016)

我正在尝试/未能使用宏中的 Command() 函数捕获从命令行传递到 Access 的值。这是我用向导创建的宏...

If Command()="Update_Burndown_Metrics" Then
  RunSQL
    SQL Statement   insert .... blah, blah
End If

保存宏时没有错误,但是运行时...

The expression you entered has a function name that Microsoft Access can't find

如果我更换...

If Command()="Update_Burndown_Metrics" 

If 1=1

运行良好。 IOW,这不是 SQL。是“找不到的Command()函数。

我从 Opening Microsoft Access with parameters 得到了使用 Command() 的想法。似乎对我不起作用。但是这里也证实了这种编码方法......http://www.utteraccess.com/wiki/Command-Line_Switches。所以我认为这是另一回事。

最后,我想在命令行上使用 /cmd 传递 Update_Burndown_Metrics 参数。

为什么找不到 Command() 作为有效函数?这是范围界定的事情吗?我是否必须以某种方式提供 Command() 上下文,可能带有某种前缀?

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    我似乎无法重现您所描述的问题,不过,我使用的是早期版本的 MS Access,因此此功能的行为可能存在一些差异。

    Command 函数应该是全局可访问的,即使在 VBA 之外(例如,它可以被文本框的 ControlSource 属性引用),因此这不是范围问题。

    我从Office 365 documentation 观察到,Command 函数在提供的示例 VBA Sub 中没有使用括号被调用;因此,在不包含此类括号的情况下尝试您的代码可能是值得的,例如:

    If Command = "Update_Burndown_Metrics" Then
        MsgBox "Test succeeded."
    Else
        MsgBox "Test failed."
    End If
    

    【讨论】:

      【解决方案2】:

      我创建的解决方法是在 vba 中创建一个获取并返回命令的函数...

      Public Function GetCommand() As String
        GetCommand = Command()
      End Function
      

      那么……

      If GetCommand() = "Update_Burndown_Metrics" Then ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-05
        • 1970-01-01
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        相关资源
        最近更新 更多