【问题标题】:How to detect if your Microsoft Access application is compiled, i.e. running as an ACCDE如何检测您的 Microsoft Access 应用程序是否已编译,即作为 ACCDE 运行
【发布时间】:2017-01-18 16:24:46
【问题描述】:

是否有人有任何 VBA 来检测您的 Microsoft Access 2013/2016 应用程序是否作为 ACCDE 运行,即是否已编译?

如果发生错误并且 a) 是我在运行它 (environ("username')) 并且它不是 ACCDE,我希望我的代码停止并中断。

有人有什么建议吗?

【问题讨论】:

    标签: ms-access vba ms-access-2013 ms-access-2016


    【解决方案1】:

    改编自https://access-programmers.co.uk/forums/showthread.php?t=229474http://allenbrowne.com/ser-53.html

    Public Function IsACCDE() As Boolean
    
        ' Init
        IsACCDE = False
    
        ' This property exists only in compiled DBs (.mde, .accde)!
        ' Ignore error (and stay "False") if not.
        On Error Resume Next
        IsACCDE = (CurrentDb.Properties("MDE") = "T")
    
    End Function
    

    【讨论】:

    • 完美!正是我要找的东西,很有效。谢谢!
    • 如果答案解决了您的问题,您可以accept它,这也标志着问题已解决。 @BarrySeymour
    • 谢谢。不确定那个选项在哪里,但我找到了。
    【解决方案2】:

    我使用的是 Access VBA 的一部分:

    If IsCompiled = False Then
            DoCmd.RunCommand (acCmdCompileAndSaveAllModules)
    End If
    

    【讨论】:

    • 这回答了一个不同的问题。 IsCompiled 在 .accde 中始终为真,只能在 .accdb 中为假
    【解决方案3】:

    我找不到任何始终给我正确答案的属性。然后我意识到这些方法都是我真正想知道的近似值。现在直接问是不是acde。

    Private Function InDevelopment() As Boolean
    
    On Error Resume Next
    
        InDevelopment = False
        InDevelopment = (InStr(CurrentDb.Properties("Name"), "accde") = 0)
    End Function
    

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2023-03-14
      • 2018-12-05
      相关资源
      最近更新 更多