【问题标题】:Converting an expression to VBA in access在访问中将表达式转换为 VBA
【发布时间】:2020-07-13 20:28:59
【问题描述】:

我创建了一个表达式来将 3 个文本框添加到第 4 个总框中。表达式为:

=Cdbl(Nz[txtPart1],0)) + Cdbl(Nz[txtPart2],0)) + Cdbl(Nz[txtPart3],0)) 

我正在尝试将其转换为 VBA 代码,因为我创建的表单上有很多东西在上面运行,这就是计算速度慢的原因。我希望能够添加一个沙漏,这样用户就不会认为该程序不起作用。我尝试在所有三个文本框的更新后事件中放置一个代码,将 3 相加,但这不起作用。请帮忙!

我在 3 个文本框的 AfterUpdate 中有这段代码:

me.total = me.txtpPart1 + me.txtPart2 + me.txtPart3

谢谢

【问题讨论】:

  • 这个表达式非常快,所以你可能不得不寻找其他地方进行优化。如果你的文本框包含数字,它工作,请问你的代码是什么?
  • 我在帖子中添加了我的代码
  • 将表单的 Timer Interval 属性设置为 0 进行测试。这是否会使“第 4 个总框”响应更快?它似乎在我的你的数据库副本中。
  • 是的,“发现时间”文本框将保持为空。我只是建议您测试禁用计时器的影响。如果有帮助,您将需要稍后决定如何处理“发现时间”。如果没有帮助,请将其设置回 125 并在其他地方寻找改进。
  • 太棒了!我认为你在那里做出了正确的选择,BC。您承认“我创建的表单上运行了很多东西,这就是计算缓慢的原因”。每秒更新 8 次“发现时间”只会增加该工作量。实际上,我根本不明白为什么显示“发现时间”是有价值的。建议您寻找其他机会来简化该表格。祝你好运。

标签: ms-access vba calc


【解决方案1】:

那么你可以使用:

Me!Total.Value = 0
' Ignore error from non-numeric input.
On Error Resume Next
Me!Total.Value = CDbl(Nz(Me!txtPart1.Value, 0)) + CDbl(Nz(Me!txtPart2.Value, 0)) + CDbl(Nz(Me!txtPart3.Value, 0)) 

【讨论】:

  • 好的,所以我应该把它放在三个文本框的更新后?
  • 没有。您可以将其保存在一个名为 UpdateTotal 的函数中,然后从三个 AfterUpdate 事件中调用此函数。
猜你喜欢
  • 1970-01-01
  • 2014-12-19
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多