
ACCESSで社員の資格情報を入力するシステムを作成したのですが
以下の問題を解決できず困っています。
どうすればいいか
お力を貸して頂けないでしょうか?
■問題:メインフォームで別レコードに移動した際
サブフォーム内の連携コンボボックスを更新されない
□コンボボックス2の表示項目
1.分類別No
2.資格名ID
3.資格名
3のみを表示していますが、
1つ目のコンボボックス1の数値で
全コンボボックス2の資格名が出てしまいます。
■フォーム構成
メインフォーム内に以下を設置
1.移動ボタン
2.帳簿サブフォーム
□サブフォーム構成
レコード1 コンボボックス1 コンボボックス2
レコード2 コンボボックス1 コンボボックス2
~~
最終レコード コンボボックス1 コンボボックス2
■コントロールソース
コンボボックス1:大分類ID
コンボボックス2:資格名ID
■テーブル構成
資格名
資格名ID(主キー)
大分類ID
分類別ナンバー(大分類ごとの登録順ナンバー)
資格名
資格大分類
大分類ID(主キー
大分類名 (IT系・運転系など)
■コンボボックス2の値集合ソース(表示項目:資格名)
SELECT 資格名.資格名, 資格名.分類別No, 資格名.資格名ID
FROM 資格大分類
INNER JOIN 資格名 ON 資格大分類.資格大分類ID = 資格名.資格大分類ID
WHERE (((資格名.資格大分類ID)=[Forms]![メインフォーム]![サブフォーム]![コンボボックス1])) ORDER BY 資格名.分類別No;
------------------------------------
サブフォームに記載し効果のなかったVBAコード
’再クエリ
Private Sub Form_Current()
Dim cntrl As Control
If Not IsNull(Me![コンボボックス1]) Then
For Each cntrl In Form.Controls
If cntrl.ControlType = acComboBox Then
cntrl.Requery
End If
Next cntrl
End If
End Sub
’ソース更新
Private Sub Form_Current()
With Forms!メインフォーム名!サブフォーム名!コンボボックス2
.RowSource = .RowSource
End With
End Sub
■参考サイト
'サブフォーム内での2つのコンボボックスの連動について
'http://goo.gl/nfvxW
'~
'> コンボボックスAの更新後処理イベントに
'> Me!コンボボックスB.Requery
'>
'Me.コンボボックスB.RowSource = Me.コンボボックスB.RowSource
'数値でコンボボックス選択
'http://goo.gl/ovZ3C
'リストボックスの行を選択するときは、「Selected(n)」を使います
'http://goo.gl/RbsWX
'サブフォームの指定
' =Forms!フォーム名!サブフォームコントロール名.Form.テキストボックス名
'http://goo.gl/vKxtj
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
失礼ですがあなたのやろうとしている事は
VBAを使わなくともACCESSの基本操作
即ちテーブルデザイン、リレーションシップ設定、
フォームデザイン(ウィザード利用)で実現出来ます
よろしいでしょか
テーブルは資格、資格大分類、社員の3つのテーブルです
T資格大分類
ID 主キー(オートナンバー型)
大分類名(インデックス 重複なし)
分類別ナンバー(数値型-整数型)
T資格
ID 主キー(オートナンバー型)
資格名 (インデックス 重複なし)
大分類ID(数値型-長整数型) T資格大分類のIDにリレーションシップ
※ T資格大分類を参照
T社員
ID 主キー(オートナンバー型)
社員名
資格ID T資格のIDにリレーションシップ
※ フィールドプロパティーでT資格を参照
・リレーションシップの設定は大丈夫ですね
・T資格のデザインビューによる T資格大分類を参照
[ナビゲーションウインドウ内のT資格を右クリック]→[デザインビュー]
→[大分類ID]→[ルックアップ]
ここでは表示コントロールはテキストになっています
→[表示コントロールの入力枠の右端]→[コンボボックス]→[値集合ソースの右端]
→[T資格大分類]→[列数 2]→[列幅 0]
※ 列数 2 はT資格大分類内のIDと大分類名
※ 列幅は IDと大分類目の表示幅(Cm)をカンマ区切りで入力ですが
最後の項目幅は省略できます
この設定によりテーブルを開くと大分類IDの位置に大分類名が表示されます
同じ要領でT社員のT資格を参照
・ウイザードによるサブフォームを持つフォームの作成
このフォームはT資格大分類とT資格、T資格とT社員のフォームを2組作成します
F資格大分類、F資格分類、F社員とF資格分類サブ、F社員サブのフォームを
複数のアイテム形式で作成します
F資格大分類を例に手順を記述します。
[ナビゲーションウィンドウ内のT資格大分類にマウスカーソルを移動して]
→[作成]→[その他のフォーム]→[複数アイテム]
これで出来上がりですが、フォームのデザインビューでIDを除去します
※ 主キーはオートナンバー型式なので内部で採番してくれますし
表示されても意味不明で変更もできません
同様にF資格分類、F社員も作成しておきます。
F資格大分類のサブフォームとするF資格分類サブ、F資格分類のサブフォームとする
F社員サブ も同様に作成しますがID,資格大分類ID、資格IDも除去します
最後はF資格大分類にF資格分類サブ、F資格分類にF社員サブをセットします
F資格大分類をデザインビューで開きサブフォームツールをフォームフッターに配置すると
単票フォームに変更するとコメントがありますが素直に受け入れて出来上がった
後デザインビューで帳票フォームに変更します

No.1
- 回答日時:
質問内容を詳しく読んでませんが、サブフォームは帳票フォームなのでしょうか?
帳票フォームであれば、
一律に コンボボックス2 の条件を適用できないので、
・コンボボックスにテキストボックスを重ねる
・コンボボックスにコンボボックスを重ねる
これらの方法を取る必要があると思います。
要は、見せるものと、入力操作するものを別にして、重ねておく・・・・という事になります。
コンボボックス連携の導入(?)部分を過去回答していたので参照ください
accessの連結コンボについて
http://oshiete.goo.ne.jp/qa/7345694.html
単票フォームであれば、(参照先にも記述していますが)
単に、レコード移動時に Me.コンボボックス2.Requery すれば良さそうです。
余談)値集合ソース内でコントロールを参照する時
> 資格名.資格大分類ID=[Forms]![メインフォーム]![サブフォーム]![コンボボックス1]
この部分は、自フォームにあるコンボボックス1を参照するので
資格名.資格大分類ID=[コンボボックス1]
で動作したと思います。
後は、コンボボックス1 が選択されていない時の判別を盛り込まれるのかと・・・・
(必ず コンボボックス1 から操作するのであれば不要かも)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
この資格取れば他の資格も半分...
-
マイナ保険証 資格確認書
-
年を食ってから難しい資格を取...
-
AFPを放棄しても、二級FP技能...
-
アパート経営
-
博物館学芸員と学芸員(補)に...
-
労務管理士の資格登録について ...
-
「古物商」を英語で…
-
看護師になりたい高校生です。 ...
-
証券外務員特別会員一種は銀行...
-
主任、主事、主務の上下関係、...
-
会社に籍だけがある時のデメリット
-
炭酸ガスボンベ-資格
-
誘導灯の取替に消防設備士の資...
-
三つ同じ漢字が続く四字熟語を...
-
窒素ガスボンベの運搬は一般人...
-
資格が取れません(二級建築士) ...
-
知っている、知らないを二語の...
-
窒素ガスボンベについて
-
人のせいにするの「せい」の漢...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
この資格取れば他の資格も半分...
-
マイナ保険証 資格確認書
-
アパート経営
-
年を食ってから難しい資格を取...
-
オートクレープを扱うにあたっ...
-
会社に籍だけがある時のデメリット
-
就職四季報
-
全建統一様式第2号 作業員名簿...
-
NTTコミュニケーションズ ...
-
主任、主事、主務の上下関係、...
-
社会保険、返戻の問い合わせは?
-
AFPを放棄しても、二級FP技能...
-
ユンボを私有地で使用する場合
-
医学療法士について
-
証券外務員特別会員一種は銀行...
-
商工会議所 会頭
-
食品系の資格が欲しいです。 専...
-
中小企業診断士の資格って株式...
-
医療事務の仕事に就いてる方に...
-
行く価値のある専門学校の種類(...
おすすめ情報