• ベストアンサー

Accessのフォーム(コンボボックスで表示させるものを変える)

いつも本当お世話になっております。 またまた、お助けいただきたく 投稿させていただきました。 すみません。Accessのフォーム内のコンボボックスにて レコードソース 従業員Tで、 すでにやめてしまった人(Yes/No)に チェックがある人をコンボボックスで新規に選択する時には非表示にしたいのです。 但し、履歴(昔のデータ)には、表示させたい。 のですが、VBAでしかできないかも? とおもっており、勉強したのですが、 回答にたどり着けず困っています。 どうか、よろしくお願いいたします。

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

  • ベストアンサー
  • syasushi
  • ベストアンサー率27% (226/837)
回答No.7

まず、「新規入力」と「過去データ参照」の条件を分けるためのコンボボックスを作ります。仮に「処理」と名づけます。 氏名、担当を表示させるコンボボックスを「担当」と名づけます。 「新規入力」を選択したときには、退職者は表示させない。 「過去データ参照」を選択したときには、全データを表示。 Private Sub 処理_AfterUpdate() If Me!処理="新規入力" Then Me!担当.RowSource = "SELECT 氏名, 担当 FROM 従業員T WHERE 退職=False;" else Me!担当.RowSource = "SELECT 氏名, 担当 FROM 従業員T;" end if End Sub

その他の回答 (6)

回答No.6

サンプルの内容ではまだ、勘違いがありましたでしょうか?

totis
質問者

お礼

wakaranai_kun様 本当ご丁寧に教えていただきありがとうございました。 私の説明が分かりにくくて申し訳ありません。 ボタンで切り替えではなくて、 syasushi様に教えていただいた方法で 解決いたしました。 ありがとうございました。

回答No.5

もし、先の解釈で正しいとしたら、、、 コマンドボタンを2作ってください。それぞれを command1 と command2 とします。 そして、コンボボックスを combo とします。 で、コマンドボタン2つに次のプロシージャーを書いてください。 Sub command1_Click() '現社員モード Me![combo].RowSource = "SELECT 氏名, 担当 FROM 従業員T WHERE 退職=False;" End Sub Sub command2_Click() '全員モード Me![combo].RowSource = "SELECT 氏名, 担当 FROM 従業員T;" End Sub

回答No.4

> 昔のデータには退職した人の名前と担当をフォームで表示させますが、新規データ(これから入力する)には、 この意味がわからないのですが、、これは昔のデータ入力モード、新規データ入力モードがあって、そのモードを手動で選択した時に、、あなたが望む条件で、退職者を表示したり非表示にしたりしたい、、ということでしょうか?

totis
質問者

補足

なかなか伝わりにくくてすみません 新規入力可能のフォームがあります。 昔のデータは入力しません。 昔のデータは参照したいだけです。 参照する時に退職者の方の名前も表示するという意味です。 よろしくお願いします。

回答No.3

1)[退職]欄にチェックがあるものを省いてコンボボックスには表示させたいのです。 2) 退職した人たちの名前がでなくなってしまいます。 1)は現職を表示したいという条件、2)は退職した人を表示したいという条件、これを同時に1つのコンボボックスでは実現できません。 必要とするものをまとめてください。 [ID]-[氏名]-[担当]-[退職] [001]-[Aさん]-[経理]-[○] [002]-[Bさん]-[製造]-[-] [003]-[Cさん]-[製管]-[-] [004]-[Dさん]-[品管]-[○] [005]-[Dさん]-[開発]-[○] こういったコンボボックスがいるのでしょうか? >退職した人をコンボボックスに出さずに、 >昔のデータに名前だけを出したいのですが。 昔のデータはどのテーブルにあって、名前をどこに出したいのでしょうか?コンボボックスに出すのであれば、、そのコンボボックスを右クリックして、 [プロパティー]-[書式]-[列数] [プロパティー]-[書式]-[リスト巾] で設定します。 たとえば、、[ID][氏名][担当][退職]と出したいなら、 列数 4 リスト巾 2;5;3;2 (4列分) とか設定します。

totis
質問者

補足

wakaranai_kunさん すみません。お付き合いいただきありがとうございます。 やりたいことは、 勤務表_T(フォーム作成)に勤務状況を表示させます。 コンボボックスに表示させるのは”氏名””担当”です。 昔のデータには、 退職した人の名前と担当をフォームで表示させますが、新規データ(これから入力する)には、 退職した人をコンボボックス内に入れてあると目障りなので非表示にしたいです。 こんな感じなので、VBAで もし、新規データ入力時には退職=falseそうでなければ退職=Trueとしたいのですが、 どんな風に書けばいいのか分からず困っております。 すみませんがよろしくお願いいたします。

回答No.2

SELECT 従業員T.ID, 従業員T.氏名, 従業員T.担当, 従業員T.退職 FROM 従業員T WHERE (((従業員T.退職)=False)); 値集合ソースをこれに書き換えてみてください。

totis
質問者

補足

wakaranai_kunさん。回答いただきありがとうございます。 教えていただいたようにすると、退職者以外の人がコンボボックスにでてくるのでそれはOKなんですが、 退職した人たちの名前がでなくなってしまいます。 退職した人をコンボボックスに出さずに、 昔のデータに名前だけを出したいのですが。 どうぞよろしくお願いします。

回答No.1

履歴と名前は同一テーブルにあるんですか? そうか、別にあって、名前を選択すると別テーブルから履歴が呼び出されてくるのですか? また、テーブルにはどんなフィールドがどんな形であり、コンボボックスにもどんなフィールドがあるか書いた方がいいと思います。 従業員Tはテーブルであって、クエリーとかそういったものではないのですよね?

totis
質問者

補足

どうもすみません。説明不足で失礼いたしました。 クエリはありません。 テーブルの項目は、 [ID][氏名][担当][退職]です。 [退職]欄にチェックがあるものを省いてコンボボックスには表示させたいのです。 すみません。よろしくお願いいたします。

関連するQ&A