hatena
hatena
2020/10/15 (木) 09:41:35
おそらく発生するタイミングの問題かなという気がします。
サブフォームのレコードが更新される。
更新後イベントが発生する→VBAで親フォームに最新購入日を代入。
その時点では =Max([購入日]) の計算が終わっていない。
メインフォームに転記するイベントを別のものにしてみる。
例えば、サブフォームコントロールのフォーカス喪失後で転記する。
これだとサブフォームで更新した後、メインフォームへ移動したときに転記されることになります。
他には、サブフォームのタイマー時イベントを利用するというのも考えられます。
タイマー間隔を0に設定しておいて、タイマー時のイベントプロシージャに転記のコードを記述する。
Private Sub Form_Timer()
Me.TimerInterval = 0 'タイマー停止
If Me.Parent!最新購入日 = Me.最新購入日 Then
Else
Me.Parent!最新購入日 = Me.最新購入日
End If
End Sub
更新後処理のイベントプロシージャは下記のように記述。
Private Sub Form_AfterUpdate()
Me.TimerInterval = 100 '100ミリ秒後にタイマー時イベント発火
End Sub
いちおう100ミリ秒後に転記するようにしてますが、うまくいかないようなら秒数を増やしてください。
通報 ...
ありがとうございます。3000まであげたのですが、やはり動作がうまくいったりいかなかったりします。
もっとあげるべきなのでしょうか。
確かに更新する瞬間、「最新購入日」のテキストボックス内容(2020/10/14)が両方とも一瞬消えるのが気になっていました。
現在でも消えていますが、そのことと関係しますか?