在LostFocus事件中查找下一个控件?

时间:2015-10-23 09:10:05

标签: ms-access

简短形式:在MS Access VBA(2010)中,我想知道在LostFocus事件期间哪个控件将获得焦点。

长篇: 在表单中,我有一个子表单,其中包含水果,数字和注释的列表。在表单中,我在列表视图中显示该子表单,用于以前已知的一组水果:

Fruit    Count    Comment
Apples
Apples
Apples
Oranges
Bananas
Bananas

用户输入每个水果的计数:

Fruit    Count    Comment
Apples   4
Apples   3
Apples   2
Oranges  5
Bananas  2
Bananas  -1         ( = rotten)

现在我需要计算这样的平均值:

Fruit    Count    Comment
Apples   4
Apples   3
Apples   2
Apples   3        Average
Oranges  5
Bananas  2
Bananas  -1
Bananas  -1       Average

我已经有了一个可以做到这一点的Sub,但是在每次输入后运行它太慢了。它还使用户感到困惑,突然出现一些平均值出现在她的输入中。所以我想在用户完成输入计数后才运行它。

运行此平均值计算的IMO自然位置将是计数控件的LostFocus事件,但前提是焦点更改为其他计数控件以外的其他值。我怎么能这样做(screen.ActiveControl没有帮助,因为在LostFocus期间它还是旧的控件)?

1 个答案:

答案 0 :(得分:0)

如果您创建一个变量来存储您所在的最后一个控件。 LostFocus

在计数字段的LastUsedControl = Me.ActiveControl.Name事件中 OnEnter

使用您可以执行的其他字段的If LastUsedControl = "txtCount" then Call FindAverageCount End If 事件

public sub FindAverageCount()

然后创建一个方法,使用平均值OnEnter计算和更新您的记录,然后仅在您编辑计数字段时调用var mysql = require('mysql'); var $ = require('jquery'); var connection = mysql.createConnection({ host : 'somehost.com', user : 'admin', password : 'admin', database : 'food' }); connection.connect(function(err) { if (err) { document.write('error connecting: ' + err.stack + '<br>'); return; } document.write('Conectat cu ID ' + connection.threadId + '<br>'); }); connection.query('SELECT * FROM recipes', function(err, rows, fields) { if (err) throw err; rows.forEach(function (item) { $("body").append('<span style="color: blue; font-weight: bold;">Denumire:</span> ' + item.denumire + ' <span style="color: blue; font-weight: bold;">Ingrediente:</span> ' + item.ingrediente + '<br>'); }) }); connection.end(); 事件。