访问:更改后事件

时间:2018-11-02 02:15:51

标签: vba ms-access access-vba

我正在尝试创建一个执行简单数学运算的访问表单。用户在值之前和之后输入,并且在用户输入值之后,禁用的净文本框会自动计算并显示净值。

之前:___

之后:____

net:(=前后)

我的代码是:

   Private Sub after_Change()
       net.Value = before.Value - after.Value
   End Sub

现在有两个问题,即它根据最后输入的值进行更改(更改5-> 6时,它将以5运行代码)。并且仅在第一个更改上运行代码,而不是在每个更改上运行代码。要再次运行它,必须取消选择文本框,然后再次选择它。

我在这里想念什么?

3 个答案:

答案 0 :(得分:0)

尝试一下:

   Private Sub after_Change()
       net.Value = before.Value - after.Text
   End Sub

答案 1 :(得分:0)

这应该有效:

Private Sub Form_Current
  net.Value = before.Text - after.Text
End Sub

答案 2 :(得分:0)

在VB6中:您在更新事件后使用控件

在.net / vb.net中:您在更新事件后使用控件

在asp.net中:您可以在更新事件后使用控件。

使用C#和Winforms吗? -您可以在更新事件后使用控件。

在FoxPro中,您使用更新后事件。

是否想在Access中使用该事件?

提示: 更新后。

因此,对于两个控件,您在更新后事件中拥有:

Call MyCalc

然后,您将拥有:

Sub MyCalc

    Me.net = me.Before – me.After

End sub

如果其中一个控件可以/将为空白或“空”,那么我建议:

  Me.Net = nz(me.Before,0) – nz(me.After,0)

更改时实际上仅对逐个键处理有用,因为在文本框中键入每个字符时会触发该事件–您真的不知道用户何时完成操作。在过去25年的台式机中,我能想到的每个开发平台中的标准事件都是更新之后。

您还注意到,此问题100%消除了对“ .text”的需要。因此,您可以按照上述示例使用控件名称。