クエリ「あいまい検索」該当レコードなし時の設定

このQ&Aのポイント
  • クエリ「あいまい検索」該当レコードなし時の設定について
  • Access2007での「あいまい検索」該当レコードなし時の設定方法
  • クエリの抽出条件欄にパラメータを記述してフリー検索ができるようにする方法
回答を見る
  • ベストアンサー

クエリ「あいまい検索」該当レコードなし時の設定

[質問素材の作成環境]ソフト名:Access2007になります。 [やっていること] 1,クエリの「抽出条件欄」に下記の「パラメータ」を記述してフリー検索できる様にしています。「Like "*" & [情報検索「食材・メニュー・一文字可」] & "*"」 2,フォーム「レシピ食材情報フォーム」の「レコードソース」欄に、クエリ「レシピ食材情報クエリ」を設定しています。「生活情報メインフォーム」上のコマンドボタンで「検索キーワード入力窓」を表示させ、入力後に「レシピ食材情報フォーム」が起動し検索結果を表示しています。 3,オブジェクトの構成 ・テーブル:名前「レシピ食材情報テーブル」(レコード:ID、種類、種別、内容、情報) ・フォーム:名前「生活情報メインフォーム」 ・フォーム:名前「レシピ食材情報フォーム」 ・クエリ:名前「レシピ食材情報クエリ」(レコード:ID、種類、種別、内容、情報) ・検索条件レコード:情報 [困りごと(希望)] ヒットしない時「該当するレコードがない時」、何の活字も表示されない無地のフォームで起動しますので、「該当するレコード」がないときは無地の「レシピ食材情報フォーム」を開かず、ダイアログメッセージで「該当データがありません」”が表示できればと思います。 [やりたいこと(期待)] ダイアログ「コマンドボタン付き」でメッセージを表示して、ダイアログの「コマンドボタン」をクリックすると、「生活情報メインフォーム」を元に戻して「検索動作」が可能になる様にしたいと思います。※現在は、「生活情報メインフォーム」のコマンドボタンをクリックし「レシピ食材情報フォーム」を表示させた時点で、「生活情報メインフォーム」は最小化しています。要望が難しい場合は、「生活情報メインフォーム」を最小化しない方法を視野に入れます。 以上ですが、難易度が分からないでアドバイスを求めています点、ご理解をお願いします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8522/19371)
回答No.1

http://www.accessclub.jp/bbs3/0329/superbeg99652.html の記事を参考に、表示すべきレコードが無い場合の対処をして下さい。

eokwave
質問者

お礼

chie65535 レベル14様へ 質問させていただいた時点での環境が得られて居りますので、補足コメントせずにお礼申し上げるのが筋でした。お尋ねすることがあれば、新たな質問として投稿いたします。ありがとうございました。

eokwave
質問者

補足

chie65535 レベル14様へ  取り急ぎ状況をご案内いたします。 以下の記述を「レシピ食材情報フォーム」の読み込み時に書き込みました。結果は、「生活情報メインフォーム」は開きませんでしたが、該当するレコードが無いと「レシピ食材情報フォーム」は表示されず、Msgboxの文言は正常に表示され、「生活情報メインフォーム」が開かない以外に動作に問題はありませんでした。 Private Sub Form_Load() Dim IntR As Variant IntR = Me.Recordset.RecordCount If IntR = 0 Then Forms.レシピ食材情報フォーム.Visible = False MsgBox ("登録された情報はありません") DoCmd.Close acForm, "レシピ食材情報フォーム" Docmd.OpenForm "生活情報メインフォーム" End If End Sub そこで、マクロの設定(下記)のIとIIの「(2)と(3)」を一旦削除しました「質問時点の記述に選択肢としていた経緯もあり」。 [マクロの初期設定] I、「生活情報メインフォーム」コマンドボタンの設定 (1)フォームを開く:レシピ食材情報フォーム (2)オブジェクトの選択:生活情報メインフォーム (3)最小化 II、「レシピ食材情報フォーム」の閉じるボタンの設定 (1)閉じる:レシピ食材情報フォーム (2)オブジェクトの選択:生活情報メインフォーム (3)元のサイズに戻す あくまでも希望ですが、もし、可能であれば「"生活情報メインフォーム"」の最小化と「"生活情報メインフォーム"」の元に戻せればと思います。 ご判断の程、宜しくお願いします。

その他の回答 (2)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

検索キー情報検索「食材・メニュー・一文字可」 は別のフォームに配置しますのでフォーム名で修飾する必要があります。 「Like "*" & forms!生活情報メインフォーム[情報検索「食材・メニュー・一文字可」] & "*"」

eokwave
質問者

お礼

chayamati レベル12様へ ありがとございます。ご親切に対応いただきまして、貴方様の気持ちが伝わります。ありがとうございました。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

今日は。 「Like "*" & forms!生活情報メインフォーム[情報検索「食材・メニュー・一文字可」] & "*"」 補足 前回 回答の 追加です。 2.クエリデザイン クエリはフォーム、レポートに内蔵させる事が出来るので一時的に使用するものと思います。 [作成]→[クエリデザイン]でクエリのデザイン画面になります。 ※画面は上下2段になっています。上段に使用する元データを下段にフィールド名に配置します →[外国人情報、Shift+分類マスタ]→[追加]→[閉じる] ※これでここで使用するテーブルがかくてします、次に必要なフィールドを一つ一つドラッグ →[国地域マスターの国地域名とフリガナをドラッグ]→[分類マスタの分類名をドラッグ] →[外国人情報の情報をドラッグ] ※表示の並び順と表示コントロール →[フリガナの並べ替え行の右端クリックから昇順]→[フリガナの表示行のチェック外す] ※抽出条件設定 抽出条件の記入行は複数行あり同一行で記述するとand条件違う行で記述するとor条件 記述は各フィールド列で=[国地域名]のように記述 []内の名前のボックスがアクティブ(開いている)」 検索内容は.事前に確定している必要から、ボックスをフォーム名で修飾します。 forms!メニュー![国地域名] 尚あいまい検索はLike [地域頭] & "*" の追加です

eokwave
質問者

お礼

chayamati レベル12様へ ありがとございます。追っかけで対応いただきまして感謝いたします。私の方が通常のレスポンスで追従できていない証拠ですね。ありがとうございます。

関連するQ&A

  • ACCESS マクロで検索に該当する全てのレコード表示方法は? 

    ACCESSでフォーム上のデータを、検索・表示しようとしています。(同一フォーム上で、テキストボックスに入力・コマンドボタンで検索実行・検索結果を表示) 該当するレコードのみ表示させたいのですが、上手くいきません・・・。 検索に該当するレコードにカーソルが移動するのはいいとして、それ以外の全てのデータも表示してしまいます。   例)タナカ を検索して、 検索結果はレコード内全てのタナカさんを表示 何とか【検索に該当するレコードのみ】マクロで表示できないでしょうか。

  • 検索データが無い時にメッセージを表示したい

    [実現したいこと] 検索データが無い時に「該当するデータがありません」みたいなメッセージを表示させたいと思います。ご指導をお願い致します。 [オブジェクトの構成] 検索専用フォームにコマンドボタンを配して、フォーム「世界情勢一覧検索結果」を開いています。 ・フォーム名:検索専用フォーム ・フォーム名:世界情勢一覧検索結果「レコードソース=世界情勢クエリ」 ・クエリ名:世界情勢クエリ ・検索フィールド名:情報「抽出条件:Like "*" & [ 世界情勢情報 ] & "*"」 以上ですが、宜しくお願いします。

  • クエリ「パラメータ」検索結果を単票と一覧で表示II

    [使用ツール]ACCESS2007 [データベースの構成] テーブル名:情報データベース 単票フォーム名:情報フォーム 一覧フォーム名:情報一覧フォーム クエリ名:情報クエリ=「抽出条件」欄のパラメーター「Like "*" & [情報検索] & "*"」 [やりたいこと] 情報クエリ「パラメーター」の検索結果を単票「単票フォーム」と「一覧フォーム」を使い分けて閲覧効率を上げたい。 [考えたこと、やってみたこと] ケース1:検索結果5レコード以下「単票フォーム」、5レコード以上「一覧フォーム」で開く。 ケース2:埋め込みマクロで「単票フォーム」「一覧フォーム」の両方同時に開き「一覧フォーム」は最小化させる。「単票フォーム」を閉じると「一覧フォーム」が開く。 [確認できた課題] ケース1:多少の理解が可能な「埋め込みマクロ」で考えたが、スキル不足で試作にも入れず。 ケース2:「単票フォーム」「帳票フォーム」を同時に開いた時点で、両方の「パラメータダイアログ」が表示され、入力しないと「帳票フォーム」は最小化されない問題を解決できない。 (現状のスキルでは「単票フォーム」にコマンドボタンを配し、コマンドボタンで「帳票フォーム」を開いて検索を行う方法になり、操作「手間」を考えると結果的に非効率である。) [わかったこと] ケース1の方が設定後に「レコード数」の希望数値に変更することで調整が可能であり、設定全体を大きく変更することもないのでスキルが低くても使い続けられる。 【追 伸】 アドバイスをお願いするに当たり、スキル(質問者として)を知って頂くことが必要だと改めて感じて居ります。その為には情報をお伝えする以外にないと思いました「面倒だから聞いて居ると思われない為にも!」。今回、以下の内容で最初に質問させていただきましたが、「実現の可否も想像すらできておりませんでしたので、一旦、実現に向けて再度考えてみて質問IIとしました。(短絡的に取り下げたのではなく、実現の可否判断ができない為)」 [やりたいこと] 情報クエリ「パラメーター」の検索結果を単票「情報フォーム」で表示させていますが、レコード数が多い場合に一覧表示「情報一覧フォーム」させたいと考えています。 [希望の動作] 検索結果を単票「情報フォーム」で表示の後、レコード数の多い場合に情報フォームに配した「コマンドボタン」をクリックすることで、単票での検索済結果を「情報一覧フォーム」へ一覧表示させたい。 宜しく、お願いします。

  • 【ACCESS】フォームのレコードソースのクエリを動的に書き直したときの、フォームの再描画

    ACCESS2002 帳票フォームのレコードソースにクエリを指定しています。 フォーム上のコマンドボタンを押したイベントで、その レコードソースとしているクエリのSQLを書き直しています。 問題は、その書き直したクエリをもとにして画面をもう一度 表示させなおしたい(リフレッシュさせたい)ということです。   docmd.close acForm,"フォーム名"   docmd.open "フォーム名" とすると、書き直したクエリの内容でフォームが表示されます。 フォームを閉じる→フォームを開くとしないで、フォームを リフレッシュさせる方法はないのでしょうか?

  • ACCESS2000でクエリで抽出したレコードをフォームに表示するには

    A顧客テーブルで作成したフォームからコマンドボタン(電話番号検索)押下時に 電話番号入力画面が出て入力した電話番号とマッチした顧客レコードをフォームに 表示させたいのですが上手く出来ません。 現在進めている方法では何がダメなんでしょうか(以下は考え方) A顧客テーブルから作成したフォムに電話番号コマンドを作成してコマンドを 押すとクエリの実行をさせる。クエリはA顧客テーブルのフィールドを全て選択して抽出条件に[電話番号入力]としている。 (結果) ・フォームを開くと先に電話番号入力が出てくる、先にフォームが開かない。 ・電話番号検索コマンドボタンを押すと抽出条件に合ったレコードはデーターシートビューに表示される。 よろしくお願いします

  • accessのクエリで、該当するデータがなかったときの処理

    Accessを使って仕事をしています。クエリで該当するレコードがないとき、空白のレコードを表示して新しいデータの入力をするようになっています。そうではなく、データの有る無しを調べ、あった時は続行、なかった時は別のフォームを開くなどをしたいのですが、どうしたらよいのか分かりません。どなたか、分かりやすく教えてくださることを期待しております。どうぞよろしくお願いします。

  • レコードソースを検索する方法

    レコードソースを検索する方法 現在、ACCESSで作ったシステムを改修しています。 その中でクエリの改修を行う必要があり、 影響調査を行う必要があるのですが、 フォームやテキストボックス等で使用されているソースから 該当のクエリを使用しているものを検索する方法はありますでしょうか? 宜しくお願いします。

  • access クエリ レコードの追加ボタン?

    クエリのデータシートビュー時の 最下部に現在の位置やレコード総数などを表示する場所がありますよね?そこに「一番下のレコードに移動する」ボタンがありますよね? (「>*」のような記号のボタンです。) このボタンを有効/無効にする設定はどこでできますか? このクエリは1つのテーブルから作っているので、普通に作成すれば、レコードの追加も、内容の変更も出来ます。 実は、偶然にも無効にしてしまっているで有効に直したいのです。 フォームでいうところの「追加の許可」みたいな「新規レコードの追加はできる/できない」みたいな機能です。 よろしくおねがいします。

  • accessで該当するレコードがない場合

    フォームヘッダー上で、(指定月日)の名前をつけてあるテキストボックスに、(月日)を入力し、コマンドボタンの(月日抽出)をクリックして、該当するデータがあれば、フォーム詳細で該当するレコードが抽出されるようになっています。 また、(月日)を入力せずに月日抽出ボタンをクリックすると「日付が未入力です」までのメッセージを出すことはできます。該当するレコードがない場合「該当するデーターはありません」のメッセージを出すには、下記のVBAをどうすればいいのでしょうか? dcountを使えばいいらしいのですが?わかりません。 ちなみにテーブル名は「実施T」です。よろしくお願いします。 Private Sub 月日抽出_Click() On Error GoTo errmsg Me.Filter = "月日=#" & Format(指定月日, "yyyy/mm/dd") & "#" Me.FilterOn = True Exit Sub errmsg: MsgBox "日付が未入力です" End Sub

  • ACCESS2003でクエリを使った検索フォームを作っています。

    ACCESS2003でクエリを使った検索フォームを作っています。 クエリは以下の様になっています。 ----------  番号   タイプ   品名  1111   AA     商品1  2222   AA     しょうひん2  3333   BB     商品しょうひん3 ---------- 品名のフィールドの抽出条件に ---------- Like "*" & [Forms]![品名検索フォーム]![品名検索] & "*" ---------- と入れています。 品名検索フォームは帳票タイプで、フォームヘッダーにテキストボックスを設け 「品名検索」と名前をつけています。 テキストボックスに【商品】と入力すれば番号1111と3333が、【しょうひん】と入力すれば 番号2222と3333が抽出されるように設定し、ここはうまく動きました。 ただ、このフォームを開いた際、テキストボックスは空欄になっているため、全レコードが 表示されてしまいます。テキストボックスが空欄の際は、何も表示したくないのですが どこを触ればいいのでしょうか? どうかよろしくお願いいたします。

専門家に質問してみよう