• ベストアンサー

ACCESSのサブフォームについて

ACCESSにおいて、サブフォームにデータを表示させた状態で、あるレコードをダブルクリックで選択させ、 そのデータ(対象レコード)をメインフォームに戻って使用させるにはどのようにしたらよろしいのでしょうか? サブフォームの該当箇所に、ダブルクリック時イベントを貼り付けて、 制御をメインフォームへ移すのでしょうか。 よろしくお願いします。

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

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

 前の回答のVB手直しで出来ます。 Private Sub コード_DblClick(Cancel As Integer) DoCmd.OpenForm "Form-A", wherecondition:="[コード]='" & Me![コード] & "'" DoCmd.Close acForm, "Form-B" ’←この行をカット End Sub これだけで Form-A Form-B をクリックだけで両フォームを行ったり来たり出来て、Form-Bのコードフィールドクリックで、Form-Aが直ちに変わります。(私は氏名フィールドクリックでも使用できるようにしています。)  どちらのフォームも表示したまま作業が出来、また変更を加えた内容も保存されます。

SHINYA-W
質問者

お礼

再度、回答ありがとうございます。

SHINYA-W
質問者

補足

おお、出来ました。 こういったチョットしたことを調べるのにも、いろいろな本を見てもなかなか見つけられないことが多いです。 やはり、感と経験が物を言う世界ですね。 また、何かあったときにはよろしくお願いします。

その他の回答 (1)

noname#49904
noname#49904
回答No.1

 私の場合、下記のように使っています。 【Form-Bが一覧形式で表示される一覧票で、Form-Bのコードフィールドをダブルクリックした場合にクリックしたコードを持つ個人表 Form-Aを表示します。個人票が開いたら一覧表を閉じます。(コード番号の他、氏名フィールドにも同じようなダブルクリック時の記述も作っています)】 Private Sub コード_DblClick(Cancel As Integer) DoCmd.OpenForm "Form-A", wherecondition:="[コード]='" & Me![コード] & "'" DoCmd.Close acForm, "Form-B" End Sub 【新しいデータの入力用フォームにする場合 新規登録ボタン 個人票 Form-A にデータが残っている場合、一旦closeして新規登録にします。Form-A の中のボタンです。】 Private Sub 新規登録_Click() DoCmd.Close DoCmd.OpenForm "Form-A", datamode:=acFormAdd End Sub 【一覧表示へ戻るボタンのコードです。】 Private Sub Form-Bへ_Click() DoCmd.OpenForm "Form-B" DoCmd.Close acForm, "Form-A" End Sub  一応自信なし ということで、ご参考になればよいのですが…

SHINYA-W
質問者

お礼

回答、アイテムありがとうございます。

SHINYA-W
質問者

補足

現在、メインフォームとサブフォームは1画面上に常に表示している状態です。 なので、メインフォームを開くときにパラメータを渡すのではなく、 すでに開かれているメインフォームに対して、結果データを表示させたいと考えています。 やりたいことは、まずメインフォームでキーとなる値を入力させます。(社員番号とします) メインフォーム上には、社員番号を入力させるエリア、講習名と受講期間を表示するエリアがあります。 テーブルからキーにマッチしたデータを、サブフォーム上に表示させます。 (社員番号・受講した講習名・受講期間・・・等) 複数表示したサブフォームのデータの中から、1レコード選択させます。 この選択させる方法を、該当レコードのどこかのレコード(社員番号・講習名・受講期間どこでも)を ダブルクリックさせて選ばせます。(ダブルクリック時イベント) 選ばれたレコードの講習名と受講期間を、先ほどのメインフォームの場所に表示させます・・・、 といったことをやりたいのです。 メインフォームとサブフォームは、同一画面上にあり、サブ→メインへのデータの受渡しを 通常どのようにしているのかを教えて頂ければと思います。 う~む、文章にするとむずかしいです・・・。

関連するQ&A

  • Accessのメインフォームとサブフォームの使い方について

    Accessにてメインフォーム(単票形式)+サブフォーム(帳票形式)を使って進捗管理をするデータベースを作っており、新規にメインフォームで入力し、サブフォームで入力したデータを表示させてます。 サブフォームで更新したいレコードをクリックしたときにメインフォームでそのレコードを表示させるにはどのようにすればよろしいのでしょうか?

  • サブフォームが見えなくなる。

    サブフォームが見えなくなる。 Access初心者です。 メインフォームにサブフォームを入れ込んだのですが、メインフォームを新しいレコードに移動すると、サブフォーム自体が出てこなくなります。 データがあるレコードではきちんとサブフォームが出ていることが確認出来ています。 どうしていいのか判らないので教えて下さい。 マクロで入力ボタンを押すとメインのフォームを開き、新しいレコードに移動することをやっていますが、関係あるでしょうか? やりたいことはメインを新しいレコードに移動した時に、サブフォームが表示されて入力できるようにしたいということです。

  • Accessサブフォームの表示について

    はじめまして、yossy136kgと申します。 Microsoft Access2003のメインフォーム、サブフォームに関して下記の件、ご教授願います。 メインフォーム、サブフォームを作成しリンクして、あるテーブルのレコードをサブフォームに表示されることが確認できている状況です。 サブフォームのRecordSourceに設定しているテーブルに【複数件レコードがある】状態に対して、検索条件に満たない場合空の状態でサブフォームは表示出来ています。 確認したいことは、サブフォームのRecordSourceに設定しているテーブルが【0件(レコードがない)】の状態に対して、サブフォームを空の状態で表示することは出来ますでしょうか? 現状、サブフォームは非表示となっています。 ※ダミーデータを入れてそれを表示対象とするしかないのでしょうか? 何かご不明な点がありましたご指摘ください。 以上、宜しくお願い致します。

  • Access VBAでメインフォームとサブフォームを印刷するには?

    現在Access VBAを使用して開発をしております。 (Accessのバージョンは2003です。) メインフォームとサブフォームから成る画面があります。 以下、フォーム内に配置されているコントロールです。 <メインフォーム> ・コンボボックス(DB非連結) ・検索ボタン ・画面印刷ボタン <サブフォーム> ・表形式フォーム(DB連結) 画面の機能としては、メインフォームの検索ボタンをクリックしたら、 メインフォームのコンボボックスで選択されているデータに 該当するデータをサブフォーム内に表示しています。 この状態で画面印刷ボタンをクリックしたら 印刷プレビュー画面を表示しています。 ●サブフォームのデータは印刷プレビューで表示されているのですが、 メインフォームのコンボボックスで選択されたデータが表示されなくて 困っております。 メインフォームのコンボボックスをサブフォーム内に配置すれば 印刷プレビューで表示できるようになるのかもしれませんが、 できればメインフォーム上に配置しておきたいのです。 何か良い方法をご存知の方、ご教授いただきたく思います。 よろしくお願いします。

  • ACCESSのサブフォーム

    ACCESSのサブフォームで、レコード表示について教えてください。 添付のサブフォームの一番左のコンボボックスに値を入力もしくは選択すると、未入力のレコードが下に1行分増えます。 (その他項目は連動して表示されます) サブフォームは帳票フォームを選択しているのですが、一般的には帳票フォームを選択した場合、レコードの数分だけ表示されると思うのですが、これは1レコードづつ増えていきます。 このサブフォームを作った人がもういないので、どうやって作ったのかが分かりません。 どなたか分かる人がいれば教えて頂けますでしょうか。 必要な情報があれば、調べて回答します。

  • ACCESS2000で、サブフォームのデータを並べ替えする方法は?

    アクセス初心者+αの者です。 メインフォームを開いた時に、サブフォームにはメインとのリンク項目に該当するデータをクエリから抽出し、表示するようになっています(データによっては複数件あり)。 データ抽出は出来てますが、データの表示順がうまく出来ません。サブフォームのレコードソースSQL文にOrderBy句で指定してもダメでした。 メインフォームの並べ替えプロパティが怪しいと思ってるのですが、どのように記述すれば良いのでしょうか?(VBAでもOKです) 並び替えしたい項目は、サブフォーム内に持ってます。 情報の不足もあるかもしれませんが、よろしくお願いします。m(__)m

  • Access メインフォーム サブフォームにて

    お世話になります。 Accessにて メインフォームにコマンドボタンを置いて、クリックするとサブフォームのレコードが 次に行くようにしたいのですが、 コマンドボタン クリック Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus DoCmd.GoToRecord , , acNext メインフォームとサブフォームのレコードが次に行ってしまいます。 サブフォームだけ次のレコードに行くには、どのようにすれば良いのでしょうか。 分かる方教えて下さい。 宜しくお願いします。

  • アクセス2003のサブフォームの値の代入

    アクセス2003でメインフォームにデータシートビューのサブフォームを作成しています。 そのサブフォームのフィールドにイベントで検索用の別のフォームを開くようにしています。 検索用フォームからサブフォームへマクロで値を代入するように しているのですが、サブフォームが見つからないというエラーが表示されます。 どこに問題があるのでしょうか? (ちなみにサブフォームだけ開いて検索フォームを開き値を代入するとうまく行きます。メインフォームからだとエラーになります。) どうぞよろしくお願いします。

  • サブフォームでのダブルクリックイベント

    Access2003です。 フォームにサブフォームを設置し、直接テーブルを表示させています。 このサブフォームのテーブルのある行をダブルクリックしたら その行のデータを他のフォームのオブジェクトにセットしたいのですが 行や行のデータ全てを取得は出来るのですが、サブフォームのイベントがEnterとExitしかなくて、イベント発生が出来ません。 フォームのダブルクリックでXとYを見て…と思ったのですがサブフォーム上ではフォームのダブルクリックイベントが発生せず。 サブフォームのテーブルはユーザーがソートする事もあるのでベタに上にテキストボックス等を置く事は出来ません。 どうにかダブルクリックで動作させる方法はありませんでしょうか?

  • Access:サブフォームにクエリ表示⇒フィールドを絞り込みたい

    Access2003 WinXP です。 フォームにサブフォームを置き、サブフォームのソースオブジェクトにクエリを参照しているデータシート形式のフォームを設定しています。 フォームに絞込み条件を選択するオプションボタン、表示するフィールドを選択するオプションボタンを配置し、 サブフォームへ表示するコマンドボタンを置いています。 この設定を選択した後コマンドボタンを押すと、クエリの中身を書き換えています。 で、実行すると、表示しない設定のフィールドには「Name?」という値が入ったフィールドがしっかり表示されてしまいます。 ソースオブジェクトにクエリ自体を設定すれば回避出来ますが、表示されたデータをダブルクリックするとその1レコードを表示する画面を更に開きたいと思っていますので、サブフォームにデータシート形式のフォームをセットするのがダブルクリックイベントを取得出来て良いかと思っています。 分かりにくい説明ですみません。 何か解決法を分かる方いらっしゃいましたら、お願いします。

専門家に質問してみよう