
現在、Accessにて家計簿を作っているのですが・・・。
始めにトップページとなるフォームを表示し、そこに今年の支出金額と入力フォームを開くボタンを表示してあります。
入力フォームを開いてもトップフォームは閉じず、後ろで表示されたままです。
入力フォームで使った金額などを入力して閉じると後ろに表示されたままのトップフォームにアクティブが戻るのですが・・・この方式だとトップフォームに表示してある今年の支出金額が、一度トップフォームを閉じて開きなおさないと最新の情報に更新されません。
入力フォームを開く際にトップフォームを閉じ、入力フォームを閉じる際にトップフォームを再度開くというやり方なら支出金額も最新の情報が表示されるのですが、どうしてもトップフォームを開いたままで入力フォームを開き、入力終わって閉じたらトップフォームの支出金額が自動で更新されるというやり方をしたいので、知識のある方がいましたらご指導お願いいたします。
つまるところ、フォームを閉じずにそのフォームにある、クエリを参照にしたテキストボックスの内容を最新の情報に更新する方法を教えてくださいと言うことですw
分かりにくくてすみません。
No.5ベストアンサー
- 回答日時:
Forms![トップフォーム]![コントロール名].Requery
でトップフォームをアクティブにしなくても行けるはずなのですが・・。
それではトップフォーム名を取得してからRequeryしてみてはどうですか
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Forms![トップフォーム]![コントロール名].Requeryの代わりに
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
DoCmd.SelectObject acForm, "トップフォーム名"
DoCmd.Requery "コントロール名"
お礼が遅くなってすみません。
アドバイスに従い試してみましたが、ボタンを押したら入力フォームじゃなくトップフォームが閉じてしまうようになりました。(汗
もうどうにもなりそうにないのでトップフォームに更新ボタンをつけてMeRequeryで手動更新することにしましたw
No.4
- 回答日時:
>コードで参照されている'トップフォーム'フォームが見つかりません。
」というエラーForms![トップフォーム]![コントロール名].Requery
のトップフォームとコントロール名はYOU-JIさんの作ったフォームの名前と今年の支出金額を表示するコントロール名(テキストボックスならその名前)に変更して記述してください。
あ、すみません(汗
『トップフォーム』、『コントロール名』はこちらで使っているトップフォームの名前、テキストボックスにそれぞれ直して記述しました。
それで出来なかったのでこちらで使ってるフォーム名をそのままエラーメッセージのところに使ったら解かりにくいと思って「トップフォーム」と変更して投稿したわけです。
No.3
- 回答日時:
トップフォームの「アクティブ時」のイベントプロシージャに
Private Sub Form_Activate()
テキスト1.Requery
End Sub
などと書く。更新したいテキストボックスが複数あれば
Private Sub Form_Activate()
テキスト1.Requery
テキスト2.Requery
テキスト4.Requery
End Sub
などと追加すれば良い。なお、
Private Sub Form_Activate()
Me.Requery
End Sub
では正しく更新しないので注意。
ボタンを押した所に更新のコードを入れると、そのボタンを押した時しか更新しないので、フォームの「アクティブ時」にコードを書くのが確実。
こうする事で「クエリの元になる、データが入ってるテーブルを直接開いて、手で数値を書き換えた」とかのイリーガルなケースでも、フォームがアクティブになれば必ず更新がかかる。
回答ありがとうございます。
トップフォームのアクティブ時だけでなく、フォーカス取得時や非アクティブ時、クリック時など色々なイベントのコードの場所に貼り付けて試してみましたが、どうにも更新できませんでした。
もしかすると私のやり方が悪いのかもしれません・・・(汗
No.2
- 回答日時:
入力フォームを閉じる際に入力したレコードを保存しトップフォームのクエリをRequeryして入力フォームを閉じるようにすれば出来ます。
Forms![トップフォーム]![コントロール名].Requery
の記述を追加すれば出来ます。
Private Sub Cmd1_Click()
・
・
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Forms![トップフォーム]![コントロール名].Requery
DoCmd.Close
・
・
End Sub
途中省略してありますがこんな感じでRequery出来ます。
VBEのRequeryのヘルプでも参照してみてください。
回答ありがとうございます。
アドバイスどおり入力フォームの閉じるイベントのところに
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Forms![トップフォーム]![コントロール名].Requery
の記述を追記しましたが、「マクロ式または Visual Basic コードで参照されている'トップフォーム'フォームが見つかりません。」というエラーメッセージが出てしまいました。
これからRequeryで検索かけてネットで調べてみます

No.1
- 回答日時:
データを追加した際にトップページのフォームに
requery
refresh
をかけると更新されるのではないかと思います。
ちなみに、データの追加は何かのボタンを押した際に行われるようになっていますか?
お礼が少し遅れてしまいました。
回答どもです。
データ入力フォームはテーブルを参照して作ってありますので、ボタンを押さなくても一項目入力するごとに自動的にテーブルに書き込まれていく方式っぽいです。
ホントは決定ボタンを押せばデータを書き込み、見たいな感じでやりたいのですが、やり方が解からないのでとりあえず後回し中ですw
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「フォームを作成できませんで...
-
アクセスで複数列にまたがる同...
-
Access2003 リンクテーブルを...
-
大至急!アクセスのフォームを...
-
ACCESSでオートメーションエラー
-
マイクロソフト アクセス2021の...
-
Access レポート印刷するときに...
-
アクセスで数値型のフィールド...
-
レコードを保存するコード ア...
-
データベースのINT型項目にNULL...
-
ACCESS フォームをそのまま印刷...
-
アクセスでテキストボックスの...
-
ACCESSのレポートで、指定した...
-
エクセルをACCESSのレポ...
-
Accessのフォームで、画面表示...
-
アクセス:フォーム入力で、最...
-
Accessでフィールド名を変数(...
-
このオブジェクトに値を代入す...
-
クエリで出来た表にチェックボ...
-
Accessでの小数点以下入力規制...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「フォームを作成できませんで...
-
YahooのIDがロックされてしまい...
-
MSワード 年齢を計算表示でき...
-
Excelのデータフォームの設定変更
-
大至急!アクセスのフォームを...
-
エクセルで各セルをダブルクリ...
-
デフォルトでチェックボックス...
-
ACCESSでオートメーションエラー
-
Accessで、フォームからフォー...
-
フォームの高さを数値で指定し...
-
フォームなどに半角カナで入力...
-
帳票フォームのなかにリストを...
-
アクセスで複数列にまたがる同...
-
Access2003 フォーム入力中に...
-
VBで子フォーム以外をマウス...
-
Accessのフォームで開く時のウ...
-
access vba 開いていないフォー...
-
Accessのフォームを改ページしたい
-
Accessのフォームメニュー絡み...
-
Accessフォームを開くときに決...
おすすめ情報