• ベストアンサー

accessでオートコンプリート機能みたいな

access2002です。 データ入力時に、1文字か2文字を入力するだけで それに適合したデータのみを出すようにしたいと思っています。リストもコンボボックスでも、データの数が多いんです。 クエリの抽出条件に Like "*" & [検索したい文字を入力] & "*"  と入れました。 1個のデータだとうまくいきました。 次の人のデータ時にうまくいかなかったので、データ更新をしました。 すると、パラメータの入力の窓がでますが、文字がみえません。かまわず打ち込むと、文字は出ないのに、認識しているらしく、適合したリストがでます。 文字はどうしたらでますか。 また、こういったデータの件数が多い場合は、このやり方でいいのでしょうか。 教えてください。

  • mk0326
  • お礼率73% (145/198)

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

  • ベストアンサー
  • hamha
  • ベストアンサー率61% (83/135)
回答No.5

>はい、likeを使って、「先頭文字にかぎらず、文字を入れると、コンボボックスの中のものがでる。」 >って言うのが理想です。 コンボボックスに特定の文字を入力確定後、カーソル下矢印キーを押すと、 特定文字を含んだデータのみコンボボックスでプルダウウン表示される。 そのプルダウン表示から最終的に欲しい1つのデータを選択する。 このような動作をご希望でしょうか? そうであれば下記設定にて可能です。 **************************************************** コンボボックスがあるフォーム(フォーム1 とします)のプロパティ キーボードイベント取得:はい **************************************************** コンボボックスの設定(コンボ0 とします) 値集合タイプ:テーブル/クエリ 値集合ソース: SELECT T_商品.品名 FROM T_商品 WHERE (((T_商品.品名) Like "*" & Forms!フォーム1!コンボ0 & "*")); 入力チェック:いいえ 自動拡張:いいえ ****************************************** イベント 更新後処理 Private Sub コンボ0_AfterUpdate() Me.コンボ0.Requery End Sub キークリック時 Private Sub コンボ0_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyDown Then Me.コンボ0.Dropdown End If End Sub ****************************************************

mk0326
質問者

お礼

hanmaさん。 ありがとうございました。 できました~。

mk0326
質問者

補足

すみません。 hamhaさんでした。

その他の回答 (4)

  • onakagoo
  • ベストアンサー率45% (5/11)
回答No.4

ただし、これは、コンボボックスの中に表示されるのではなく、一覧表示される表にフィルターがかかるものですけど。。。

  • onakagoo
  • ベストアンサー率45% (5/11)
回答No.3

う~ん、likeを使用しての実現は無理っぽい気がします。 フィルターと関数を使用すれば、簡単に実現できます。 テキスト入力フィールド(検索したい文字)の「更新後処理」などに下記のVBAを記述します。 DoCmd.ApplyFilter , "instr([テーブル1]![文字一覧],forms![フォーム1]![検索したい文字]) <> 0"

  • onakagoo
  • ベストアンサー率45% (5/11)
回答No.2

う~ん、どういうことを実現されたいのかよく分からないので、何とお応えしたらよいか!? もう少し具体的にご質問ください。 likeを使用して同じ機能を実現されたいのですか? それとも、likeでできる様々なあいまい検索をさせて、入力制御をさせたいのですか?

mk0326
質問者

補足

onakagooさん、何回もすみません。 実は、access やっては、やめ、また、やる・・って調子でなかなか進みません。 お手数かけます。 はい、likeを使って、「先頭文字にかぎらず、文字を入れると、コンボボックスの中のものがでる。」 って言うのが理想です。

  • onakagoo
  • ベストアンサー率45% (5/11)
回答No.1

まさに、オートコンプリート機能を使用されてはどうでしょうか? アクセスで言うオートコンプリート機能は「自動拡張」です。 これを「はい」に変更。 それとも、これでは何か問題があるのでしょうか?

mk0326
質問者

お礼

ありがとうございます。 できるんですね。 欲を言えば、ついでにlikeを使って、同じようなのを先頭には、だせますか?

関連するQ&A

  • Accessの使い方

    データの抽出条件をフォームで作成しクエリを実行させたいのですが、以前教えていただいた抽出条件に Like"*"&Nz([Form].[コンボボックス名],"*")&"*"を入力 するとのことでしたが、うまくいきません。 何が違うのかな? また、パラメーターの入力メッセージが表示されないようにしたいのですが、教えて下さい。

  • Accessでデータベースを作っています。

    Accessでデータベースを作っています。 先日、こちらで質問をさせていただいて、クエリで複数のフィールドを対象にデータを検索する ことはクリアできました。 ありがとうございました。 ご指導に基づき、4つのフィールド(仮にA,B,C,D)について、クエリの抽出条件に  Like "*" & [Aを入力] & "*"  Like "*" & [Bを入力] & "*" ・・・ とそれぞれ設定してパラメータ入力を求め、4つの条件すべて、または一部のみ設定して検索し、 正しい検索結果が得られました。 今度は、検索用のフォームを作成し、フォームで入力した条件をクエリに送って、同じ結果を 得たいと思うのですが、以下の方法では正しい検索結果が出てきません。 ・フォームに検索用のボックスをA~Dまで4つ作成(ひとつはコンボボックス、あとはテキスト) ・クエリの抽出条件に、それぞれ以下を入力     Like "*" & [Forms]![Q_form(作成したフォームの名前)]!                       [A(それぞれの検索ボックスの名前)] & "*" ・フォームに「クエリの実行」のコマンドボタンを配置 パラメータで入力する代わりにフォームを使いたい、というものなのですが(パラメータ入力 よりも、コンボボックスを使って値を選ぶ方が検索する人には使いやすいかと思って)、どうしたら うまいこといきますでしょうか。。 教えてください。

  • ACCESSのフォーム操作で、パタメータ入力画面が出てしまします、絞込み

    テーブル→クエリ→フォームで データを表示するロジックです グループ毎に絞込みする為に、 コンボboxを設け、そこにグプープを入れるように作りました。 そのコンボboxにデータを入れ、エンターキーを押した とたんに、 「パラメータ入力/me.コンボ1/[入力の窓]/OK、キャンセル」・・・と出ます コンボboxにはもうデータを入れてあり 「パラメータ入力」の窓は出したくないのですが、 設定した情報は フォームのプロパティのフィルターに 営業所No = [コンボ1] と入れました また、コンボ1のプロパティに更新後処理に 下記のコードを入れました Me.filter = "営業所No = [Me].[コンボ1]" 以上でわかるでしょうか よろしくおねがいします

  • Access2000のサブフォームで…

    今、サブフォームにデータを入力する時に、コンボボックスを使ってリストから入力させたいと思っています。 それで、サブフォームにコンボAとコンボBを作成しました。コンボAで選択した項目を条件として、コンボBのリストとして使用する値を抽出したいのです。 コンボAの更新後処理でコンボBを再クエリさせるVBAを組んでみたのですが、エラーメッセージが出て実行されません。 サブフォームを単独で表示させている時にはこのVBAが実行されるのに、親フォーム内のサブフォーム上では動かなくなってしまうんです。 どのたか、解決策を教えてください。お願いします!!

  • オートフィルターのような機能をフォーム上で VBA

    いつも大変お世話になっております。 Excel2003を使用しております。 フォーム上で、オートフィルターのような機能を作りたいと思っています。 http://okwave.jp/qa/q8423348.html 過去の質問のプログラムを何度も使わせて頂いております。 フィルターをかけたら、可視セルを抽出し、コンボボックスに登録…ということを しています。 フォーム上のコンボボックスが変更されたら フィルターをかけ、コンボボックスのリストを更新するようにしていますが、 更新したときに、またフィルターをかけてコンボボックスを更新してしまい どうしたら上手く処理がいくのか分からなくなってしまいました。 現状、 Combobox1_Changeのとき、  If Combobox1<>"" Then   フィルターをかける   コンボボックスのリストを抽出する   コンボボックスを更新する  Else   フィルターを全開にする   コンボボックスのリストを抽出する   コンボボックスを更新する  End if こういった手段をとっています。 しかし、このままですとコンボボックスを更新するときに 毎回フィルターが全開?になってしまいます。 何か良い方法があれば、教えて下さい。 よろしくお願い致します。

  • ACCESSでコンボボックスが作れません

    ACCESS2000のフォーム内に抽出クエリを元にしたコンボボックスを作成しようとしているのですが、「1つ以上の必要なパラメータの値が設定されていません」と表示され作成できません。元になる抽出クエリを開くと、コンボボックスに表示したいデータが表示されているのですが、上記エラーがでてコンボボックスが作成できない状態です。どなたか解消方法がおわかりの方教えてください。宜しくお願いします。

  • クエリの抽出条件

    クエリの抽出条件を手入力では無く、コンボボックス方式で プルダウンでリストを選びたいと思い下記の抽出条件を入力 [Forms]![フォーム名]![コンボ名] しかし、パラメータ入力時の名前が、Forms!フォーム名!コンボ名と変わるのみで プルダウンになりません クエリを過去のデータ検索のみで使用したいと思ってます。 ネットをくぐると、メインフォームを開いてとありますが、それでも駄目です。 また、クエリー検索だけで、メインフォームを開かないでプルダウン方式には 出来ないものでしょうか よろしくお願い致します

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • access クエリコンボボックスについて

    フォームのメニュー画面でレポート印刷ボタンを作りました。 印刷ボタンを押すと[抽出する都道府県は?] とパラメーター入力が表示されるようにしてあるのですが、 それを入力式ではなく、コンボボックスにして選択式にしたいのですが、 どのようにすれば良いのでしょうか? コンボボックスにマクロをつけて クエリの抽出条件のところに[forms]![フォーム名]![コンボ名] を入力しても、実行したときになにも抽出されません。 なにがどのように違っているのでしょうか? 説明が分かりにくくて申し訳ないのですが、 わかる方いらっしゃいましたらぜひ教えていただきたいです。 よろしくお願いいたします。

  • アクセスでクエリーによる抽出方法

    アクセスの超初心者です。 クエリーのデータをフォームのコンボボックス等のデータを選ぶことにより抽出したいのです。クエリーの抽出条件にフォームのコンボボックスを割り当てて抽出することはできるのですが、例えばクエリーデータは下記のようになっています。  A  B  石川  100 東京  200   沖縄  150 フォームのコンボボックスで石川を選べば  "石川" "100"と表示できますが、コンボボックスに”すべて”という項目をつけてその”すべて”をクリックするとクエリーが全表示になるようにしたいのです。(そのクエリーにはすべてという項目はない) 長くなりましたがおわかりいただけたでしょうか。よろしくお願いします。 また、クエリーを使わず別の抽出方法がありましたら教えてください。というのもいろいろな抽出条件をするのにそのつどクエリーを作らなければならないからです。よろしくお願いします。