質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

2758閲覧

Access フォーム コンボボックスによる絞り込みを、レコード単位で行いたい

ryoya_access

総合スコア34

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/08/05 04:00

コンボボックスによる絞り込みを、レコード単位で行いたい

Access(2007-2016)で勤怠管理DBを作成しています。

2つのコンボボックスによる絞り込み機能(参考:https://www.accessdbstudy.net/entry/20080515/p1)を実装中なのですが、思うように動作しないため、こちらで質問させていただくことにしました。

概要

サブフォーム付きのフォームで、従業員が日々の勤怠情報(氏名、出社日、出社時間、退社時間)と、その稼働内容を入力するフォームを作成しています。

注目していただきたい箇所はサブフォームの、列名が「クライアント名」「タスク名」となっているコンボボックスです。ここでは、入力されたクライアント名に応じて、そのクライアントと契約しているタスク名のみが「タスク名」コンボボックスに表示されるようになっています。

イメージ説明

クライアント名とタスク名の対応は以下のようになっています。クライアントは○○広告、○○商事、○○電気の3社で、タスクは業務AEの5つが存在しています。○○広告からは業務AE全て、○○商事からは業務B,C、○○電気からは業務D,Eの契約を受けています。

イメージ説明

例えばフォームの「クライアント名」コンボボックスに「○○商事」と入力すれば、その右の「タスク名」コンボボックスには○○商事が契約しているタスク「業務B」と「業務C」の2つだけが表示されます。

イメージ説明

ここで問題なのが、サブフォームで2つ以上のクライアント名の違うレコードを追加しようとすると、後から入力したクライアントが契約しているタスク名しか表示されなくなり、それ以前に入力したタスク名に影響が出てしまう点です。

例)
サブフォームで、クライアント名「○○電気」と入力すると
イメージ説明
「○○電気」が契約している「業務D」「業務E」しかタスク名に表示されなくなり、それまでに入力していた「○○商事」の「業務B」、「○○広告」の「業務A」が表示されなくなってしまう。
イメージ説明

このコンボボックスによる絞り込みを、レコード単位(右にあるタスク名にのみ適用させる)で行う方法はないのでしょうか?

お力をお貸しいただきたいです。よろしくお願いいたします。
以下、テーブルやリレーションの詳細を載せておきます。

詳細

イメージ説明

1.顧客テーブル---------------
顧客ID:オートナンバー
顧客名:短いテキスト

顧客ID 顧客名
1 ○○商事
2 ○○広告
3 ○○電気

2.受注明細テーブル-------------
顧客ID:数値
タスクID:数値
契約月:日付
予算額:数値

顧客ID タスクID 契約月 予算額
1 2 2020/07/01 200
1 2 2020/08/01 200
1 3 2020/07/01 300
1 3 2020/08/01 300
2 1 2020/07/01 10
2 1 2020/08/01 10
2 2 2020/07/01 20
2 2 2020/08/01 20
2 3 2020/07/01 30
2 3 2020/08/01 30
2 4 2020/07/01 40
2 4 2020/08/01 40
2 5 2020/07/01 50
2 5 2020/08/01 50
3 4 2020/07/01 40
3 4 2020/08/01 40
3 5 2020/07/01 50
3 5 2020/08/01 50

4.タスクテーブル----------------
タスクID:オートナンバー
タスク名:短いテキスト

タスクID タスク名
1 業務A
2 業務B
3 業務C
4 業務D
5 業務E

5.勤怠テーブル----------------
勤怠管理No:オートナンバー
社員ID:数値
出社日:日付
出社時間:日付/時刻
退社時間:日付/時刻

勤怠管理No 社員ID 出社日 出社時間 退社時間
1 1 2020/07/02
2 2 2020/07/02
3 3 2020/07/02
4 1 2020/07/03
5 2 2020/07/03
6 3 2020/07/03
7 4 2020/07/03
8 5 2020/07/03
9 3 2020/07/07

6.稼働テーブル------------------
稼働管理No:オートナンバー
勤怠管理No:数値
受注No:数値
タスクID:数値
稼働時間:数値

稼働管理No 勤怠管理No 顧客ID タスクID 稼働時間
1 1 1 3 4
2 1 1 2 5
3 1 3 5 2
4 2 1 2 3
5 2 2 1 3
6 3 3 5 2
7 4 3 4 10
8 5 3 4 6
9 5 1 3 7
10 6 1 2 8
11 7 2 5 9
12 7 3 4 4
13 8 3 4 3
14 9 3 5 4

7.社員テーブル------------------
社員ID:オートナンバー
社員名:短いテキスト

社員ID 社員名
1 一郎
2 二郎
3 三郎
4 四郎
5 五郎

以上のテーブルのうち、「勤怠テーブル」と「稼働テーブル」を用いて、勤怠登録用のサブフォーム付きフォームを作成しました。メインフォームを「F_勤怠」、サブフォームを「F_稼働」としています。

サブフォームの列名「クライアント名」のコンボボックスを「cmb_クライアント名」とし、クエリで以下のような抽出条件を指定しています。

イメージ説明

[forms]![F_勤怠]![F_稼働].[Form]![cmb_クライアント名]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

リンク先は非連結のコンボボックスの場合ですね。

帳票フォーム上の連結コンボボックスの場合は、もう少し複雑になります。
下記の私の回答を参考にしてください。

Access - Accessコンボボックスについて|teratail

下記に上記の回答用のサンプルファイルもおいてあります。

帳票フォームでコンボボックスのリストを制限する方法 Microsoft Access 掲示板 - zawazawa

投稿2020/08/05 04:53

編集2020/08/05 04:54
hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryoya_access

2020/08/05 07:25

回答いただきありがとうございました。コンボボックスを重ねて表示するとは…面白いですね。勉強になりました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問