如何检测您的 Microsoft Access 应用程序是不是已编译,即作为 ACCDE 运行
Posted
技术标签:
【中文标题】如何检测您的 Microsoft Access 应用程序是不是已编译,即作为 ACCDE 运行【英文标题】: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,我希望我的代码停止并中断。
有人有什么建议吗?
【问题讨论】:
【参考方案1】:改编自https://access-programmers.co.uk/forums/showthread.php?t=229474和http://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
【讨论】:
以上是关于如何检测您的 Microsoft Access 应用程序是不是已编译,即作为 ACCDE 运行的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行时检测 .NET 4.5 版当前正在运行您的代码?
[Access][Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度 Invalid string or buffer length
将 Microsoft Access 组合框中的默认值设置为当前月份
在 Microsoft Access 报告中获取两个计数之间的差异