• ベストアンサー

Accessのフォーム更新方法

現在、Accessにて家計簿を作っているのですが・・・。 始めにトップページとなるフォームを表示し、そこに今年の支出金額と入力フォームを開くボタンを表示してあります。 入力フォームを開いてもトップフォームは閉じず、後ろで表示されたままです。 入力フォームで使った金額などを入力して閉じると後ろに表示されたままのトップフォームにアクティブが戻るのですが・・・この方式だとトップフォームに表示してある今年の支出金額が、一度トップフォームを閉じて開きなおさないと最新の情報に更新されません。 入力フォームを開く際にトップフォームを閉じ、入力フォームを閉じる際にトップフォームを再度開くというやり方なら支出金額も最新の情報が表示されるのですが、どうしてもトップフォームを開いたままで入力フォームを開き、入力終わって閉じたらトップフォームの支出金額が自動で更新されるというやり方をしたいので、知識のある方がいましたらご指導お願いいたします。 つまるところ、フォームを閉じずにそのフォームにある、クエリを参照にしたテキストボックスの内容を最新の情報に更新する方法を教えてくださいと言うことですw 分かりにくくてすみません。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

Forms![トップフォーム]![コントロール名].Requery でトップフォームをアクティブにしなくても行けるはずなのですが・・。 それではトップフォーム名を取得してからRequeryしてみてはどうですか DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms![トップフォーム]![コントロール名].Requeryの代わりに DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 DoCmd.SelectObject acForm, "トップフォーム名" DoCmd.Requery "コントロール名"

YOU-JI
質問者

お礼

お礼が遅くなってすみません。 アドバイスに従い試してみましたが、ボタンを押したら入力フォームじゃなくトップフォームが閉じてしまうようになりました。(汗 もうどうにもなりそうにないのでトップフォームに更新ボタンをつけてMeRequeryで手動更新することにしましたw

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

>コードで参照されている'トップフォーム'フォームが見つかりません。」というエラー Forms![トップフォーム]![コントロール名].Requery のトップフォームとコントロール名はYOU-JIさんの作ったフォームの名前と今年の支出金額を表示するコントロール名(テキストボックスならその名前)に変更して記述してください。

YOU-JI
質問者

お礼

あ、すみません(汗 『トップフォーム』、『コントロール名』はこちらで使っているトップフォームの名前、テキストボックスにそれぞれ直して記述しました。 それで出来なかったのでこちらで使ってるフォーム名をそのままエラーメッセージのところに使ったら解かりにくいと思って「トップフォーム」と変更して投稿したわけです。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答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 では正しく更新しないので注意。 ボタンを押した所に更新のコードを入れると、そのボタンを押した時しか更新しないので、フォームの「アクティブ時」にコードを書くのが確実。 こうする事で「クエリの元になる、データが入ってるテーブルを直接開いて、手で数値を書き換えた」とかのイリーガルなケースでも、フォームがアクティブになれば必ず更新がかかる。

YOU-JI
質問者

お礼

回答ありがとうございます。 トップフォームのアクティブ時だけでなく、フォーカス取得時や非アクティブ時、クリック時など色々なイベントのコードの場所に貼り付けて試してみましたが、どうにも更新できませんでした。 もしかすると私のやり方が悪いのかもしれません・・・(汗

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

入力フォームを閉じる際に入力したレコードを保存しトップフォームのクエリをRequeryして入力フォームを閉じるようにすれば出来ます。 Forms![トップフォーム]![コントロール名].Requery の記述を追加すれば出来ます。 Private Sub Cmd1_Click()    ・    ・ DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms![トップフォーム]![コントロール名].Requery DoCmd.Close    ・    ・ End Sub 途中省略してありますがこんな感じでRequery出来ます。 VBEのRequeryのヘルプでも参照してみてください。

YOU-JI
質問者

お礼

回答ありがとうございます。 アドバイスどおり入力フォームの閉じるイベントのところに DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms![トップフォーム]![コントロール名].Requery の記述を追記しましたが、「マクロ式または Visual Basic コードで参照されている'トップフォーム'フォームが見つかりません。」というエラーメッセージが出てしまいました。 これからRequeryで検索かけてネットで調べてみます

noname#60992
noname#60992
回答No.1

データを追加した際にトップページのフォームに requery refresh をかけると更新されるのではないかと思います。 ちなみに、データの追加は何かのボタンを押した際に行われるようになっていますか?

YOU-JI
質問者

お礼

お礼が少し遅れてしまいました。 回答どもです。 データ入力フォームはテーブルを参照して作ってありますので、ボタンを押さなくても一項目入力するごとに自動的にテーブルに書き込まれていく方式っぽいです。 ホントは決定ボタンを押せばデータを書き込み、見たいな感じでやりたいのですが、やり方が解からないのでとりあえず後回し中ですw

関連するQ&A

  • Access 別フォームへの再クエリ(更新)がしたい。

    宜しくお願いします。 仕様環境:WinVISTA Access2007 別フォームから別フォームへの再クエリの仕方を教えてください。 画像を貼らせて頂きます。 まず、後ろのメインフォームから新規作成ボタンを押して、 別のフォーム(作成画面)を開きます。 そこに新しいデータを入力して、閉じますと、 そのままではメインフォームには反映しません。 (テーブルには反映していますが) 別フォーム(新規の作成画面)に再クエリをかけても そのフォームが更新させるだけで、メインフォームに変化はありません。 ちなみにメインフォームに作った更新ボタン(中身は再クエリ)を押すと反映されます。 どうしたら別フォームから後ろのメインフォームを再クエリ(更新)できるのでしょうか? やりたいことは別フォームのOKボタン(画像参照)を押すと 別フォームが閉じると同時にメインフォームが再クエリ(更新)されるとベストです。 (今のところOKボタンの中身は”閉じる”のマクロだけです) 構造は簡単で恐縮ですが、 テーブル:Tメイン フォーム:メインフォーム      作成画面フォームetc.. です。 クエリはメインフォーム自体にクエリビルダを使っていますが、 特別な施しなどはしていません、うまく動作しないところがあって、 いろいろ調べていてそうすると改善すると書いてあったので。。 ちなみにテーブルには「日付」の後順で並び替えをかけています。 当方、VBAに弱いのでマクロで操作できるのでしたらお願いします。 マクロで出来ないものでしたらVBAを教えて頂ければ、 イベントプロシージャに書き込みます。 大変恐縮ですがお知恵をお貸しください、宜しくお願いします。

  • アクセス:フォームを閉じずにデータ更新するには

    みなさん、おはようございます。 データベースアクセスについて質問させていただきます。参考書やこちらの質問等もしらべましたが回答が得られなかったので質問致します。 現在、アクセスで病院のベッドを管理するアプリを開発中です。 ひとつのフォームに全病棟のベッドを表示するため500以上のコントロールを配置しておりますが、 すべて非連結にして、フォームを開くときのイベントプロシージャーにクエリを開いてすべてコントロールにテーブルのデータをはめていくように設計しています。 で、問題はこのフォームを開いたまま最新のデータに更新させたいのですが、再クエリーではうまくいきませんでした。 なぜうまくいかないのか理由はわかっていません(プログラマーの方ならうまくいかなくて当然とおっしゃるかもしれませんが) で、仕方なく、一定間隔の時間ごとにフォームを閉じて開くという方法を取っています。 この方法では遅いマシンだと再表示に時間がかかるのできっとほかにスマートなよい方法があるとおもっているのですがプログラミングのスキルが乏しいため詰まっております。 お知恵をお借りできれば幸いです。

  • アクセス2000のフォームについて

    アクセスでまたつまずいてしまいました。ちょっと教えてください。 複数のテーブルから選択クエリを作り、それを基にオートフォームでフォームを作ったのですが、フォームでデータの入力が出来ません。クエリでもデータの入力が出来ません。 「このレコードセットは更新できません」と下のほうに出ます。 フォームのプロパティのデータの更新の許可と、データ入力用のところは“はい”になっています。 私では原因がわかりません。わかりにくい質問でしょうが、どなたかご指導お願いします。

  • Accessのフォーム

    Access2003を使用しています。 テーブルまたはクエリを元に作成したフォームにはテーブル・クエリに入力されているデータが表示されますよね? それらのデータをフォームから変更出来ないようにする方法はありますか? データ自体を非表示(入力用フォーム)にするのではなく、既存のデータは表示されるけど変更は出来ないという状態にしたいです。 ちなみに新規入力は行えるようにしておきたいです。 よろしくお願いします。

  • access クエリ 検索フォームの作り方

    よろしくお願いします。 やりたいこと: フォーム上で、テキストボックスに入力した値を検索して表示したい。 本やウェブで調べて、なんとか一度はやっと出来たのですが、 誤って何かを変更してしまい、使えなくなってしまいました。 今となってはどの資料を見て作れたのかわからなくなりました。 やったこと: クエリ :クエリA   条件にforms!フォームA!txt0を入力 フォーム:フォームA ヘッダーに非連結のテキストボックスtxt0を作成 txt0の更新後処理:docmd.requeryを入力 しかし、txt0に入力しても検索されません。 フォームのプロパティのレコードソース欄にクエリAを選択するようですが、 選択するクエリ名が表示されないので、クエリ名を入力しましたがダメでした。 どこか間違っているのでしょうか。VBAまでは勉強できないので上記範囲内でお願いします!

  • アクセスのフォームについて

    アクセスのフォームについて2件質問させてください。 その1 クエリーからあるフォームを作っていますが、元になるクエリー(テーブルにも)には項目がなく、ただそのフォームに表示されればいいというデータをそのフォーム上で入力したいのです。 そこで非連結でテキストボックスを作ったのですが、1ヶ所に入力するとどのページにも同じデータが表示されています。 それぞれのページに違うデータをフォームから直接入力するにはどのようにしたらいいでしょうか? その2 大変むずかしい依頼がきて悩んでいます。 フォームでラベルや図形で1ヶ月を3等分した簡単な図を作り、 フォーム上のある日付をその図の中に●や▲で表示したいのです。 イメージは下のような感じですが、このようなことは可能でしょうか?      2002/3       2002/4           ┃  │   │  ┃  │ ● │  ┃   以上2件一緒にして申し訳ございませんが、ご存知の方がいらっしゃいましたらよろしくお願いします。

  • アクセス2000のフォームなんですが。

    本を読みながらアクセス2000で売上管理の入力用フォームを作っていますが解らなくなってしまったので、教えてください。売上管理のクエリを引っぱってきてフォームを作ったところ、わたしのクエリは3つのテーブルをリレーして作ったので金額の演算フィールドに式1[○○テーブル]![単価]*[金額]を入れてます。そうすると、フォームで引っぱってきた金額欄が「式1」となっています。テキストボックスやラベルをどのように使えば直せますか?あとラベルでやろうとするとヒラガナでででくるのですがどうしたら漢字変換に変えられますか?もう、とってもパニクってます。助けてください。あと、レポートの用紙サイズの設定変更もおしえてください。お願いします。

  • アクセスでフォームから入力した後に残らないくなりました。?

    アクセスでフォーム入力した後今までは最後のレコードに残っていたのですが、突然消えてしまうようになりました。一旦登録はされるのですが、そのフォームを閉じると表示されません。この現象はフォームだけで、テーブルやクエリにはきちんと表示されるのです。どこか変なところを触ったのでしょうか?どなたか教えてください。よろしくおねがいします。

  • アクセス2002:フォームからレポートへ

    いつも助けてもらってます。 アクセスで綺麗にフォームを作りました。 それをそのまま単表形式でレポートにしたいのですができますか? クエリからやらなければ駄目なのでしょうか? 詳細を言うと社員一名の情報を一枚の紙に出したいです。フォームではパラメータで社員NOを入力するとその社員の情報が現れるようになっています。 どうぞよろしくお願いします<m(__)m>

  • Access2000で、あるフォームを開いた後でないと見れないフォームがあります。

    Access2000を用いたフォームの整備を行っています。 Aフォーム(ID番号や会社名などの必須項目を入力する) Bフォーム(詳細を見るためのフォーム) Cフォーム(支払金額を入力するフォーム) BとCでは、Aで入力したID番号や会社名などが自動的に表示されます。 しかし、Aで入力を行った後、先にBを開くと、 全てのテキストボックスがからっぽのまま表示されてしまいます。 先にCを開いてからBを開くと、ちゃんと表示されます。 この場合、Cは開きっぱなしで閉じなくても大丈夫です。 Cフォームで何かを入力するわけでも無いのに、 どうしてCを開いた後でなければ表示されないのか判りません。 この場合、どういった可能性が考えられるでしょうか? 初心者ですので、見当違いの方向ばかり考えているかもしれません。 「これだけの説明じゃ判らないから、もっとここら辺を詳しく」 という指摘などをして戴けると本当に幸いです。 宜しくお願い致します。

専門家に質問してみよう