如何解决Access中的迟按键问题
How to fix the late key press problem in access
我有一个文本框,目的是在访问中有击键时更新小计值。
现在的问题是 OnKey 按下事件函数会在额外按下 1 次按键后更新小计值。文本框名为 QuantityOrdSub,它是获取数量的框,此文本框将其与单价相乘(DLOOKUP 函数有效)。输出必须立即进入 SubTotalValue 文本框,并且此文本框有一个控件源 = 小计
Private Sub QuantityOrdSub_KeyPress(KeyAscii As Integer)
Me.SubTotalValue.Value = (DLookup("UnitPrice", "Stock", "StockID=" & Int(Me.StockSearchID.Value))) *
(Int(Me.QuantityOrdSub.Value))
End Sub
重申一下,我正在尝试在击键时立即更新文本框。
两个问题:
1) 要使用的正确事件是 On Change
,即 Private Sub QuantityOrdSub_Change
,而不是 KeyPress
。
2) .Value
文本框只有在您离开控件后才会更新。要在用户键入时获取输入的文本,您必须使用 .Text
,即 Me.QuantityOrdSub.Text
.
如果要即时计算,我不会监控KeyPress()
事件。相反,当它的值发生变化时,我会得到控制报告,因此我会监视 Change()
事件。
Private Sub QuantityOrdSub_Change()
With QuantityOrdSub
If Len(.Text) > 0 Then
SubTotalValue.Value = DLookup("UnitPrice", "Stock", "StockID=" & StockSearchID.Value) * Int(.Text)
End If
End With
End Sub
我有一个文本框,目的是在访问中有击键时更新小计值。 现在的问题是 OnKey 按下事件函数会在额外按下 1 次按键后更新小计值。文本框名为 QuantityOrdSub,它是获取数量的框,此文本框将其与单价相乘(DLOOKUP 函数有效)。输出必须立即进入 SubTotalValue 文本框,并且此文本框有一个控件源 = 小计
Private Sub QuantityOrdSub_KeyPress(KeyAscii As Integer)
Me.SubTotalValue.Value = (DLookup("UnitPrice", "Stock", "StockID=" & Int(Me.StockSearchID.Value))) *
(Int(Me.QuantityOrdSub.Value))
End Sub
重申一下,我正在尝试在击键时立即更新文本框。
两个问题:
1) 要使用的正确事件是 On Change
,即 Private Sub QuantityOrdSub_Change
,而不是 KeyPress
。
2) .Value
文本框只有在您离开控件后才会更新。要在用户键入时获取输入的文本,您必须使用 .Text
,即 Me.QuantityOrdSub.Text
.
如果要即时计算,我不会监控KeyPress()
事件。相反,当它的值发生变化时,我会得到控制报告,因此我会监视 Change()
事件。
Private Sub QuantityOrdSub_Change()
With QuantityOrdSub
If Len(.Text) > 0 Then
SubTotalValue.Value = DLookup("UnitPrice", "Stock", "StockID=" & StockSearchID.Value) * Int(.Text)
End If
End With
End Sub