Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルコンボボックスで抽出
記事No171811
投稿日: 2017/05/09(Tue) 13:03
投稿者JS
解決済: ON
OS:Windows7
Access Version:2003

すみません、教えてください。

在庫管理表なのですが商品ごとのフォームがあり
サブフォーム(一覧)に使用履歴を入力していく形のものです。

そのサブフォームに使用者欄があります。
コンボボックスで選択する形ですが、リストが長くなりすぎたため
在籍している者だけを表示したくクエリの抽出条件を追加しました。
(使用者テーブルに在籍と言う項目を作り、○が入力されている者のみ表示)

コンボボックスのリストは思い通りに表示されるようになったのですが
過去の一覧の使用者欄も現在在籍していない者の箇所がすべて空白になってしまいました。
過去に入力したものはそのまま表示しつつ、コンボボックスでは在籍者だけ表示することは可能でしょうか?

よろしくお願いいたします。

タイトルRe: コンボボックスで抽出
記事No171812
投稿日: 2017/05/10(Wed) 05:10
投稿者tkwan
解決済: ON
> 過去に入力したものはそのまま表示しつつ、コンボボックスでは在籍者だけ表示することは可能でしょうか?

コンボボックスの値集合ソースとサブフォームのレコードソースに、同じクエリを使っていませんか?

タイトルRe^2: コンボボックスで抽出
記事No171816
投稿日: 2017/05/10(Wed) 13:15
投稿者JS
解決済: ON
tkwan様

おっしゃる通り同じクエリを使っています。
別のクエリを作って試してみます。
ありがとうございます。


hatena様

おっしゃる通り、2列でコード列を0cmで非表示にしています。
引き続きよろしくお願いいたします。

タイトルRe^2: コンボボックスで抽出
記事No171819
投稿日: 2017/05/10(Wed) 15:45
投稿者JS
解決済: ON
tkwan様

> > 過去に入力したものはそのまま表示しつつ、コンボボックスでは在籍者だけ表示することは可能でしょうか?
>
> コンボボックスの値集合ソースとサブフォームのレコードソースに、同じクエリを使っていませんか?

すみません、よく見たらサブフォームのレコードソースには違うクエリを使っていました。

タイトルRe: コンボボックスで抽出
記事No171813
投稿日: 2017/05/10(Wed) 10:16
投稿者hatena
解決済: ON
> 在庫管理表なのですが商品ごとのフォームがあり
> サブフォーム(一覧)に使用履歴を入力していく形のものです。
>
> そのサブフォームに使用者欄があります。
> コンボボックスで選択する形ですが、リストが長くなりすぎたため
> 在籍している者だけを表示したくクエリの抽出条件を追加しました。
> (使用者テーブルに在籍と言う項目を作り、○が入力されている者のみ表示)
>
> コンボボックスのリストは思い通りに表示されるようになったのですが
> 過去の一覧の使用者欄も現在在籍していない者の箇所がすべて空白になってしまいました。
> 過去に入力したものはそのまま表示しつつ、コンボボックスでは在籍者だけ表示することは可能でしょうか?

コンボボックスの連結列を非表示にして、それ以外の列を表示していませんか。

例えば、
値集合ソースのフィールドが、社員コード、社員名 で、
連結列が 1
列数が 2
列幅が 0cm
という設定だと、
コントロールソースのフィールドに格納されるのは、社員コード だが、表示されるのは、社員名
ということになります。

この場合は、値集合ソースに抽出条件を設定すると、条件外のデータは表示されません。

もしこの状況なら対処法はありますので、申し出てください。

タイトルRe^2: コンボボックスで抽出
記事No171817
投稿日: 2017/05/10(Wed) 14:22
投稿者hatena
解決済: ON
> おっしゃる通り、2列でコード列を0cmで非表示にしています。

この場合、
コントロールソースの値(既に退職した人の社員コード)が、
リストにないので2列目の社員名を表示することはできなくなるのは、
理解できると思います。


では、どうするかというと、退職者を除いたリストのコンボボックスと
抽出条件を設定していないリストのコンボボックスを重ねて配置して、
表示を切り替えるようにします。

具体的には、下記の手順で。

詳細セクションにコンポポックスを2つ配置します。

一つは、

名前 cb使用者
コントロールソース SELECT 使用者コード、氏名 FROM 使用者;
連結列 1
列数 2
列幅 0cm
タブストップ いいえ


もうひとつは、

名前 cb使用者_在籍
コントロールソース SELECT 使用者コード、氏名 FROM 使用者 WHERE 在籍="○";
連結列 1
列数 2
列幅 0cm
タブストップ はい

cb使用者_在籍 の上に cb使用者 をピッタリ重ねて配置します。

cb使用者 のフォーカス取得時のイベントプロシージャを下記のように記述します。

Private Sub cb使用者_Enter()
    Me.cb使用者_在籍.Setfocus
End Sub


このようにすることで、通常は、cb使用者 が前面に表示されので、退職者名も表示されて、
cb使用者_在籍 にフォーカス移動することで、cb使用者_在籍 が前面に浮き出てきて、
在籍者のみのリストで選択できます。

タイトルRe^3: コンボボックスで抽出
記事No171820
投稿日: 2017/05/10(Wed) 17:02
投稿者JS
解決済: ON
hatena様

現在使っているコンボボックスを削除し
教えていただいた通りに設定してみました。
サブフォームの一覧列の後ろに「cb使用者_在籍」「cb使用者」の2列が追加されましたが
コンボボックスのリストには何も表示されませんでした。
また過去の使用者一覧も空欄になっています。

すみません、本当に独学の初心者なのでよくわかっていなくて申し訳ないのですが

使用していたコンボボックスの値集合ソースはクエリを使っていました。
そのうえで、
列数2、列幅0cm;2cm、連結列1となっています。
それが問題でしょうか?

タイトルRe^4: コンボボックスで抽出
記事No171821
投稿日: 2017/05/10(Wed) 18:49
投稿者hatena
解決済: ON
> 現在使っているコンボボックスを削除し
> 教えていただいた通りに設定してみました。
> サブフォームの一覧列の後ろに「cb使用者_在籍」「cb使用者」の2列が追加されましたが
> コンボボックスのリストには何も表示されませんでした。
> また過去の使用者一覧も空欄になっています。

ひょっとして、帳票フォームではなく、データシートビューですか。
だとしたら、私の回答の方法は無理です。
というか、データシートビューでコンボホックスのリストを制限するのは無理です。

帳票フォームに変更はできませんか。

タイトルRe^5: コンボボックスで抽出
記事No171822
投稿日: 2017/05/11(Thu) 14:18
投稿者JS
解決済: ON
> ひょっとして、帳票フォームではなく、データシートビューですか。
> だとしたら、私の回答の方法は無理です。
> というか、データシートビューでコンボホックスのリストを制限するのは無理です。

データーシートです。
制限するのは無理なんですね…
すみませんでした、どうもありがとうございました。

> 帳票フォームに変更はできませんか。

仕事上で使うので変更はちょっと難しいのですが、
試しにサブフォームを帳票フォームに変更してやってみました。
やはりリストも過去入力分も空白になってしまいました。
私のやり方が間違っているのかもしれません…

私の説明不足でお手間をおかけして大変申し訳ありませんでした。
どうもありがとうございました!

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る