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

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

アクセスコンボボックスで教えてください。

アクセス初心者です。 設備の修理情報を登録する、簡単なデータベースを作成しています。 修理履歴テーブル  修理ID(オートナンバー)  発生日  設備No.  実施区分ID 実施区分テーブル  実施区分ID  区分名       001     実施済    002     未実施 実施区分IDはリレーションシップを組んでいます。 その他、修理履歴テーブルを基に、修理履歴クエリを作成、 情報を登録するフォームを作成しました。 基になるクエリを修理履歴クエリにし、デザインビューで 修理履歴を閲覧することができるフォームを作成、 実施区分は、実施済・未実施とを選択できるように コンボボックスで作成、表示することができました。 しかし、完成後、あるレコードのコンボボックスで未実施を選択後フォームを閉じ、次にまたそのフォームを開くと、実施済の全レコードが未実施表示になってしまいます。 また、実施区分テーブルの区分名、実施済が未実施に変わってしまっています。 どのようにしたら、選択したレコードだけ、未実施表示にし、実施区分テーブルの区分名も変らずに済むのでしょうか? よろしくお願いします。

  • cuxxx
  • お礼率94% (18/19)

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

  • ベストアンサー
  • 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

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • ACCESS2000 コンボボックス絞込み

    こんにちは。以前に同じ質問をしたのですが、分からなかったので再度質問させて頂きます。 フォームでコンボボックスで入力しているのでが、 1つ目で選択したら2つ目のコンボボックスに1と関連するデーターしか表示しないようにしたいのですが・・。 テーブル 売上区分1  売上区分1ID  オートナンバー  売上区分1   テキスト型 テーブル 売上区分2  売上区分2ID  オートナンバー  売上区分1   数値  売上区分2   テクスト型 ファームの表示はそれぞれ、区分名が表示されるようになってます。 コンボ1で選んだのが、商品区分1IDが1ならコンボ2で表示されるのが、テーブル 売上区分2 の 売上区分1が1のものだけ表示できるようにしたいです。 説明が悪いかもしれませんが、お願いします。 初心者なもので、分かりやすく書いていただければありがたいです。お願いします。  

  • ACCESS97のコンボボックスについて

    入社して、名刺を貰う機会が多い為、名刺を管理するものを初歩的な参考書を見てACCESS97で作りたいと思います。テーブルで数名の氏名・会社名・部署名・役職・住所を作りました。良く分からなかったので、この1つのテーブルを基にパラメータを使って検索する「検索用画面」と新しいレコードが表示される「新規入力画面」をクエリーとフォームを別々に作りました。検索用画面は、これで良しとします。しかし、新規入力画面は、同会社名が多いので、コンボボックスを作り今まで登録したものからも選べる様にもしたいです。新しいレコードでは、表示されませんが、▼で前のレコード(既に入力してあるデータ)に戻ると、エラーメッセージで「このフィールドに入力した値が不正です。例えば、数値型のフィールドに文字列を入力しました。」と出てきてしまいます。コンボボックスいうのは、コンボボックスウィザードで「テーブルまたはクエリーを表示する」を選び、表示させたいものを選ぶだけでは、いけないのでしょうか・・。くだらない質問で申し訳ありませんが、回答の方宜しくお願いします。

  • Access2000 コンボボックスで…

    こんにちは。Accessは…初心者です。 フォーム上のコンボボックスについての質問です。よろしくお願いします。 Windows2000/Access2000です。 次のようなテーブルがあるとします。 「作家」…作家ID,作家名 「作品」…作品ID,作家ID(「作家」テーブルから[作家名]を引っ張ってきます)作品名 「許諾」…許諾ID,作家ID(「作家」テーブルから[作家名]を引っ張ってきます),作品ID(「作品」テーブルから[作品名]を引っ張ってきます),許諾情報 「許諾」テーブルを元にして、フォームウィザードから単票形式で「許諾フォーム」を作成しました。 このとき[作家ID]と[作品ID]は自動的にコンボボックスになりますが、[作品ID]コンボボックスに、[作家ID]コンボボックスで選択した作家の作品のみを表示したいのです。 ([作家ID]でAさんを選択したら[作品ID]にAさんの作品だけが表示されるようにしたい、ということです。) 似た内容の質問を参考にしたり、いろいろなAccessのサイトを検索したりして試したのですが、イマイチ???でした。 何かよい方法がありましたらご教示ください。 お願いします。

  • Accessのコンボボックスでの検索について2

    コンボボックスが2つあり、cbo回線区分でAAを選択するとcbo名称にはAA条件クエリの名称フィールドの名称が表示され、名称を何か選択すると、AA条件クエリの中から一致するレコードが抽出され、またcbo回線区分でBBを選択するとcbo名称にはBB条件クエリの名称フィールドが表示されBB条件クエリの中の一致するレコードを抽出しにいくということは出来ますでしょうか? わかりにくい説明ですいませんが、コンボボックスにより検索したいクエリを切り替えることは出来るかということなんですが。。。 コンボボックス名 cbo回線区分、cbo名称 クエリ名 AAクエリ、BBクエリ 色々試してはいるんですがうまく行かないので、ご教授願います(If Else・・・を使ったんですが間違いでしょうか?)

  • Access2000 コンボボックス内の並べ替え

    フォーム上で指定した条件で選択クエリを作り、クエリのデータを フォーム上のコンボボックスに表示するようにしました。 (選択クエリのフィールド:   「ID」、「名称」、「条件(指定の状況により数が変わる)」) 選択クエリを見ると「ID」が昇順で並んでいるのですが、 フォームのコンボボックスは「名称」が昇順で表示されます。 コンボボックス上でも「ID」が昇順になるようにするには どうすればよいのでしょうか? よろしくお願いします。

  • Access コンボボックスの絞り込み後の表示

    Access2002を使用しております。 コンボボックスAに連動したデータを絞り込みさせるコンボボックスBがありますが、一旦入力後は、コンボボックスAの値にかかわらずコンボボックスBに入力したデータを表示させるにはどうしたらよいでしょうか? 例として、次の3つのテーブルを基にデータベースを作成しております: メインテーブル フィールド名: ID 社名 担当者 社名テーブル ID   社名   住所 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    A社 2    B社  担当者テーブル ID   社名ID   担当者名  電話番号 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    1      木村 2    2      佐藤 3    1      田中 4    2      斎藤 メインテーブルを基にしてフォームを作成し、 「メイン」というフォーム名にして 「社名」「担当者」をフィールドのコントロールをコンボボックスに変更しました。 「社名」フィールドの値集合ソースを「社名テーブル」から引き出し SELECT [社名テーブル].ID, [社名テーブル].社名 FROM 社名テーブル; 列数2  で設定し、社名をコンボボックスで選択できるようにしました。 そして 「担当者」フィールドの値集合ソースを「担当者テーブル」から引き出し SELECT 担当者テーブル.ID, 担当者テーブル.担当者名, 担当者テーブル.社名 FROM 担当者テーブル WHERE (((担当者テーブル.社名)=forms!メイン.社名)); で設定しました。 「社名」フィールドの「更新後処理」で Private Sub 社名_AfterUpdate()     Me!担当者.Requery End Sub を設定しました。 「メイン」フォームをフォームビューで開き、「社名」コンボボックスで「A社」を選択すると 「担当者」コンボボックスで「木村」と「田中」が表示されるので、「木村」を選択します。 次のレコードに移り、「社名」コンボボックスで「B社」を選択すると 「担当者」コンボボックスで「佐藤」「斎藤」が表示されるので、「佐藤」を選択します。 さて、「佐藤」を入力した時点で、前のレコード(「A社」「木村」を選択)に戻ると 「担当者」欄が空欄で表示されます。 メインテーブルには全てデータは入力されています。 データ入力時は「担当者」コンボボックスは「社名」コンボボックスで選択した値に連動させたいのですが、 このようにデータ入力済みの場合は 最初のコンボボックスの値にかかわらず(この場合は直近に選択した社名がA社・B社のいずれかであろうとも) 入力済みのデータ(「木村」「佐藤」)がフォームに表示されるようにしたいのですが 何か良い方法はないでしょうか? 出来れば入力専用と読み取り専用のフォームを2つ使用するのではなく、1つのフォームで事足りればありがたいのですが・・・

  • 空白があるとクエリで表示されない

    アクセスで設備の修理履歴を管理するデータベースを作成しています。 修理履歴テーブルがあり、その他、 実施区分、設備、修理タイプ、 処置区分、トラブルコードはそれぞれテーブルを作成し、 リレーションシップを組んでいます。 T_修理履歴 修理ID(オートナンバー) 発生日 実施区分ID 担当者 設備ID 作業時間 修理タイプID 処置区分ID トラブルコードID T_実施区分 実施区分ID  001   002 実施区分名  実施済 未実施 T_修理タイプ 修理タイプID  001  002 修理タイプ  突発  予防 他のテーブルも同様に作成しています。 修理依頼を受け、修理ID~設備IDまでを入力、 修理を実施した後、作業時間~トラブルコードまでを入力する形式を 取りたいのですが、作業時間から下が空白のままだと、 未実施データを抽出するクエリを作成しても、 データが表示されません。 リレーションシップに問題があるのでしょうか? ご指導よろしくお願い致します。  

  • Access コンボボックスを使って抽出

    Access2000・Windows2000を使用しています。 レコードの抽出をしたいと思います。テーブルは1つ、フィールドには日付・商品名・業者名・単価・・・とあります。フォームで「商品名から抽出(コンボボックスから商品を1つ選ぶ)」または「業者名から抽出(コンボボックスから業者を1つ選ぶ)」(コンボボックスから商品を1つ選ぶ)出来るようにし、なおかつ今月のレコードのみ表示させたいのですが、まずそのテーブルを1つ作成した時点でつまづいてしまっています。 どなたかご教授お願いします。

  • ACCESS2000の帳票フォーム詳細欄でのコンボボックスについて

    まずは現状から説明します。 以下のテーブルがあります。 [細分類マスタ] 細分類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です。 現在納期に追われて非常に困っています。 表現がわからないところは突っ込んでください。すぐに補足します。 よろしくお願いします。