- ベストアンサー
Accessコンボボックスで修理履歴の表示が正しくならない問題について
- アクセスコンボボックスで修理履歴を表示するフォームを作成したが、選択したレコードの実施区分が正しく表示されない問題が発生しています。
- また、実施区分テーブルの区分名が変わってしまう問題もあります。
- どのようにすれば、選択したレコードの実施区分を正しく表示し、実施区分テーブルの区分名も変わらずに表示することができるでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 区分名も変らずに済むのでしょうか? 恐らく、『修理履歴クエリ』は、修理履歴テーブルと実施区分テーブルから作成された のだと思いますが、今回のような場合(→修理履歴テーブルの実施区分IDの更新)は、 修理履歴テーブルを直接使用するか、対象を絞り込んだり並べ替えを指定したりする 意味で、同テーブルだけから作成したクエリを使用します。 その上で、コンボボックスを使用し、実施区分IDの値を、『実施区分テーブル』の対応 する『区分名』の値に変換して表示させてやります。 (コンボボックスは、「選択肢を表示するため」だけでなく、こういった「表示用の値への 変換」にも使用できます) なお、この設定(→コンボボックスによる変換表示)は、フォーム上でも勿論できますが、 テーブル側で設定しておくと、次回から同テーブルを使用して別のフォームを作成する 際には、『フィールドリスト』からドラッグ&ドロップでコントロールを追加するだけでコンボ ボックス表示となるので便利かと思います。 修理履歴テーブルでの『実施区分ID』の設定変更は、以下の手順で行えます: 1)修理履歴テーブルをデザインビューで開く 2)実施区分IDを選択 3)画面左下の領域にある『ルックアップ』タブを選択し、『表示コントロール』を 「コンボボックス」に変更 4)コンボボックス用の設定表示に切り替わるので、以下のように指定: 値集合タイプ = テーブル/クエリ 値集合ソース = 実施区分テーブル 連結列 = 1 (→上記テーブルの「1」番目のフィールド(=実施区分ID)の値を保存) 列数 = 2 (→上記テーブルの「2」番目までのフィールドを使用する意味) 列幅 = 0cm;5cm (→1番目のフィールドを0cm幅(=非表示)、2番目を5cm幅で表示) ⇒データとしては実施区分IDの値を保存しつつ、表示は区分名の値となります。 5)テーブルを保存して閉じる ・・・以上です。 テーブルをデータシートビューで開き、『実施区分ID』がコンボボックス表示になり、 実施区分テーブルの『区分名』が表示されることを確認して下さい。 次に、フォームの変更手順です: 1)当該フォームをデザインビューで開く 2)フォームのプロパティシートの『レコードソース』の値を、修理履歴テーブルに変更 3)実施区分IDや区分名を表示させるコントロールを一旦削除 4)フィールドリストが表示されていない場合は、 Access2003までなら、メニューで「表示(V)→フィールド リスト(L)」 Access2007なら、『デザイン』リボンの『ツール』内の『既存のフィールドの追加』 をクリックして、フィールドリストを表示 5)『実施区分ID』フィールドをドラッグ&ドロップで、フォームに追加 6)『実施区分ID』の名前でコンボボックスが追加されるので、必要に応じて名前を 変更 (同コンボボックスのプロパティシートで、『その他』タブの『名前』で設定: 『データ』タブの『コントロール ソース』ではないので、念のため) 7)保存して閉じる ・・・以上です。 なお、フォーム上でコンボボックスの設定を行う場合は、ツールバーからコンボボックス をドラッグ&ドロップで追加後、プロパティシートの『書式』タブと『データ』タブに、 テーブルのデザインビューと同様の設定項目があるので、そこを編集します。
お礼
ご指導ありがとうございます。 無事に表示、実行することができました。 本当に助かりました。ありがとうございました。