ms-access - 从主窗体,运行 VBA 以验证子窗体中的总数

标签 ms-access vba ms-access-2002

我在 MS Access 2002 中有一个表单,在命令按钮后面有以下代码片段。

'Requery subform to make sure total is calculated
Me.fsubUpdateShipments.Requery
DoEvents

'Confirm quantities have been entered
If Form_fsubUpdateShipments.txtTotalShipmentQty.Value <= 0 Then
    MsgBox "Cannot create shipment, no quantities have been entered", vbCritical
    Exit Sub
End If

几个月来,这一直工作正常,但今天一位同事来找我并解释说,即使他们输入了数量,错误消息仍会显示。

经过一番挖掘,我确定 .Value <= 0在有问题的文本框完成其值计算之前,正在评估表达式:=Sum([QtyToShip]) .这似乎只发生在子表单具有非平凡数量的记录(大约 10 个或更多)并且显然是一个严重问题时。

在包含 If 的行上添加断点语句允许代码正确运行,但我显然不能永久使用这种方法。

有什么方法可以强制代码暂停,直到子窗体控件完成重新计算它们的值?

最佳答案

我会完全跳过使用用户界面并查看表格。如果这是在主窗体命令按钮上运行,则子窗体将失去焦点并保存其值。不需要重新查询。只需在 DSum 的标准(第三个参数)中重新创建父子关系:

If DSum("QtyToShip", "ShipmentDetails", "ShipmentID = " & Me!ShipmentID) <= 0 Then
    MsgBox "Cannot create shipment, no quantities have been entered", vbCritical
    Exit Sub
End If

关于ms-access - 从主窗体,运行 VBA 以验证子窗体中的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26280815/

相关文章:

ms-access - 如何在 Microsoft Access 表单中创建带有复选框的列表框?

database - 拆分数据库不会带来表格(只有表格)

c# - 自动将思维导图转换为另一个应用程序(在 MS Project 中)

vba - Excel VBA - 从外部文件查找和替换

string - VBA:可以使用字符串调用工作表吗?

sql - 编辑具有左连接表的查询

sql-server - 设置链接到 Access 前端的 SQL Server View 的主键

excel - 如何使用 VBA 使用 Microsoft XMLHTTP 获取文件扩展名

sql-server - MS SQL 2008/Access 2002 VBA - 检查数据库中的当前记录,如果不存在则输入它