Microsoft Access 掲示板

VBAで値を反映させたフィールドが更新されない / 11

16 コメント
views
4 フォロー
11

おそらく発生するタイミングの問題かなという気がします。

サブフォームのレコードが更新される。
更新後イベントが発生する→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ミリ秒後に転記するようにしてますが、うまくいかないようなら秒数を増やしてください。

通報 ...
  • 12
    どんぐり 2020/10/15 (木) 10:47:53 0029a@1c915 >> 11

    ありがとうございます。3000まであげたのですが、やはり動作がうまくいったりいかなかったりします。
    もっとあげるべきなのでしょうか。

    確かに更新する瞬間、「最新購入日」のテキストボックス内容(2020/10/14)が両方とも一瞬消えるのが気になっていました。
    現在でも消えていますが、そのことと関係しますか?