- ベストアンサー
ACCESS 合計の更新
Accessにて、メイン・サブ形式のフォームがあります。 サブフォームには、取引のデータを入力するように設定しています。 ●サブフォーム 日付 重量 ・・・ メインのフォームには、サブフォームの合計の重量を表示させています。 サブフォームにて、重量を入力したときに、合計を更新させたいのですが、 次のレコードに移るなどしないと更新されませんよね? そこで、次のマクロを試してみたのですがうまくいきませんでした。 マクロにて、コントロールの更新後に ・再クエリ ・最後のレコードに移動(サブフォームを指定) ・コントロールの移動 結果は、サブフォームが開いていませんというエラーが表示されます。 重量の間違いをなくすためにも、重量を入力または、更新したときに、 合計の重量も更新したいので、どなたかご教授願います。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Private Sub 重量_AfterUpdate() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 End Sub 合計欄は、サブフォームのフォームフッターにあり =Sum([重量]) というのが前提です。
その他の回答 (5)
- bonaron
- ベストアンサー率64% (482/745)
#1です。 >Me.Parent.重量.Requery >「定義または、オブジェクト定義のエラー」 #3の補足のとおりです。 親フォームの「合計の重量」のフィールド名は「重量」ですか? とは言うものの、 質問者さんはマクロをお使いのようですから、 #1は止めてマクロにしましょう。 コントロールの更新後に アクション:コマンドの実行 コマンド:レコードの保存 でどうでしょうか。
お礼
何度もありがとうございます。 すみません、コントロール名を間違えていました。 上記の方法でうまくいきました。ありがとうございます。
老婆心ながら、メインに合計欄を代入更新するとカーソルがサブフォームのトップに移動してユーザーが連続入力作業出来なくなる不具合が発生するケースもあるので、それを勘案して上手く処理した方がいいですね!
#2補足 重量合計欄はメインにあっても同じです。行を移動しないとデータベースに反映しないので、更新後に、レコードを強制保存するという仕掛けです。
- bonaron
- ベストアンサー率64% (482/745)
#1の補足です。 コントロール名は、親フォームの合計重量の テキストボックスの名称です。 念のため。
- bonaron
- ベストアンサー率64% (482/745)
コントロールの更新後に Me.Parent.コントロール名.Requery としてください。
補足
早速ありがとうございます。 重量の更新後でコードビルダにて上記のように記入しましたが、 Me.Parent.重量.Requery 「定義または、オブジェクト定義のエラー」 となります。 よろしくお願いいたします。
お礼
お返事おそくなりましてすみません。 うまくいきました!! ありがとうございます。