AIと戦って、あなたの人生のリスク診断 >>

ACCESS2003のコンボボックスで入力候補が出ません
先日似たような質問をさせていただきましたが、まだ未解決なのでまた質問させてください。
OSはWindows XP Professional SP3 です。OFFICE2003 Professional SP3 です。
Access2003 sp3 で自作した一覧フォームにコンボボックスを設定しています。
コンボボックスの値集合リストにクエリをあてています。
同じ値のレコードが多数ありますので、リスト表示が重複しないようにクエリで集計しています。
連結列は1つで単純な単語集です。経理の科目を表示しています。
そこに、データを入力しようとして途中まで入力します。例えば、”売掛”と入力した時点でリストに存在する”売掛金”が表示されます。
これは問題ないのですが、他の単語は出ない時があります。
例えば”広告”と入力した時、”広告宣伝費”という単語が登録されているのに出てきません。
調べた結果、リストにある上位50レコードまでが候補に出てきますが、51以下のレコードは出てきません。
ただし、クエリで集計などを使わない単純なリストでは、ちゃんと候補が出てきます。
クエリで集計などを行うと、コンボボックスの上位50レコードまでしか入力候補が出てきません。
ちなみに、まったく同じものをAccess2007で実行したら、ちゃんと全ての候補が出てきます。
sp3以前はこんなことはなかったように思います。
そこで、Access2003 sp3 の修正パッチをあててみたのですが変化ありませんでした。
長文で申し訳ございませんが、誰か解決方法をご存知の方がいらっしゃいましたらご指導お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

私も同じ現象で苦労しましたが、結局はACCESS2003のバグのようです。


マイクロソフトのサポートページです。
http://support.microsoft.com/kb/907391/ja

私は、該当のコンボボックスがフォーカスを取得したときに、イベントでopenになるようにすることでこの問題を回避しています。

ご質問からずいぶん時間が経っているのでもはや解決済みかもしれませんが、ご参考になればと思い、回答させていただきました。

しかし、こんなバグを修正してくれないマイクロソフトって、困ったものですね。
    • good
    • 0

不具合が特定できたものの、確かにはっきりしないですね。



最小限で絞り込みして51以上なるのでしょうか。
リストボックスはどうなんでしょうか。
再クエリ、再描画でも同じでしたか。

実現を考えると、
もう1つ選択クエリかテーブル作成を実施し、50以下に絞り込みした後で、
コンボボックスに表示、かと思われます。
もしくは、コンボボックス表示に拘らないで、
小さいポップアップフォームにでもする。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
私の表現が下手なのでうまくお伝えできていないかもしれません。
再クエリや再描画は入力が確定した後の処理になるので駄目でした。
そもそも、私の言う”入力候補”というのは、コンボボックスで出てくるリスト表示の事ではありません。したがいまして、リストはどんな場合でも表示されます。
私がお伝えしたい現象をもう少し説明させてください。
例えば、エクセルで A列に単語を縦に並べたとします。
その単語は日本語とし、同じ単語も複数あります。
そこで、A列の一番最後のセルにデータを入力するのですが、
この時、すでにA列にある単語を入力しようと途中まで入力したら
A列にすでにある単語が”候補”として表示されると思います。
私の言う”候補”とはこれの事なんです。
それを、Accessのコンボボックスでやろうとしているのです。
クエリで絞り込みや合計をすると、何故かリストに表示される上位50個の単語のみが
候補として出てきます。
テーブルにあるレコードの内容はかなりシンプルにしていますが、結果は同じです。
何よりもAccess2007では、そのような現象が起こらないというのも変です。
他のPCでやってもやはり結果は同じでした。

お礼日時:2010/06/29 11:50

>コンボボックスの値集合リストにクエリをあてています。



できていることとできていないことと明確にしながら、
1つ1つ見直しし、クリアしていくこととしてください。

コンボボックスの値集合リストにテーブル(=条件無し、全件相当)をあててみてください。
それがクリアできたら、クエリにしてクエリデザインから実行する。
それがクリアできたら、コンボボックスをクエリにしてみる。
コンボボックスを操作する直前に再クエリを実行してみる。

基本的な動きと思われますので、sp3は関係ないと思いますし、
sp3対応の中にコンボボックス関連があったか確認してから実施してください。
当てたらうまくいくかも、でうまくいった試し少ないです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
質問前にいろいろ調べていましたが、再度ゼロからテーブルを作りなおして検証してみました。

結果、テーブルに同じテキストデータのレコードがある場合 = 正常に候補で出ました。
   テーブルに同じテキストデータのレコードがない場合 = 正常に候補で出ました。
重複データの有無にかかわらず正常に候補が出ました。

次に、このテーブルを基にしただけのクエリを値集合ソースに適用した = 正常に候補がでました。
   このテーブルを基に集計したクエリを値集合ソースに適用した = 異常がでました。
どうも、クエリで集計すると異常が出るっぽいです。
テーブルにインデックスを設定していても変化ありませんでした。

異常時、何故かリストの並び順で50番目までは正常に候補が出てきますが、51番目以降は候補が出てきません・・・

お礼日時:2010/06/28 11:46

補足要求。


何回も同じような質問をしているが、前とどう違うのか。前のも読んだが、くどくて、答える気がしなかった。質問の内容が判らない。
コンボボックスのアイテムに表示するところの、材料になる基データはどういうデータで、
・抜き出し(余分なものを捨てる)
・Distinct化 (重複出現を1度の出現にする)
が必要(したい)なのかな。>重複しないようにクエリで集計しています、の意味がわからない。
ーー
簡単で少数のデータ例をあげて現状と望むコンボに表示したい結果を例示してはどうですか。
コンボの表示列は複数ですか。

この回答への補足

長文ですみません。現状の説明が難しくて表現に困ってます。
コンボボックスの材料になる基データは、日付データとテキストデータと数値データのテーブルです。
このテーブルには同じ値のテキストデータが複数あります。
このテーブルを基にクエリを作成して、そのクエリを値集合ソースにしています。
何故クエリを作成しているのかというと、このテーブルデータのままでは、日付が違うだけの同じ値のテキストデータが並んでしまい、選択し難いリストになってしまいます。
なので、クエリで数値データを集計してテキスト別にまとめています。
このリストの意味ですが、日常の作業としてテーブルレコードを入力して追加しています。
新規のテキストデータ(リスト外データ)が入力された場合、次回のリスト選択時にはリストに追加されているようにする為です。
コンボの表示列は1つです(テキストデータ)
うまく説明できなくてスミマセン

補足日時:2010/06/27 18:36
    • good
    • 0
この回答へのお礼

いろいろありがとうございました

お礼日時:2010/06/28 16:17

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング