MS Access运行时中的Debug.Assert行为

mwolfe02

在许多编译语言中,Debug.Assert出于性能原因,对或等效的调用被排除在编译后的生产代码中。但是,对Debug.Assert的调用似乎仍在/runtimeMS Access应用程序版本中执行

为了对此进行测试,我在启动表单中添加了以下内容:

Private Sub Form_Load()
    Debug.Assert UserOK()
End Sub

Function UserOK() As Boolean
    UserOK = MsgBox("Is everything OK?", vbYesNo, "Test Debug.Assert") = vbYes
End Function

当我在开发环境中运行此命令并单击MsgBox上的[否]时,执行将在Debug.Assert行中中断(正如我期望的那样)。

当我/runtime使用开关运行相同的代码(使用完整版的MS Access 2002)时,我仍然看到MsgBox,但是单击[否]不会停止程序执行。似乎VBA执行了该行,但忽略了结果。这不足为奇,但这是不幸的。

我希望Access可以完全跳过Debug.Assert行。这意味着必须注意不要使用会损害性能的Debug.Assert行,例如:

Debug.Assert DCount("*", "SomeHugeTable", "NonIndexedField='prepare to wait!'") = 0

此行为记录在某处吗?Access中的官方文档似乎是从VB6逐字记录的:

断言调用仅在开发环境中起作用。将模块编译为可执行文件时,将忽略Debug对象上的方法调用。

显然,MS Access应用程序无法编译为可执行文件。是否有比以下解决方法更好的替代方法?

Private Sub Form_Load()
    If Not SysCmd(acSysCmdRuntime) Then Debug.Assert UserOK()  'check if Runtime 
End Sub

Function UserOK() As Boolean
    UserOK = MsgBox("Is everything OK?", vbYesNo, "Test Debug.Assert") = vbYes
End Function
橡皮鸭

我不知道它是否对您的特定用例更好,但是如果您希望在与应用程序无关的VBA代码中做到这一点,那么还有另一种更好的选择。VBA具有条件编译可以在模块级别声明条件复杂常量,但是在这种情况下,最好在项目级别声明它。

在菜单栏上,单击Tools>> ,然后在“条件编译参数:”字段中Project Properties键入a DEBUGMODE = 1请注意:DEBUG由于它是关键字,因此无法使用。

项目属性对话框窗口

现在,您可以将所有Debug.Assert()语句包装在这样的代码中。

#If DEBUGMODE Then
    Debug.Assert False
#End If

准备好部署项目时,只需返回“项目属性”对话框并将参数更改为即可DEBUGMODE = 0

附加信息:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连接到MS Access的Eclipse难以想象的编码行为

来自分类Dev

MS Access编译并运行

来自分类Dev

在Release版本中获得System.Diagnostics.Debug.Assert()的行为?

来自分类Dev

尝试从Access创建MS Word文档文件时出现运行时错误5981

来自分类Dev

Javascript关闭行为在运行时很奇怪

来自分类Dev

如何使用C#在运行时在MS Access中创建存储的查询

来自分类Dev

运行时中的Autofac解析参数

来自分类Dev

在运行时中删除标签

来自分类Dev

Access 2013运行时中未显示启动表单

来自分类Dev

Debug.Assert / Retry,32位和64位的不同行为

来自分类Dev

Windows运行时应用程序中的行为

来自分类Dev

InnoSetup,在运行时更改Uninstallable属性的行为?

来自分类Dev

运行时类型信息的奇怪行为

来自分类Dev

ModelMapper在运行时更改通用类型-奇怪的行为

来自分类Dev

MS Access vba,使用参数打开选择查询,运行时3065无法执行选择查询

来自分类Dev

@FunctionalInterface如何影响JVM的运行时行为?

来自分类Dev

如何在运行时更改静态方法的行为?

来自分类Dev

MS ACCESS VBA运行时错误“ 3021”;与.MoveNext

来自分类Dev

尝试从Access创建MS Word文档文件时出现运行时错误5981

来自分类Dev

MS Access 2013/365中的ActiveGantt Activex控件-对象方法上的VBA运行时错误

来自分类Dev

在运行时中删除标签

来自分类Dev

Windows运行时中的页面状态

来自分类Dev

SQL ORDER BY在MS Access 2010报告中的行为异常

来自分类Dev

带子查询的SQL查询上的MS Access VBA运行时错误3075

来自分类Dev

MS Access vba,使用参数打开选择查询,运行时3065无法执行选择查询

来自分类Dev

行为和-ms-行为之间的区别

来自分类Dev

MS-Access 2007查询运行时错误

来自分类Dev

MS ACCESS - VBA 中的错误运行时 3141 SQL

来自分类Dev

MS Access 运行时 - 文件对话框失败

Related 相关文章

  1. 1

    连接到MS Access的Eclipse难以想象的编码行为

  2. 2

    MS Access编译并运行

  3. 3

    在Release版本中获得System.Diagnostics.Debug.Assert()的行为?

  4. 4

    尝试从Access创建MS Word文档文件时出现运行时错误5981

  5. 5

    Javascript关闭行为在运行时很奇怪

  6. 6

    如何使用C#在运行时在MS Access中创建存储的查询

  7. 7

    运行时中的Autofac解析参数

  8. 8

    在运行时中删除标签

  9. 9

    Access 2013运行时中未显示启动表单

  10. 10

    Debug.Assert / Retry,32位和64位的不同行为

  11. 11

    Windows运行时应用程序中的行为

  12. 12

    InnoSetup,在运行时更改Uninstallable属性的行为?

  13. 13

    运行时类型信息的奇怪行为

  14. 14

    ModelMapper在运行时更改通用类型-奇怪的行为

  15. 15

    MS Access vba,使用参数打开选择查询,运行时3065无法执行选择查询

  16. 16

    @FunctionalInterface如何影响JVM的运行时行为?

  17. 17

    如何在运行时更改静态方法的行为?

  18. 18

    MS ACCESS VBA运行时错误“ 3021”;与.MoveNext

  19. 19

    尝试从Access创建MS Word文档文件时出现运行时错误5981

  20. 20

    MS Access 2013/365中的ActiveGantt Activex控件-对象方法上的VBA运行时错误

  21. 21

    在运行时中删除标签

  22. 22

    Windows运行时中的页面状态

  23. 23

    SQL ORDER BY在MS Access 2010报告中的行为异常

  24. 24

    带子查询的SQL查询上的MS Access VBA运行时错误3075

  25. 25

    MS Access vba,使用参数打开选择查询,运行时3065无法执行选择查询

  26. 26

    行为和-ms-行为之间的区别

  27. 27

    MS-Access 2007查询运行时错误

  28. 28

    MS ACCESS - VBA 中的错误运行时 3141 SQL

  29. 29

    MS Access 运行时 - 文件对话框失败

热门标签

归档