• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスコンボボックスで教えてください。)

Accessコンボボックスで修理履歴の表示が正しくならない問題について

このQ&Aのポイント
  • アクセスコンボボックスで修理履歴を表示するフォームを作成したが、選択したレコードの実施区分が正しく表示されない問題が発生しています。
  • また、実施区分テーブルの区分名が変わってしまう問題もあります。
  • どのようにすれば、選択したレコードの実施区分を正しく表示し、実施区分テーブルの区分名も変わらずに表示することができるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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)保存して閉じる ・・・以上です。 なお、フォーム上でコンボボックスの設定を行う場合は、ツールバーからコンボボックス をドラッグ&ドロップで追加後、プロパティシートの『書式』タブと『データ』タブに、 テーブルのデザインビューと同様の設定項目があるので、そこを編集します。

cuxxx
質問者

お礼

ご指導ありがとうございます。 無事に表示、実行することができました。 本当に助かりました。ありがとうございました。

関連するQ&A