4

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、コードを正しく実行できますが、明らかにこのメソッドを永続的に使用することはできません。

サブフォーム コントロールが値の再計算を完了するまでコードを強制的に一時停止する方法はありますか?

4

2 に答える 2

4

ユーザー インターフェイスの使用を完全にスキップして、テーブルを確認します。これがメイン フォームのコマンド ボタンで実行される場合、サブフォームはフォーカスを失い、その値を保存します。再クエリは不要です。DSum の基準 (3 番目のパラメーター) で親子関係を再作成するだけです。

If DSum("QtyToShip", "ShipmentDetails", "ShipmentID = " & Me!ShipmentID) <= 0 Then
    MsgBox "Cannot create shipment, no quantities have been entered", vbCritical
    Exit Sub
End If
于 2014-10-13T14:56:22.157 に答える