• ベストアンサー
  • 困ってます

Access2003 検索用フォームでの検索がうまくいかない

Access2003 検索用フォームでの検索がうまくいかない とある、テーブルを参照するフォームを作成。 そしてテキストbokを設けて、各項目毎にキーワードを指定してデータを抽出できるようにしたいのですが、 どうもうまくいきません。 検索は出来ているのですが、全部ひっかからないのです。 例えば ID という項目を検索するbox に"1"を入力して ID=1の全データを抽出しようとすると、一部検索にかかってこないものがある という具合です。 テーブルに入力されている数字や文字が本当に一致しているかどうかも調べましたが確かに一致しています。 実際、テーブルを開いて ctr+f で検索すると全てひっかかります。 何が原因なのでしょうか??? 私の作った手順は以下のとおりです。 テーブル作成(エクセルからインポート) ※空白の欄もあります フォーム新規作成でフォーム作成 フォーム上にテキストbox作成 クエリ作成 (Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" ) マクロ作成⇒フィルタ実行/上の手順で作ったクエリを登録 マクロをフォーム上へドロップ およそこのような手順です。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数461
  • ありがとう数6

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

  • ベストアンサー
  • 回答No.1

Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" を Is Null Or Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" にしたらどうなりますか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます! 条件式を変えてみましたが、変わらずです。 困りましたね、う~ん。。

質問者からの補足

あ、いや、だいたいわかりました! 解決しそうです! ありがとうございます!

関連するQ&A

  • Access、検索用フォームでのあいまいな検索

    現在、Accessでデータベース作成をしています。 テーブル:  ・テーブルA          ・テーブルB          (A・B間にリレーションシップ設定) クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成) フォーム   ・検索用フォーム(デザインビューでフォーム作成より)          ・検索結果フォーム(検索クエリを元に作成) また、以下のような設定を入力しました。 「検索クエリ」の抽出欄  Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)  ※検索したい項目、すべての抽出欄に設定済 「検索用フォーム」  検索実行ボタンを作成し、マクロを設定  ・フォームを開く→「検索結果フォーム」  ・フィルタ→「検索クエリ」 上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。 ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも (1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。 2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか?? ご存知の方、ぜひ教えてください。 よろしくお願いいたします。

  • Accessの検索フォームで。

    Accessを使ってデータベースを作成しています。 「テーブル1」があり、これには 名前ID 名前 入力日 チェック項目1 チェック項目2   : とあります。 これをもとに「検索クエリ」を作成しました。 検索クエリの項目は「テーブル1」とまったく同じですが、 すべてを検索するわけではないので ・名前ID  「検索項目なし」 ・名前  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![名前]),[氏名],'*' & [Forms]![検索条件入力フォーム]![名前] & '*') ・入力日  「検索項目なし」 ・チェック項目1  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![チェック項目1]),[チェック項目1],[Forms]![検索条件入力フォーム]![チェック項目1])」 ・チェック項目2  ※上記と同じ。   : としてあります。 この「検索クエリ」をもとに「検索条件入力フォーム」を作成してあります。 名前の欄に「田中」と入力すれば、「田中」がつく人がすべて検索されるというようなカンジになっています。 「テーブル1」に空欄があり、その場合に、検索がうまくいきません。 「検索クエリ」のところですべてに条件を入れればいいのですが、フォームに全てが入っていないので。。。 やはりフォームに「テーブル1」の項目すべてを含め、クエリで条件を入れるべきでしょうか? これが今考えている中では一番手早いようなカンジがするのですが、どうしてもあまりスマートなやり方ではないような気がして。。。 これしかないのであれば、これでやりますが、他にいい方法があれば、教えていただけないでしょうか? あまり上手な文章ではないので、補足要求があれば補足します。 宜しくお願いします。 Ac2000です。

  • Access2002での複数項目検索について

    教えてください。 Access2002でデータベースを作っています。 ふたつのテーブルから選択クエリを作成、そのクエリ内で部分一致のパラメータを設定し、 複数項目(5つ)の検索を行っていましたが、検索のたびに毎回5つのダイアログボックスを クリア(必要項目を入力、入力しないパラメータは「OK」でとばす)するのがめんどくさいと 使用者にいわれ、検索フォームからの検索に変えたいと思っています。 その場合、  (1)選択クエリを基としたフォームを新規作成し、  (2)非連結のテキストボックスを5つ作り、それぞれ適当な名前を付け、  (3)クエリの抽出条件の欄の現在パラメータ設定をしているところを、       [Forms]![フォーム名]![テキストボックス名]に変える だけではできないのでしょうか。。 いろいろWeb上で調べたり、本を読んで見よう見まねでつくってみましたが、出来上がった フォームから検索ボタン(「クエリの実行」ボタン)を押しても、全件が表示されてしまうの です。 パラメータではできているのに・・・。 どなたか、ご教示くださるとうれしいです。 よろしくお願いいたします。

その他の回答 (3)

  • 回答No.4

各項目には特殊な記号、たとえば#記号や <、>、などやこれらの組み合わせなどが 含まれていたりしますか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます! 普通のテキストと数字以外は入力されていませんね~

  • 回答No.3
  • layy
  • ベストアンサー率23% (292/1222)

>実際、テーブルを開いて ctr+f で検索すると全てひっかかります。 クエリにおいて正しく結果が得られていない可能性あります。 クエリデザイン上で実行してみてください。 「(Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" )」 に対してダイアログが表示されると思いますから「1」を指示。 クエリで確認、(マクロで確認、)フォームで確認と 段階を踏んで確認してみてください。 >マクロ作成⇒フィルタ実行/上の手順で作ったクエリを登録 「フィルタの実行」?。 そのクエリをフォームのレコードソースにしていれば、 [テキストbox名]への入力後に「再クエリ」かと思われます。 個人的には、 「フィルタの実行」はうまくいく時といかないときあったりするので あまり使ってないです。

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • imogasi
  • ベストアンサー率27% (4627/16544)

>"1"を入力して ID=1の全データを抽出しようとすると 1と入れたとき、IDが21とか121とかも検索するのですか。 Likeを使う理由が判らない(あまり想像できない)。 もうひとつIDフィールドのデータ型はなに?を質問に書かないと。 IDがオートナンバー型であれば、ワイルドカード*を直接使えないのでは。 新たな列を挿入しで、Str([ID])で文字列化して、その列で Like "*1"のようなのは1,11など出てきたが。 またIDA: [ID] Mod 10と新たに演算フィールド列を作り、条件で1とするなど。 パラメータクエリにして、1を指定するとどうなりますか。*1では?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます! >"1"と入れたとき、IDが21とか121とかも検索するのですか。 ⇒ここの部分(プロジェクトID)が現在1~8までのデータしか存在しませんので、試しにデータを投入してやってみたところ、検索できませんでした。 どうも先にインポートした1~2までは一部検索にかかる 3以降はまったくかからないという状況です。※1~2の部分でもかからないものがあります。 1つのエクセルファイルの別のワークシートからそれぞれのデータをインポートしてきたのですが、全く同じフォームを使って作った表なのに、"先頭行にアクセスで認識できない文字列がある"のようなメッセージが出てインポート出来ない場合がありました。 その時はインポートできた表の先頭行をコピーして貼りなおしてからインポートするとできます。 これは何か関係あるのでしょうか? >もうひとつIDフィールドのデータ型はなに? >新たな列を挿入しで、Str([ID])で文字列化して、その列で Like "*1"のよう>なのは1,11など出てきたが。 >またIDA: [ID] Mod 10と新たに演算フィールド列を作り、条件で1とするど。 >パラメータクエリにして、1を指定するとどうなりますか。*1では? プロジェクトID フィールドは "数値型"です。 ちなみに別途、データ登録IDという主キーに利用しているフィールドがあり、ここはオートナンバーになっています。 このフィールドに対する検索でも、やはり一部検索できないものがあるのですが、どうも検索にかかっててくるのがプロジェクトID部分が1~2のものだけなんです。※ご説明いただいたどの方法でもやはりプロジェクト1~2だけがかかります。 インポート元のエクセルのワークシートはプロジェクト毎に作っているので、もしかしてデータのインポートの段階に何か、原因があるのでしょうか??

関連するQ&A

  • Access 検索した値を別フォームに

    Accessのシステムを会社で作ってます。 検索したIDをサブフォーム(データシート型) で表示したレコードを編集フォーム(別フォーム)に呼び出したいのですが上手く出来ません。 ネットでも検索しましたが良いのがありませんでした。 どなたか、お手数ですがコードを教えていただけないでしょうか? 何卒よろしくお願いします。 *adodbとDAOのどちらか使う必要があるならDAOを使用して作成したいです。 *クエリは使わずに作成したいです。 ○検索フォーム 検索ボタン ID入力テキスト 編集ボタン サブフォーム(データシート型) 編集ボタンを押すと ○編集フォーム 単帳型 *レコード項目 ID プロジェクト名 日付 モジュールNO

  • Access2000で複数の検索項目を作りたいのですが・・・

    こんにちわ。 今、Accessで社員録を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:社員録 フィールド名:ID・検索名・氏名・所属ID・所属 ■クエリ クエリ名:社員録クエリ フィールド名:ID・検索名・氏名・所属ID・所属 検索名抽出条件:検索名フィールド: Like [Forms]![社員録 縦]![けんさく]         所属フィールド: Like [Forms]![社員録 縦]![抽出検索名] ■フォーム フォーム名:社員録フォーム:テキスト1・テキスト2・ボタン1       社員録サブフォーム:データソース:社員録クエリ テキスト1:所属を入力 テキスト2:検索名を入力 ボタン1:マクロの再クエリを実行する ■ここからが質問です■ (1)テキスト1又は、2が空白のとき社員録全体から検索かフィルタ。 (2)テキスト1・2が、入力されてる時、両条件から検索かフィルタ。 をしたいのですが、何かいい方法がありましたら教えて下さい。 説明が、長くなってしまってスミマセン。。。

  • 検索フォームで空白を抽出したい

    検索フォームを作成しました。 詳細は、 検索文字入力用テキストboxが4つ([検索1][検索2][検索3][検索4]) 検索ボタン、クリアボタンがあります。 検索用クエリを作成し、検索ボタンを押すと実行されるようになっています。 クエリ抽出条件には各フィールドごとに Like ("*" & [Forms]![検索フォーム]![検索] & "*") と記述しました。([検索]は[検索1]~[検索4]まであります) 現在、文字を入力しての検索は上手くいっていますが、フィールドの空白だけを抽出したい場合にどのようにしたらいいのかわかりません。 ご回答宜しくお願いいたします。

  • DBソフト ACCESS:検索フォームでヒットしないときは

    ACCESSで検索フォームを作り、そこにお客様IDを入れて、ヒットした場合は、別の入力用フォームが開いて、その方のデータが表示されるようにしています。 そこで教えていただきたいことがあるのですが、今の状態ですと、対象にないお客様IDを入れた場合、新規の画面が開いてしまいます。 これを開かないようにするにはどのようにすればよろしいのでしょうか。 検索フォームがどのようにして作っているかですが、クエリを作成し、お客様IDのレコードを追加し、抽出条件に「Like [forms]![お客様検索]![お客様ID] & "*"」と入れています。フォームではお客様IDを入れて、「実行ボタン」を押すと、フォームを開くマクロが実行されるようにしています。

  • ACCESSのフォームを使っての住所録の検索なのですが,

    Accessのフォームを使って住所録から,データを抽出し,その結果をまず表示,その後ラベルシールに印刷をしたいのですが,フォームでの検索は,テーブルのすべての項目について複数の項目を同時検索をできるようにしたいです。 テーブルの構造はごく普通の住所録です。データ件数は8万件ほどです。 どういう方向で作業を進めるべきか分からないのですが,こういった場合は,まず,検索用のフォームを作成し,コマンドボタン(検索・印刷)を配置して, それに対してイベントかマクロの記述をするんだろうなとは思うのですが・・・ 私が思うに,抽出結果を格納するテーブル・検索フォーム・ラベル印刷用のレポートが必要なのだろうと思いますが,それらが何でつながっていくのかが分かりません。参考書などでは,一つ一つのことが別々に書いてあって作業の全体像が分かりません。作業の方向と必要なスキルが同程度などか詳しい方教えてください。

  • Access97 テキストボックスを利用したあいまい検索フォーム

    Acces97にて下記のようなデータベースを使用しております。  テーブル:銀行コード一覧(銀行コード、銀行名、支店コード、支店名、支店住所)  クエリー:Q-銀行名検索、Q-支店名検索  フォーム:F-銀行名検索、F-支店名検索 今は検索したいフィールド毎にクエリーとフォームが作ってあり、同じようなクエリーとフォームが複数ある状態です。  <クエリー>   (1)Q-銀行名検索→フィールド「銀行名」に【Like "*" & [調べたい銀行名の一部入力] & "*"】設定   (2)Q-支店名検索→フィールド「支店名」に【Like "*" & [調べたい支店名の一部入力] & "*"】設定   ・・・以下同様のクエリー複数あり  <フォーム>   (1)F-銀行名検索にQ-銀行名検索を設定   (2)F-支店名検索にQ-支店名検索を設定   ・・・以下同様のフォーム複数あり 今回作りたいのは、1つのフォーム内に検索したいフィールド分の検索ボタンを作り、検索したい項目をテキストボックス内に入力後該当ボタンをクリックすることによって入力した項目を含むデータが抽出されるというフォームです。 例えば、"東京"と入力し「支店名」ボタンをクリックすると『東京営業部』『東京中央』等"東京"を含むデータが抽出される といった具合です。 部署内にAccess作成事例集なるものがあり、それを元に下記のように作成してみました。 フォーム名を「F-銀行コード一覧」・テキストボックス名を「検索」として、「支店名」ボタンのマクロに [Forms]![F-銀行コード一覧]![検索]=[銀行コード一覧]![支店名] というアクション(フィルタの実行→Where条件式)を設定。しかし、これでは『東京』のみしか抽出されませんでした。 Like関数を利用するのかと思い Like "*"&[Forms]![F-銀行コード一覧]![検索]&"*"=[銀行コード一覧]![支店名] としてみましたが設定できませんでした。 どのようなアクションを設定したらフォームでのあいまい検索ができるのでしょうか?

  • Access クエリについて

    初めまして。Accessのクエリについての質問です。 Access2003です。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件に[forms]![フォーム名]![テキストボックス名]を入れています。 今は2つのテキストボックス両方に言葉を入力するとデータが抽出されますが、これを1つのテキストボックスだけ入力でもデータが抽出されるようにしたいのですが可能ですか?今は一つのテキストボックスに言葉を入力しもう一つを空欄にすると何もデータが出てこない状態です。 2つのテキストボックスをテキスト(1)とテキスト(2)とすると 以下のようにデータを抽出したいです。 ・テキスト(1)とテキスト(2)に入力 →両方の言葉が一致したデータ ・テキスト(1)だけに入力  →テキスト(1)の言葉だけ一致したデータ ・テキスト(2)だけに入力  →テキスト(2)の言葉だけ一致したデータ 初歩的な質問でしたら申し訳ないです。どうかお願いします。

  • Access2002の検索について

    社員マスターテーブル 社員ID   テキスト型 氏名   テキスト型 しめい   テキスト型 部署名   テキスト型 研修マスターテーブル 研修ID   数値型 研修名   テキスト型 受講リストテーブル 受付ID   数値型 受付日   日付時刻型 受講日   日付時刻型 社員ID   テキスト型 研修ID   数値型 研修受付クエリ 社員ID   テキスト型(受講リストテーブル) 氏名   テキスト型(社員マスターテーブル) しめい   テキスト型(社員マスターテーブル) 部署名   テキスト型(社員マスターテーブル) 受付ID   数値型  (受講リストテーブル) 受付日   日付時刻型(受講リストテーブル) 受講日   日付時刻型(受講リストテーブル) 研修ID   数値型(受講リストテーブル) 研修名   テキスト型(研修マスターテーブル) 社員が何の研修を受講したのか履歴がほしかったので「社員マスターテーブル」と「研修受付クエリ」を使ってメインサブフォームを作りました。 やりたい事は、このメインサブフォームに検索のボタンを作りたいのです。 社員IDまたは社員名または受講日のいずれかを入力するし検索ボタンをクリックするとメインサブフォームに結果を出したいのです。 マクロのフィルタ?をやってみたのですがよく意味が分からずできませんでした。 どうぞお手数ですがご教授頂けないでしょうか?

  • Access2003 リレーションされたサブフォームの抽出

    Access顧客情報のデータベースを正規化(VBA)している初心者です。リレーションされているテーブルを元にクエリ(3つのテーブルをつなげただけ)を作成しメインフォームにサブフォームを作りました。3つのテーブルは、1対多でリレーションされています。テーブルAのGR_IDやグループ名で検索しそれに紐づいているCOmpanyは抽出できるのですが、サブフォームのテーブルBのCOmpany nameから抽出することができません。メインフォームからオプションボタンを使用してメインとサブの両方のテーブルを検索したいので、子・親リンクの設定をはずせませんよね?以前の類似質問で「サブフォームのフィルターに入力し、フィルター実行でうまくいきました」とありましたが、具体的にどのように設定(マクロやVBA、再クエリ?)すればいいのかわからず悩んでいます。どうぞ初心者向きのアドバイスをよろしくお願いいたします。 テーブルA GR_ID グループ名 ※テーブルA(1):テーブルB(多) テーブルB GR_ID Company_ID Company name ※テーブルB(1):テーブルC(多) テーブルC Company_ID salesman

  • Access2003のフォームが出来ない。

    Access2003 をテキストで勉強中です。 テーブル → クエリ → と、進んで行きまして、フォームをウィザードで作ると、「フォームを作成できませんでした。」と、メッセージが表示されます。 クエリを基に作成しています。最初のテーブルから、テキスト通りにやりなおしてみても、同じ結果になります。 フォームを作れない原因とは何でしょうか? どうか、よろしくお願いいたします。