まずは現状から説明します。
以下のテーブルがあります。
[細分類マスタ]
細分類ID(主キー)
細分類
[品目区分マスタ]
細分類ID(主キー/細分類マスタ参照)
品目区分ID(主キー)
品目区分
[品目マスタ]
細分類ID(主キー/細分類マスタ参照)
品目区分ID(主キー/品目区分マスタ参照)
品目ID(主キー)
品目
[台帳テーブル]
台帳明細ID(主キー)
細分類ID(細分類マスタ参照)
品目区分ID(品目区分マスタ参照)
品目ID(品目マスタ参照)
数量
やった作業:
1.台帳テーブルをレコードソースとした台帳フォーム(帳票フォーム)を作成
2.台帳フォームの詳細に 細分類、品目区分、品目のコンボボックスを作成
-------------------------------------台帳フォームの詳細欄イメージ
[細分類▽][品目区分▽][品目▽][数量]
-------------------------------------
コントロール名:cbo_saibunrui,cbo_hinmoku_kubun,cbo_hinmoku
3.それぞれの値集合ソースに
SELECT * FROM 品目区分マスタ WHERE 細分類ID=cbo_saibunrui;
SELECT * FROM 品目マスタ WHERE 細分類ID=cbo_saibunrui AND 品目区分ID=cbo_hinmoku_kubun;
を設定(これにより絞込み)
4.コンボボックスがフォーカス取得時に自分自身をリクエリー
現象:
2レコード以降を追加しようとすると、それより以前のコンボボックスの内容が一斉に
変ってしまう。(リクエリーがかかるからあたりまえ?)
なんとか、それぞれのレコードのコンボボックスが独立して働くようにしたいのですが。
無理なら、特にこの方法にこだわるのもではありません。
要は台帳フォーム(帳票フォーム)の詳細欄で効率よく品目を選択でき、
その画面上でそれまでに選択した品目が見えていればOKです。
現在納期に追われて非常に困っています。
表現がわからないところは突っ込んでください。すぐに補足します。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
実際にフォームを作成して実験したところ…変わりますね(苦笑)
ということで自分なりに改造してみたんですが、台帳テーブルを
[台帳テーブル]
台帳明細ID(主キー)
細分類ID
細分類
品目区分ID
品目区分
品目ID
品目
数量
と作り直して、フォームの詳細に
台帳明細ID 細分類ID▽ 細分類 品目区分ID▽ 品目区分 品目ID▽ 品目 数量
と連結フィールドを作成します。
コンボボックスの値集合ソースは
SELECT [細分類マスタ].[細分類ID], [細分類マスタ].[細分類] FROM 細分類マスタ;
SELECT [品目区分マスタ].[品目区分ID], [品目区分マスタ].[品目区分] FROM 品目区分マスタ WHERE ((([品目区分マスタ].[細分類ID])=[Forms]![フォーム]![細分類ID]));
SELECT [品目マスタ].[品目], [品目マスタ].[品目ID] FROM 品目マスタ WHERE ((([品目マスタ].[細分類ID])=[Forms]![フォーム]![細分類ID]) And (([品目マスタ].[品目区分ID])=[Forms]![フォーム]![品目区分ID]));
それぞれ、フォーカス取得時に
Me![コンボボックス名].Requery
変更時に
Me![コンボボックスの右隣のフィールド名] = Me![コンボボックス名].Column(1)
とすることでうまく動きました。
参考になるでしょうか?
この回答への補足
やはり実装段階でテーブル設計への手戻りは痛いですね。
そのままのテーブルでは「できない」とわかっただけでも十分です。
若干の入力画面変更で何とかなりました。
おかげさまで来週いよいよ納品です。ありがとうございました。
/* 01-06-14 katuya */
No.3
- 回答日時:
小手先の方法ですが、コンボボックスをテーブルと連結せずに、
表示はテキストボックスで行うようにしたらいかがでしょうか。
具体的に言うとドロップリストの表示用のボタンの幅だけの
コンボボックスを作成して、その右側に表示用(テーブルと連結)の
テキストボックスをくっつけておくのです。
例えば品目を選択する場合にはコンボボックスで品目区分でセレクトされた
内容をドロップリストとして表示し、その BeforeUpdate で
品目ID と 品目 の2つ値をテーブルと連結したテキストボックスに
代入してやることになります(品目IDの方は非表示にする)。
通常のコンボボックスの場合、表示用のボタンは表示の右側にあるのに、
この場合は左側になってしまいますがこの方が使う時にピンとくると思います。
折角IDがあるのに、台帳テーブルに細分類、品目区分、品目 と
テキストデータすべてを保存することになってしまい問題が多すぎますか?
いずれにせよ細分類、品目区分、品目をテキストで一覧表示したいのであれば
結局テーブルにすべてのテキストデータを持つ羽目になるような・・・・。
この回答への補足
ご回答ありがとうございます。
> 折角IDがあるのに、台帳テーブルに細分類、品目区分、品目 と
> テキストデータすべてを保存することになってしまい問題が多すぎますか?
質問に挙げたのはシステムのほんの一部のテーブルでして、
既に仕様の決まったテーブルの変更をするのは手戻りが大きいのでやめておきました。
> いずれにせよ細分類、品目区分、品目をテキストで一覧表示したいのであれば
> 結局テーブルにすべてのテキストデータを持つ羽目になるような・・・・。
これについてはクエリーで解決できますので問題はありません。
現に数値データしか持っていないようなテーブルが大半です。
今回の疑問は私のACCESSでの開発経験不足が一番の原因でした。
いろいろなメーリングリストなどを駆使し、睡眠時間を削り、休日を返上することで
なんとか良いものができ、お客様にもお喜びいただけました。ありがとうございました。
/* 01-06-14 katuya */
No.1
- 回答日時:
コンボボックスの中身が一斉に変わってしまうのは
コンボボックスが非連結だからです。
帳票フォームでのコントロールは連結されていないと
すべてのレコードにおいて影響してしまいます。
それぞれのコンボボックスのコントロールソースを設定すれば
独立して動きますよ。
この回答への補足
ご回答ありがとうございます。
コンボボックスと台帳テーブルの連結はされています。
既存のデータをコンボボックスで表示するだけ、もしくは固定のリストからの選択なら問題ないのですが、
コンボボックスの内容をリクエリー(cbo_hinmoku.requery)した時点で一斉に替わってしまいます。
少し聴牌ってるので説明が下手でしたね。すみません。
またお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- その他(データベース) accessについて 2 2022/05/31 16:58
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
VBA でvlookup エラーなどは削...
-
フォームにレコード数を表示したい
-
「失注」の意味を教えてくださ...
-
excelマクロの処理を早くしたい...
-
受注受付期間とはなんですか?...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
Accessでテーブル名やクエリ名...
-
ACCESSのクエリで集計で、先頭...
-
Access テキスト型に対する指定...
-
accessのレポートで元になるテ...
-
テーブルの存在チェックについて
-
Accessのリンクテーブルのパス...
-
セルの右クリックで出る項目を...
-
Accessクエリーで両方のテーブ...
-
空白をそのままインポートする...
-
Oracle 2つのDate型の値の差を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
「失注」の意味を教えてくださ...
-
受注受付期間とはなんですか?...
-
ACCESSで、DMax関数の条件の書き方
-
アクセスのクエリで、前回に入...
-
Access:サブフォームのレコー...
-
アクセスで営業日を計算させる...
-
VBA でvlookup エラーなどは削...
-
マクロ転記で指定した列の最終...
-
フォームにレコード数を表示したい
-
access 1対1と1対多のテーブ...
-
データシート形式のサブフォー...
-
ACCESS 選択した値を別...
-
Accessの受注発注について
-
ACCESS 受注数の集計について
-
受注があるわけではないのに設...
-
ACCESS2000の帳票フォーム詳細...
-
ACCESSの同時にデータ入力★初心...
-
Accessテーブルのデータ型を変...
おすすめ情報