• ベストアンサー

ACCESS 合計の更新

Accessにて、メイン・サブ形式のフォームがあります。 サブフォームには、取引のデータを入力するように設定しています。 ●サブフォーム  日付 重量 ・・・  メインのフォームには、サブフォームの合計の重量を表示させています。 サブフォームにて、重量を入力したときに、合計を更新させたいのですが、 次のレコードに移るなどしないと更新されませんよね? そこで、次のマクロを試してみたのですがうまくいきませんでした。 マクロにて、コントロールの更新後に  ・再クエリ  ・最後のレコードに移動(サブフォームを指定)  ・コントロールの移動 結果は、サブフォームが開いていませんというエラーが表示されます。 重量の間違いをなくすためにも、重量を入力または、更新したときに、 合計の重量も更新したいので、どなたかご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.2

Private Sub 重量_AfterUpdate() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 End Sub 合計欄は、サブフォームのフォームフッターにあり =Sum([重量]) というのが前提です。

yuuchan
質問者

お礼

お返事おそくなりましてすみません。 うまくいきました!! ありがとうございます。

その他の回答 (5)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.6

#1です。 >Me.Parent.重量.Requery >「定義または、オブジェクト定義のエラー」 #3の補足のとおりです。 親フォームの「合計の重量」のフィールド名は「重量」ですか? とは言うものの、 質問者さんはマクロをお使いのようですから、 #1は止めてマクロにしましょう。 コントロールの更新後に  アクション:コマンドの実行  コマンド:レコードの保存 でどうでしょうか。

yuuchan
質問者

お礼

何度もありがとうございます。 すみません、コントロール名を間違えていました。 上記の方法でうまくいきました。ありがとうございます。

noname#22222
noname#22222
回答No.5

老婆心ながら、メインに合計欄を代入更新するとカーソルがサブフォームのトップに移動してユーザーが連続入力作業出来なくなる不具合が発生するケースもあるので、それを勘案して上手く処理した方がいいですね!

noname#22222
noname#22222
回答No.4

#2補足 重量合計欄はメインにあっても同じです。行を移動しないとデータベースに反映しないので、更新後に、レコードを強制保存するという仕掛けです。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

#1の補足です。 コントロール名は、親フォームの合計重量の テキストボックスの名称です。 念のため。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

コントロールの更新後に Me.Parent.コントロール名.Requery としてください。

yuuchan
質問者

補足

早速ありがとうございます。 重量の更新後でコードビルダにて上記のように記入しましたが、 Me.Parent.重量.Requery 「定義または、オブジェクト定義のエラー」 となります。 よろしくお願いいたします。