Microsoft Access 掲示板

フォームの抽出結果のみをコンボボックスでさらに絞り込みたい / 4

37 コメント
views
4 フォロー
4
hiroton 2021/06/24 (木) 13:07:34 修正 79b19@f966d

※名前の提示がないモノもあるので適当に読み替えてください

「従業員リストのフォーム」にテキストボックス「抽出用カナ」を配置します
「従業員リスト」テーブルを元にクエリ「Q従業員抽出」を作成します

フィールド:氏名苗字カナ
テーブル:従業員リスト従業員リスト
並べ替え:
表示:
抽出条件:Like [Forms]![従業員リストのフォーム]![抽出用カナ]

「従業員リストのフォーム」にコンボボックス「従業員コンボボックス」を配置し、以下の設定にします

値集合ソース|Q従業員抽出
値集合タイプ|テーブル/クエリ

各ボタンの埋め込みマクロに次のようにアクションを追加します

プロパティの設定
 コントロール名 抽出用カナ
   プロパティ 値
       値 [ア-オ]*

再クエリ
 コントロール名 従業員コンボボックス

プロパティの設定はそれぞれのボタンに合わせて変更してください

通報 ...
  • 7

    hiroton さんありがとうございます。
    まず私にもわかるかもしれないこのパターンでやってみようと取り組んでいますが、
    質問させてください。
    テーブルに「抽出用カナ」に該当するフィールドがなく、「苗字カナ」とは別にそれを設ける必要があるということでしょうか?

  • 8
    hiroton 2021/06/25 (金) 17:17:55 e9544@f966d >> 4

    テーブルのフィールドは必要ないですよ

    フォームデザインツールコントロールの中からテキストボックスを選んでフォーム上の適当な場所に配置し、「テキスト ボックス名を指定してください。」のとこで「抽出用カナ」と入力します

    これで、フォームのデザインビュー上でテキストボックスに「非連結」と表示された名前プロパティが「抽出用カナ」のテキストボックスが配置できます


    配置済みの適当なテキストボックスをコピー&ペーストしてコントロールソースプロパティを「」(削除)、名前プロパティを「抽出用カナ」と変更してもかまいません。コントロールソースプロパティがないテキストボックスはデザインビュー上で「非連結」と表示されます


    このような「非連結」のテキストボックスを配置すると、テーブルのデータに影響しない自由な入力のできるテキストボックスになります。今回は五十音の各ボタンがあって、それぞれで動きを変えたいのでどのボタンを押したのかを覚えておく必要があります。フォームに専用のメモ書きを用意してるという感じです

    10

    ありがとうございます。なんどもすみません。
    教わったそのとおりにやってみましたが、「あ」のボタンを押すと
    「コントロール名"抽出用カナ"が正しくないか、存在しないコントロールを参照しています」とエラーが出ます。

    配置したテキストボックス、作成したクエリ、埋め込みマクロのコントロール名 すべて確認しましたが、抽出用カナとして間違っていないはずなのですが、何がいけないのでしょうか?

  • 11
    hiroton 2021/06/28 (月) 15:25:53 38cf2@f966d >> 4

    間違える手順もなさそうですが念のため
    画像1


    動作チェックとして、「再クエリ」のアクションを削除して実行してみてください。テキストボックスに文字を入力するだけになりますがエラーがでますか?

    次に、テキストボックスの名前とマクロで設定するコントロール名を変更して試してください(たとえば「test1」とか)

    あとは・・・ボタンと非連結のテキストボックスは同じフォームの上にありますよね?

    12

    度々ありがとうございます。コントロール名については、私が変更したし際に書き換えを間違っていたようです。
    再クエリのアクションを削除してみると、「あ」のボタンを押したときには
    「抽出用カナ」のテキストボックスに[アーオ]*と表示され、あ行の方のみ抽出されています。
    ただ、再クエリを追加するとコンボボックスに苗字カナが表示されますが、どれかを選ぶと「型が一致しません」と表示されます。

    ちなみにクエリは
    フィールド   苗字     苗字カナ
    テーブル    基本情報   基本情報
    並べ替え
    表示      チェック
    抽出条件           Like [Forms]![基本情報1]![抽出用カナ]

    このようにしています。
    本当は、コンボボックスに漢字で「苗字」と「名前」を表示させたかったのですが、
    クエリにフィールドを追加すると、もっと変な表示(同一人物の名前が何個も続く)になってしまいました。

    ボタン・テキストボックス・コンボボックスは同一フォームのフォームヘッダーに置いています。

  • 15
    hiroton 2021/06/30 (水) 09:03:57 dbc88@f966d >> 4

    ただ、再クエリを追加するとコンボボックスに苗字カナが表示されますが、どれかを選ぶと「型が一致しません」と表示されます。

    提示の内容はコンボボックスに抽出したリストを表示するまでの方法です。その後の「どれかを選ぶと何かしたい」は特に質問から見受けられないので回答に入れていません

    1. したいこと
    2. 試したこと
    3. その結果(今回は『「型が一致しません」と表示される』ですね)

    これらを合わせて質問してください


    本当は、コンボボックスに漢字で「苗字」と「名前」を表示させたかったのですが

    クエリのフィールドには計算式が使えます。1列目の「苗字」のところを「氏名: [苗字] & [名前]」とすると表示できます


    クエリにフィールドを追加すると、もっと変な表示(同一人物の名前が何個も続く)になってしまいました。

    前提に一般的な話として、今のクエリの場合「苗字」だけなので、例えば従業員リストに

    苗字名前
    鈴木イチロー
    鈴木誠也
    鈴木尚典

    なんてデータがあると、コンボボックスには「鈴木」が3回並んでしまいますね。「氏名: [苗字] & [名前]」とすればある程度は解消しますが、同姓同名問題が起きる可能性は否定できません

    ただ、これはあくまでも「クエリで表示される1行がそのまま表示される」だけでクエリにフィールドを増やしても行数が増えることはありません。クエリの設定に提示していない内容はありませんか?

    例えばグループ化を設定している場合、「苗字」だけのクエリなら「鈴木」はすべて統合されて1行になりますが、「苗字」に加えて「名前」のフィールドも設けると、「鈴木」は共通でも「名前」が違うのでそれぞれ異なる1行になります。そのうえで「苗字」だけを表示するコンボボックスを設置すれば問題の状況になったりします

    16

    何度も申し訳ありません。ありがとうございます。

    "どれかを選ぶと何かしたい"が抜けていました。
    入力フォームは単票フォームです。

    あ のボタンを押すと、苗字カナ がア~オで始まる方を抽出します。※ここは出来ました。
    あ行の方が10名いたとして
    その10名をコンボボックスに反映させて 
    そのコンボボックスから1名を選ぶことで、選んだ方の単票フォームが表示されるようにしたかったのです。

    ただ、やはりaccessの不具合か、私の"何か"が間違っているのか、
    コンボボックスにアンザイ・イトウ・オカダ・アンザイ・イトウ・オカダ・・・・と同じ名前が繰り返されていたかと思いきや、全く表示されなかったりすることがあり、
    今は技術的にも時間的にも、その解決までたどり着けそうにないため、ボタンでの抽出までで使用しています。

  • 17
    hiroton 2021/07/05 (月) 13:04:47 ec1bd@f966d >> 4

    コンボボックスの内容はクエリの1列目と同じです(設定で変わりますが)。直接クエリを開いた場合、1列目は望む内容になっていますか?
    クエリの表示自体がうまくいっていない場合クエリの組み方に問題があります

    コンボボックスにアンザイ・イトウ・オカダ・アンザイ・イトウ・オカダ

    >> 12

    ちなみにクエリは
    フィールド   苗字     苗字カナ
    テーブル    基本情報   基本情報
    並べ替え
    表示      チェック
    抽出条件           Like [Forms]![基本情報1]![抽出用カナ]

    このようにしています。

    とあります。「苗字カナ」の「表示」はチェックなしですよね?表示なし、つまり存在しないデータがコンボボックスに表示されていることになってしまっています。クエリの名前とコンボボックスの値集合ソースの値を確認してください。>> 4では、ともに「Q従業員抽出」とすることにしましたが、実際は何にしましたか?


    続きについては、クエリで正しい(望みの)リストが作れることと、コンボボックスの内容はクエリと全く同じになることが理解できないと実装できない部分なのでまずはここまでで見直しをしてください

    18

    再度確認しました。
    クエリの名前も、コンボボックスの集合値ソースも Q従業員抽出 にしています。
    合っているはずなのですが・・・。
    ただ、今回はカタカナの名前が繰り返されるのではなく、コンボボックスの中は空白になってしまいました。

    画像1
    画像2
    画像5
    画像3
    画像4

  • 20
    hiroton 2021/07/07 (水) 08:31:14 5e9eb@f966d >> 4

    「Q従業員抽出」を直接開いて内容を確認してみましたか?

    クエリでほしいリストがきちんと作れているか確認しましょう。フォームとの連携はひとまずおいといて抽出条件を変更して確認してみてください

    Like [Forms]![基本情報1]![抽出用カナ]
    ↓
    Like "[ア-オ]*"
    

    これでクエリを開くと、「あ」のボタンを押したときにコンボボックスに表示したい内容になりますか?

    21

    書き換えてみました。クエリの結果は、漢字で、あ行ではありますが、
    太田・岡田・安西・石川・伊藤・太田・岡田・安西・石川・伊藤・太田・岡田・安西・石川・伊藤・・・・というふうに、同じ方の名前が何度も(100回以上)繰り返されています。

  • 23
    hiroton 2021/07/09 (金) 12:11:48 1392b@f966d >> 4

    コンボボックスで起きているそのほかの不具合「苗字カナの内容(カタカナ)が表示される」「データがない」等は起きていないということでいいですか?
    たとえば、「か」のボタンを押したと想定して"[ア-オ]*""[カ-コ]*"に変えてみたり、さらに"[サ-ソ]*"に変えてみたり等、試してみてください

    この、手で書き換えている操作を、フォーム上の値を使って自動で書き換えようというのが

    Like [Forms]![基本情報1]![抽出用カナ]
    

    の目的です。抽出条件を再度Like [Forms]![基本情報1]![抽出用カナ]に設定して、今度はフォーム上の「抽出用カナ」テキストボックスに手入力で"[ア-オ]*"と入力してクエリを開いてみてください。抽出条件を手入力したとき(Like "[ア-オ]*"と入力したとき)と同じ内容が表示されてますか?


    同じ方の名前が何度も(100回以上)繰り返されています。

    クエリの元データにはどのようなデータ(テーブルorクエリ)を使っているんでしょうか?>> 15で説明していますがクエリのもとにしているデータに複数登録されていれば何度も出てきて当然になります。データベース運用から考えれば「同一人物の重複登録を許さないデータ(テーブル)」があるものと思います。きちんと指定できていますか?

    25

    クエリを Like "[ア-オ]" "[カ-コ]"等に書き換えた場合、名字のカタカナが表示されたり、データがない、ということはありませんでした。
    さらに、Like [Forms]![基本情報1]![抽出用カナ]に戻して、「抽出用カナ」テキストボックスに[ア-オ]*と入れてクエリを開くと、同じように太田・岡田・安西・石川・伊藤・太田・岡田・安西・石川・伊藤・太田・岡田・安西・石川・伊藤・・・・と繰り返されて出てきます。

    もとのテーブルでは、従業員コードを重複なしにしており、実際のテーブルのデータも同姓は一部おりますが、「あ」のボタンを押したときにはフォームには正しい人数で抽出されており、クエリの結果だけが何十回も繰り返されている状況です。

  • 26
    hiroton 2021/07/13 (火) 08:29:32 4339f@f966d >> 4

    クエリの内容でコンボボックスに見られるような異常が起きないのであれば、改めてボタンをクリックしたときの動作を確認してください。

    「あ」のボタンを押す
    →「抽出用カナ」テキストボックスに「[ア-オ]*」と入力される
    →クエリ「Q従業員抽出」を開いて内容を確認する
    →コンボボックスをクリックしてクエリの内容と同じものが表示されるか確認する

    「か」のボタン「さ」のボタンでも同様の確認をする

    ひとまずこれでフォームの作り、マクロの設定に異常がないか確認できます


    クエリの結果が望んだ内容になっていないことは少し問題がずれるのでこのツリーからは外して改めて回答しなおします

    28

    上記はボタンに適してテキストボックスに表示され、同時にクエリの内容も同じものが表示されていました。

  • 32
    hiroton 2021/07/20 (火) 17:13:04 a38a5@f966d >> 4

    コンボボックスが空白だということなので改めて設定を確認していきます

    コンボボックスには値集合ソースに「Q従業員抽出」が指定してあります。なのでコンボボックスにはクエリに内容が表示されているはずです

    Q従業員抽出の抽出条件を削除して保存した後フォームを開きなおすとコンボボックスにはクエリと同じ内容が表示されますか?

    これが確認出来たらQ従業員抽出の抽出条件をLike "[ア-オ]*"にして保存しなおした後、フォームを開きなおします。コンボボックスにはクエリと同じ内容が表示されますか?

    このような方法でクエリの内容をコンボボックスに表示することができることが確認できますが正しく動いていますか?