
Accessのコンボボックスに連動して、サブフォームを表示させたい。そして、そのサブフォームに新しいデータを追加したい。
コンボボックスに連動さして、サブフォームを表示させるやり方は、検索して見つける事ができました。
そのページはこちらです。
http://www.nurs.or.jp/~ppoy/access/access/acF028 …
しかし、データをサブフォームに追加しようと思うと上記リンク先のやり方では出来ませんでした。
何か方法はないでしょうか?
No.5ベストアンサー
- 回答日時:
ANo.1です
URLを参考にしていろいろやってみました。
出来ました!!! こんなの初めてです。
URLを参考にされたのであれば
・コンボボックス名は「CMB_県名」となっていますか ?
・コンボボックスの対象項目は県名のみですか ?
例では tbl参加住所サブと tbl_prf テーブルから 選択クエリーを経由して サブフォームを作ってメインフォームに都道府県のコンボボックスを配置しています。
サブフォームになるフォームは作成できますね
メインフォームは空のフォームから始めます。
1.フォームヘッダーにTbl_Pref(都道府県リスト:都道府県ID,都道府県名) のコンボボックスを配置します。
2.tbl参加住所サブを詳細欄へドラッグするとサブフォームとして配置できます。
3.サブフォームプロパティーでリンクを定義して完成です。
ただしこの場合ナビしてくれませんので直接入力することになります。
リンクの対象となる項目は同じデータ形式でなければなりません。
ありがとうございます。また、お礼が遅くなってすみません。
実は、この質問をしたあと、以前に作ったACCESSの改良をしなければいけなくなり、まだ今回の質問した分に取りかかれておりません。
回答頂いた内容は、私にはすぐ理解できるものではありません。
今やっている問題が開設次第、じっくり取りかかる予定。
そのときに、改めてお返事します。
私の勝手で申し訳ございませんが、もうしばらくお待ち頂けないでしょうか。
No.4
- 回答日時:
ANo.1です
URLを参考にしていろいろやってみました。
出来ました!!! こんなの初めてです。
URLを参考にされたのであれば
・コンボボックス名は「CMB_県名」となっていますか ?
・コンボボックスの対象項目は「都道府県」のみですか ?
No.3
- 回答日時:
【要旨】
サブフォームのレコードソースをクエリからテーブルに変更し、『県名』の表示を
テキストボックスから「tbl_prefテーブルを元にしたコンボボックス」に変更します。
(レコードソースを1つのテーブルとすることで、「2つのテーブルからなるクエリ」である
ことに起因する弊害が回避されます)
【詳細】
> 何か方法はないでしょうか?
提示サイトのサンプルに対して、サブフォームでの新規追加を可能にするのでしたら、
以下の方法が簡単かと思います。
◆サブフォーム側◆
1)「≪設定1≫」で作成されたサブフォームのレコードソースを「tbl_参加住所sub」に
差し替え
2)『県名』テキストボックスのコントロールソースを、「pref_NM」から「県No」に差し替え
3)同テキストボックスを右クリックし、「コントロールの種類の変更(H)→コンボボックス
(C)」を選択
4)変更した『県名』コンボボックスのプロパティシートで、プロパティを以下のように設定
『書式』タブ:
・列数=「2」
・列幅=「0cm;5cm」 (「5cm」の方は必要に応じて適当に変えてください)
『データ』タブ:
・値集合タイプ=「テーブル/クエリ」 (初期設定のまま)
・値集合ソース=「Select pref_ID, pref_NM From tbl_pref Order by pref_ID;」
・連結列=「1」 (初期設定のまま)
・入力チェック=「はい」 (初期値は「いいえ」ですが、自動で切り替わるはず)
※これらの設定により、「県No」の数値に対応する県名(pref_NM)が、コンボボックスに
表示されるようになります。
5)フォームを保存して閉じる
◆メインフォーム側◆
※サブフォームのレコードソースから「pref_NM」フィールドがなくなったのに伴う改修※
1)『cmb_県名』コンボボックスのプロパティを、サブフォームの『県名』コンボボックスと
同様に設定(但し、コントロールソースだけは、提示サイトと同様、空白のまま)
2)『frm_sub』サブフォームの『リンク子フィールド』を、「pref_NM」から「県No」に差し替え
3)フォームを保存して閉じる
・・・以上です。
ありがとうございます。また、お礼が遅くなってすみません。
今回の質問をした後すぐに、以前に作ったAccessの改良をしなくてはいけなくなりました。
そのため、そちらに掛かりっきりになっており、今回の検証ができておりません。
どうも、今回の質問は、私にとって予想以上に高度なため、検証するのにかなり時間が掛かりそうです。
そのため、回答頂いたないようにたいする返事等は、もう少し掛かりそうです。
このままでは、お礼が遅くなってしまうので、先にお礼を。
後日、追加の質問等があった場合は、よろしくお願いします。
No.2
- 回答日時:
追加/変更できないクエリの様ですね。
(複数の環境で採取された画面で説明されているようにみえます)
以下、変更の手順ではなく、新規作成する時の手順になります。
近い(テーブル・フォーム)構成にしています。
(同じ名前を使っていいのかわからなかったのでチョコチョコと変えてます)
「TPref」テーブル
PrefID PrefNM
1 北海道
2 青森県
3 岩手県
・・・・
「T参加住所」テーブル
an 県ID 住所 参加人数
1 1 札幌市中央区 420
2 13 千代田区 501
3 13 中央区 1005
・・・・
(「an」はオートナンバー)
(「PrefID」と「県ID」は同じ型)
サブフォームになるフォームの作成)
都道府県名はコンボボックスの表示でわかるので、サブフォームには「住所」「参加人数」を表示するものとします。
フォームウィザードで「T参加住所」テーブルを元に、「住所」「参加人数」を選択し、データシート形式で作成します。
フォーム名を「F参加住所」とし、閉じておきます。
メインフォームの作成)
フォームデザインから作成します。
フォームのプロパティ「レコードセレクタ」「移動ボタン」「区切り線」を「いいえ」に変更します。
コンボボックスを配置し、名前を「cmb県名」にします。
コンボボックスのプロパティで以下部分を変更します。
値集合タイプ: テーブル/クエリ
値集合ソース: SELECT PrefID, PrefNM FROM TPref;
列数: 2
列幅: 0cm;3cm (1列目は表示しないように)
連結列: 1
入力チェック: はい
既に出来上がっているフォーム「F参加住所」を、コンボボックスの下にドラッグ&ドロップします。
プロパティで名前を「FSUB」に変更します。
リンク親子フィールドには、手入力で記述していきます。
(右横に表示される「・・・」ボタンは使いません)
リンク親フィールドに、 cmb県名
リンク子フィールドに、 県ID
表示する大きさを調整します。
良かったらフォームを保存し、動作を確かめてみます。
この方法が不評であれば以下の様に変更しても。
(表示更新はこちらの方が速いようです)
リンク親子フィールドは空欄にします。
サブフォーム「F参加住所」のレコードソースを、コンボボックスを参照した条件記述に変更します。
SELECT * FROM T参加住所 WHERE 県ID = [Forms]![親フォーム名]![cmb県名];
また、「F参加住所」の挿入前処理で、登録に必要な「県ID」を親から持ってきます。
Private Sub Form_BeforeInsert(Cancel As Integer)
If (IsNull(Me.Parent.cmb県名)) Then
Cancel = True
Else
Me.県ID = Me.Parent.cmb県名
End If
End Sub
さらに、コンボボックスのクリック時にサブフォームを再クエリします。
Private Sub cmb県名_Click()
Me.FSUB.Form.Requery
End Sub
後は、他ページに記述されているフィルタの方法になるかと。
※
1番目のリンク親子フィールドを使っている時、
「F参加住所」の挿入前処理で、「cmb県名」をみて、編集状態を管理した方が・・・
NULL なら編集状態にさせない記述は、
Private Sub Form_BeforeInsert(Cancel As Integer)
If (IsNull(Me.Parent.cmb県名)) Then
Cancel = True
End If
End Sub
「cmb県名」が NULL でなければ、2番目の方法とは異なり、県ID は自動で設定されます。
ありがとうございます。また、お礼が遅くなってすみません。
せっかく回答頂いたのですが、検証できておりません。
ACCESSで、他の仕事ができたのでそちらに掛かりっきりになっております。
私のレベルは入門程度なので、VBAの検証となると、さらに時間が必要になります。
じっくり時間を掛けることになりそうなので、追加の質問等は、さらに数日必要になりそうです。
その時はよろしくおねがします。
No.1
- 回答日時:
>コンボボックスに連動して、サブフォームを表示させたい
コンボボックスは登録済みのデータの中から特定のデータを選ぶものです。
ここへは組み込めません。
例えば社員情報の登録フォームには所属部門の項目が必要ですこのときに利用するのがコンボボックスです。
部門登録フォームと社員登録フォームがあるとき 部門登録フォームに社員登録フォームをサブフォームとすると
上記のコンポボックスを使う必要もなくなり、部門登録フォームを開くことで部門も社員も登録できます。
サブフォームを設定するには社員のテーブルに部門テーブルの主キーの項目がありこの項目でリレーションシップが設定されている必要があります。
部門登録フォームにデザインモードでサブフォームツールを配置することから始めます
サブフォームツールは ツールバー上にあります。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
このQ&Aを見た人はこんなQ&Aも見ています
-
Access サブフォームでの選択行の取得
その他(データベース)
-
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
ACCESSでコンボボックスにSQLで抽出した値を表示したい
その他(データベース)
-
-
4
accessでコンボボックスとサブフォームでデータ表示したい。
その他(Microsoft Office)
-
5
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
6
「フォームを作成できませんでした」
Access(アクセス)
-
7
AccessクエリーでチェックボックスOnのものだけカウントしたい
Access(アクセス)
-
8
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
9
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
10
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
11
アクセスのボタンから指定のワードファイルを開く
Access(アクセス)
-
12
アクセスでテーブルの変更内容をフォームに反映させるには?
その他(データベース)
-
13
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
14
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
15
アクセスでサブフォームのレコードを取得したい。
Access(アクセス)
-
16
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
17
ACCESS テキストボックスを隙間なくきれいに並べたい
Access(アクセス)
-
18
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
19
yes/no型のチェックができない(アクセス2003)
Access(アクセス)
-
20
Accessのコンボボックスでリストが選択できない
Word(ワード)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access 複数フォームを...
-
Access 検索フォーム
-
Access2000 サブフォームのReco...
-
googleフォームでインストール...
-
Accessのサブフォーム内で連続...
-
(ACCESS)条件に応じて、テキ...
-
access サブフォームにリストを...
-
[Access]複数のサブフォームで1...
-
ACCSESS2013VBA フォームのレコ...
-
Accessでサブフォームの中の並...
-
サブフォームでのダブルクリッ...
-
ACCESS 削除 サブフォーム ta...
-
ACCESS サブフォームのフィール...
-
accessのサブフォームの並び替...
-
Accessのサブフォーム上で常に...
-
ACCESSでサブフォームの...
-
サブフォームが見えなくなる。
-
ACCESSでのデータ削除について
-
【ACCESS2000】 サブフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access 複数フォームを...
-
(ACCESS)条件に応じて、テキ...
-
Access2000、これはいったい・...
-
access サブフォームにリストを...
-
サブフォームが見えなくなる。
-
Accessでサブフォームの中の並...
-
サブフォームでのダブルクリッ...
-
AccessのFormのみをスクリーン...
-
ACCSESS2013VBA フォームのレコ...
-
Accessのサブフォームから値を...
-
初心者です。accessで請求書を...
-
Access2000 サブフォームのReco...
-
2回目に画面のレコードセットの...
-
ACCESSでfilterとorderbyについて
-
Accessでのフォーム表示がうま...
-
別MDBのフォームを起動
-
Accessで、一覧からクリックし...
-
サブフォームのデータを保存す...
-
googleフォームでインストール...
おすすめ情報