プロが教えるわが家の防犯対策術!

得意先のデータベースを作っています。
メインで詳細データを入力し、
会社名の一部で検索できるようにしてあります。
その検索の結果をサブフォームに
データの一部を表示し、
複数ある場合はサブフォームで選択したデータを
メインフォームに反映させたいと思っています。

アクセス初心者の私でもできる方法はないでしょうか?

A 回答 (2件)

> 選択したデータをメインフォームに反映させたい



そういうことでしたら、検索結果の表示には、サブフォームではなくリストボックスを
使われてはいかがでしょうか。

*複数フィールドのデータ表示はリストボックスでも可能です。
 但し、データシート型のサブフォームと違い、Accessの標準機能ではマウス
 ドラッグによるフィールドの表示幅の変更はできないため、データの詳細確認は
 メインフォームで行うことになります。


テーブルやフォームの構成がわからないので、とりあえずポイントだけ説明すると・・・
(既に、検索結果をサブフォームに表示させる方法をご存知の状況下ですので、
 冗長すぎる説明になってしますかもしれませんが(汗))

<リストボックスの設定>
◎プロパティシートの『書式』タブ内:
 ・列数:
   リストボックスに表示させるフィールド数を入力
   (但し、主キーフィールドを非表示にする場合は表示フィールド数+1)
 ・列幅:
   必要に応じて設定
   (特に設定しない場合は「リストボックスの幅=1フィールドの幅」になり、
    各フィールドのデータ確認には、リストボックス内の横スクロールバーを
    使用することになります)
 ※上記の設定により、複数フィールドが表示されるようになります。
   (下記の「値集合ソース」の設定は必須)
◎プロパティシートの『データ』タブ内:
 ・コントロールソース:
   今回はレコードの指定に使用するので、設定は無用
 ・値集合ソース:
   既定で入力されている「テーブル/クエリ」のままでOK
 ・値集合ソース:
   サブフォームで現在使用しているクエリ(又はSQL文)を使用
   (但し、メインフォームで表示することになるレコード1件を特定するための
    フィールド(主キーなど)が含まれていない場合は、追加する必要あり)
 ・連結列:
   上記の「メインフォームで表示するレコード1件を特定するためのフィールド」
   が、クエリの何番目のフィールドに当たるかを記録します。
   (これにより、リストボックスに実際に入力される値が決定されます)
◎プロパティシートの『イベント』タブ内:
 ・更新後処理:
   リストボックスの値の変更に合わせて、メインメニューの表示を更新する
   コードを記述します。
   1)プロパティシートの上記行にカーソルを移動
   2)右端に表示される「...」(ビルダ)ボタンをクリック
   3)『ビルダの選択』ダイアログで「コード ビルダ」を選択して『OK』をクリック
   4)VBE画面が表示されます。
    「Private Sub ○○_Click()」「End Sub」(「○○」はリストボックス名)の
    2行が追記されているはずなので、その間の行に以下のコードを追記:
    Me.Requery
   5)VBE画面を閉じる
    プロパティシートに「[イベント プロシージャ]」と表示されていることを確認
   6)フォームを保存して閉じる

<メインフォームの設定>
◎プロパティシートの『データ』タブ内:
 ・レコードソース:
   上記リストボックスを検索条件(Where条件句)とするクエリを新規作成し、
   それを指定


・・・以上です。

なお、検索条件の更新をサブフォームに反映するVBA(又はマクロ)を既に組まれて
いると思いますが、そこはリストボックスの更新(再クエリ(Requery)でよいはず)に
変更してください。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。

なんだか私でもがんばればできる気になりました。
毎日アクセスを使っているわけではないので、
いまひとつ進化ができずにいたのですが、
こんな私でもみなさんのおかげで成長できそうです。

ありがとうございました。

お礼日時:2008/06/09 17:21

フィールド数が多いテーブルの一部のフィールドだけ帳票フォームで表示させ


そこで選んだレコードを全フィールドを表示した単票フォームで表示するというようなときには
メイン・サブではなく別フォームでやるのが定石ですね
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
そうなんですね。
別フォームの作成ですか・・・
考えてみます。ありがとうございました。

お礼日時:2008/06/09 09:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!