» Accessのブログ記事

フォームのコントロールソースに、

=DSum("[小計]","Q_外注費明細","[Q_外注費明細]![見積親2ID]=[見積ID]")

としてデータがないNULLの時、0(ゼロ)と表示させるには、

=Nz(DSum("[小計]","Q_外注費明細","[Q_外注費明細]![見積親2ID]=[見積ID]"),0)

とする。


フォームA(単票)にサブフォームB(データシート)をつけている。
サブフォームBにデーターを入力し、その数値の合計の計算結果をフォームAのテキストボックスに表示する。

この場合、その結果を反映させるためには、フォームAを再クエリする必要がある。

キーボードからなら、[Ctrl]+[F9]であるが、これを自動で行うために、サブフォームBのプロパティー「挿入後処理」「更新後処理」「削除確認」で、次の様なイベントプロシージャを呼び出す。

 Me.Parent.Requery

これで更新は当然うまくいった。

しかし、その後フォーカス(カーソル)が最初のレコードのトップに移動してしまう。
フォームAは単票式なので、5ページ目とか10ページ目かを更新しても必ず1ページ目の最初のテキストボックス(フィールド)に移動してしまう。

なぜかはわからないが、これでは使い勝手が悪すぎるので対策をする必要がある。
で、

Private Sub Form_AfterInsert()
    Dim RecNum As Integer
    RecNum = Me.Parent.CurrentRecord
    
    Me.Parent.Requery
    
    Me.Parent.SetFocus
    DoCmd.GoToRecord , , acGoTo, RecNum
    Me.Parent.次のテキストボックス.SetFocus
End Sub

これでうまく行った。

「更新後処理」「削除確認」も同様でOK。(^_^)v


KUMAOの押入TOP

  • 累積 686194
  • 本日 26
  • 昨日 37
  • 累積PV 2159731
  • 本日のPV 35
  • 昨日のPV 53
  • 現在の閲覧 1

カレンダー

2020年7月
« 8月    
 12345
6789101112
13141516171819
20212223242526
2728293031  

カテゴリー

最近のコメント

アーカイブ

年間アーカイブ

Twitter