宜しくお願いします。
仕様環境:WinVISTA Access2007
別フォームから別フォームへの再クエリの仕方を教えてください。
画像を貼らせて頂きます。
まず、後ろのメインフォームから新規作成ボタンを押して、
別のフォーム(作成画面)を開きます。
そこに新しいデータを入力して、閉じますと、
そのままではメインフォームには反映しません。
(テーブルには反映していますが)
別フォーム(新規の作成画面)に再クエリをかけても
そのフォームが更新させるだけで、メインフォームに変化はありません。
ちなみにメインフォームに作った更新ボタン(中身は再クエリ)を押すと反映されます。
どうしたら別フォームから後ろのメインフォームを再クエリ(更新)できるのでしょうか?
やりたいことは別フォームのOKボタン(画像参照)を押すと
別フォームが閉じると同時にメインフォームが再クエリ(更新)されるとベストです。
(今のところOKボタンの中身は”閉じる”のマクロだけです)
構造は簡単で恐縮ですが、
テーブル:Tメイン
フォーム:メインフォーム
作成画面フォームetc..
です。
クエリはメインフォーム自体にクエリビルダを使っていますが、
特別な施しなどはしていません、うまく動作しないところがあって、
いろいろ調べていてそうすると改善すると書いてあったので。。
ちなみにテーブルには「日付」の後順で並び替えをかけています。
当方、VBAに弱いのでマクロで操作できるのでしたらお願いします。
マクロで出来ないものでしたらVBAを教えて頂ければ、
イベントプロシージャに書き込みます。
大変恐縮ですがお知恵をお貸しください、宜しくお願いします。
No.3ベストアンサー
- 回答日時:
連投すみません。
・・というか、私も「削除されました」というのを見て一旦中止してました。
(中止した場合も含めて、回答はメモ帳で保存しているので無事でしたが)
> どうしたら別フォームから後ろのメインフォームを再クエリ(更新)できるのでしょうか?
マクロの場合は、「オブジェクトの選択」アクションで対象フォームを選択した後、
「再クエリ」アクションを行えばOkです。
なお、「作成画面」フォームも連結フォーム(レコードソースが指定されたフォーム)と
いう前提で作成しました。
【1行目】
アクション: 閉じる
オブジェクトの種類: フォーム
オブジェクト名: 作成画面
オブジェクトの保存: 確認
※今回の内容・順序では、オブジェクトの種類と名前は空白でも可。
(指定なしの場合、現在のフォームが閉じられるので)
【2行目】
アクション: オブジェクトの選択
オブジェクトの種類: フォーム
オブジェクト名: メインフォーム
データベース ウィンドウ内: いいえ
【3行目】
アクション: 再クエリ
コントロール名: (空白のままにします)
<解説>
メインフォームを再クエリする前に、作成画面側のデータを保存してやる必要が
あります。
ここでは、「閉じる」アクションによって、実質的なレコード保存を行っています。
順序を逆(オブジェクトの選択→再クエリ→閉じる)では、メインフォームには
反映されないのでご注意下さい。
この回答への補足
回答ありがとうございます。
(何度か削除してしまいごめんなさい、書き方に納得がいかなかったもので。。)
できました!
自分なりの理解(解釈)ですが、
1行目で作成画面を閉じて、2行目でメインフォームの再クエリの
準備をするわけですね
オブジェクト:
データや操作の集まり。つまりモジュールより大きな枠組みみたいな感じですか、
端的にいうとテーブルやクエリ、フォームといった。
(この場合は再クエリしたいフォーム、つまり、メインフォーム)
そして3行目で、再クエリと。
ありがとうございます!
そしてこの回は何やら、VBAに慣れるのに最適な問いな
気がしますので、もう少し続けます。
何かありましたら宜しくお願いします。
(今日はもう休みます。)
No.5
- 回答日時:
No.3です。
> 1行目で作成画面を閉じて、2行目でメインフォームの再クエリの
> 準備をするわけですね
(中略)
> そして3行目で、再クエリと。
おおすじで、それでOKなのですが、No.3の末尾に書いた「<解説>」部分の読み
込みが不足されているようです。
No.2の方のVBAと、No.3のマクロとでは、「閉じる/Close」と「再クエリ/Requery」
の順序が逆になっています。
そのため、レコードが保存されていない状態でOkボタンを押すと、No.1・2の補足
欄に書かれたように、「Requeryをしても反映されない」という結果になります。
(ちなみに、作成画面のOkボタンを押す直前の状態でテーブルを見てもらえば、
そこではまだテーブルにも反映されていないことを確認できます)
※作成画面に保存ボタンを設置して押すか、可能なら別のレコードに移動した
場合は、「Requery→Close」の順でも反映されます。
「1行目で閉じることによって、再クエリ実行時にはレコードが保存済みになる」、
このことが重要です。
ですので、VBAの場合でも、マクロと同様に、先にCloseを行ってからRequeryと
してやれば、「作成画面」で登録しようとしたレコードがメインフォームに反映される
ようになります。
Private Sub Ok_Click()
DoCmd.Close acForm, "作成画面"
Forms!メインフォーム.Requery
End Sub
また、別のやり方として、閉じる/Closeによる自動保存に頼る代わりに、明示的に
レコードを保存する、というのもあります。
これであれば、RequeryをCloseの前においても、メインフォームに新規レコードを
反映させることができます。
こちらの場合は、Requeryの前に「DoCmd.RunCommand acCmdSaveRecord」
を追加します。
Private Sub Ok_Click()
DoCmd.RunCommand acCmdSaveRecord
Forms!メインフォーム.Requery
DoCmd.Close acForm, "作成画面"
End Sub
> 「acForm」というのがいくら調べてもわかりません
マクロで「閉じる」アクションを選択してみると、画面左下に、「オブジェクトの種類」
という欄があり、そこのリストに「テーブル」「フォーム」などが並んでいると思います。
「acForm」というのは、そこの「フォーム」と同じ意味です。
実際には、「DoCmd.Close 0」ならテーブルを、「DoCmd.Close 2」ならフォームを
それぞれ閉じる、という意味になるのですが、ただの数値では非常に覚えにくいし
後から見直してもわかりにくい、ということで、VBAの中で「0」や「2」の代わりに
使える定数として、「acTable」や「acForm」などが予め組み込まれています。
(MsgBoxで表示ボタンの種類を指定で使用する「vbOkOnly」(=0・Okボタンのみ)や、
MsgBoxで選んだボタンを返す「vbCancel」(=2・キャンセルボタンを選択)等の
組み込み定数などもあります:
頭が「ac」のものはAccessで、「vb」のものは(Excel等も含めた)VBAで、
それぞれ定義されているもの)
・・・この辺りの定数は、全てを覚えるとなると大変ですが、VBA内にそれを補助する
機能(→添付画像:「Close」の後に半角スペースを入力すると表示)もありますし、
相当するマクロアクションをVBAに変換してやるという手もありますので、あまり気に
しない方がいいと思います(汗)
回答ありがとうございます。
読み込み不足についてご指摘いただきありがとうございました。
なにぶん、一人で本を読んだり、ネットで調べたりしてやってるので、
そういう指摘はありがたいです。(怖いのは嫌ですが・笑)
気付かせていただくことが多々あり勉強になります。
今回で言えば「順序」ですね。
「閉じる(自動保存として)」→「再クエリ」
これはマクロであってもVBAであっても同じという風に考えたら、
今まで「仕掛け」関係はマクロで作っていたのですが、
あらためて持っているVBAの本(といってもマクロと込みですが)を
見直すともっと気楽に読めるようになり、頭に入り易くなりました。
簡単な処理なら今でもVBAで作れそう気がしてきました。
また前に作った簡単なデータベースでも保存時の
不具合があって、謎になっていたのですが、少し解明されてきました。
もう一捻りすればそちらも改善に至るでしょう。
丁寧な解説と回答ありがとうございました!
No.2
- 回答日時:
別フォームのOKボタンのイベントプロシージャに(マクロをやめて)
Forms!メインフォーム.Requery
DoCmd.Close acForm, "別フォーム名"
と記載してみてください
この回答への補足
回答ありがとうございます。
しかし残念、できませんでした・・。
ただ、これを気にマクロを深めるのとともにVBAに慣れるのに
挑戦したいと思います、もし宜しければお付き合いください。
状況はといいますと、
まず、メインフォームの標題は「メインフォーム」という名前で
別フォームの標題が「作成画面」という名前で
OKボタンの標題・名前ともに「OK」です。
クリック時にイベントプロシージャに選択して
VBエディターを開き、コード作成画面の
一番上の太文字には「OK」と「Click」とあります。
そしてその下に、
---------------------
Private Sub OK_Click()
Forms!メインフォーム.Requery
DoCmd.Close acForm, "作成画面"
End Sub
---------------------
と入力しました。
が、テーブルには反映しましたが、
フォームには反映しませんでした。
ちなみにメインフォームには再クエリマクロで作った
「更新」ボタンがありますので、それを押すと
作成画面で作ったデータが反映されました。
気になるところと言えば、
メインフォームのレコードソースが、
SELECT Tメイン.ID, Tメイン.顧客番号, Tメイン.名前, Tメイン.住所, Tメイン.日付 FROM Tメイン;
となっているところです。
何か関係があるでしょうか?
何かございましたら宜しくお願いします。
(今日はもう休みます。)
No.1
- 回答日時:
回答入れようかとしたら消えてたのであせりました。
メインフォームがアクティブになった時に、再クエリしてみてはいかがでしょうか。
(まずは、この状態での動作を確認してみてください)
※メインフォームのアクティブ時イベントで、再クエリします。
※メインと作成画面フォームetcを並列で表示していて、
変更の都度更新が必要ということになりますか。
であれば、VBAが簡単かと。。。
この回答への補足
回答ありがとうございます。
(何度か削除してしまいごめんなさい、書き方に納得がいかなかったもので。。)
この回は何やらVBAに慣れるのに最適だと思いますので、
何かご意見がございましたらお付き合いください。
詳細は、kmetuさんのところに書かせて頂きました。
まず、メインフォームに再クエリで作った「更新」ボタンを設置してまして、
これを押すと作成画面で作ったデータが反映されます。
メインフォームのみの状態→これがアクティブな状態ということで
宜しいでしょうか?
そしてコードはクリック時のイベントプロシージャで
---------------------
Private Sub OK_Click()
Forms!メインフォーム.Requery
DoCmd.Close acForm, "作成画面"
End Sub
---------------------
と入力しました。
しかし、ダメでした・・(テーブルには反映したもののフォームには反映されず)。
また「DoCmd.Close」は「閉じる・アクション」ということで理解しましたが
(DoCmd→何かアクションを起こす時に頭につけて使うもの。)
「acForm」というのがいくら調べてもわかりません、
もし宜しければ教えてください、お願いいたします。
(今日はもう休みます)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Access(アクセス) マイクロソフト アクセス2021のフォームビュー作成でレイアウトを帳票形式から単票形式にあとから変更 1 2023/03/03 10:56
- その他(データベース) accessでのフォームの連携について 2 2022/06/14 00:45
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
-
4
アクセス フォームをリクエリしたい
Access(アクセス)
-
5
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
6
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
7
テーブル1にマクロで再クエリはできないのか?
Access(アクセス)
-
8
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
9
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
10
Accessでのサブフォーム内の再クエリについて
Access(アクセス)
-
11
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
12
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
-
13
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
14
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
15
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
16
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
17
どこにもフォーカスを当てたくない
Access(アクセス)
-
18
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
19
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
20
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのフォーム上にレコード...
-
アクセスのフォームのビューが...
-
Access 別フォームへの再クエ...
-
ACCESSのフォームからデータの...
-
選択したチェックボックスのみ...
-
Access2002 フォームを閉じるた...
-
アクセスでテーブルの変更内容...
-
テキストボックス(アクセス)内...
-
アクセス 0以外をカウントす...
-
「メソッドまたはデータメンバ...
-
Access フォーム上でコンボボッ...
-
accessの自動更新処理をできな...
-
アクセスVBA TOP値を変数
-
ACCESSで入力フォームをHTMLフ...
-
アクセスでの項目追加について...
-
ACCESSの表形式で、レコードを...
-
オートシェイプのような作図入...
-
access 非連結のサブフォームの...
-
テキストボックスの値をテーブ...
-
Accessのフォームに表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのフォームのビューが...
-
ACCESSのフォームからデータの...
-
Accessのフォーム上にレコード...
-
選択したチェックボックスのみ...
-
accessの自動更新処理をできな...
-
ACCESSで入力フォームをHTMLフ...
-
アクセスでの項目追加について...
-
Access 別フォームへの再クエ...
-
アクセスでテーブルの変更内容...
-
Accessのフォームで作業領域を...
-
「メソッドまたはデータメンバ...
-
Access2002 フォームを閉じるた...
-
アクセス 0以外をカウントす...
-
Access フォーム上でコンボボッ...
-
Accessフォームのテキストボッ...
-
帳票フォームに全レコードを表...
-
テキストボックス(アクセス)内...
-
入力途中の入力した値をすべて...
-
Accessのフォームに表示...
-
ACCESSでのテキストボックスの...
おすすめ情報