Access2000Proを使用して、指定のフィールド内に選択された言葉を含んだフォームを呼び出す方法

このQ&Aのポイント
  • Access2000Proを使用して、指定のフィールド内に選択された言葉を含んだフォームを呼び出す方法について教えてください。例えば、メインフォームのテキストボックスを使って、名前の一部を入力すると該当するフォームが表示されるようにしたいです。
  • また、複数の言葉を指定して、その両方が含まれているフィールドを検索したり、一方の言葉のみを検索する方法についても知りたいです。さらに、大文字と小文字を区別して検索することは可能でしょうか?
  • さらに、複数のフィールドを対象にして検索する場合にはどのようにすれば良いのか教えてください。
回答を見る
  • ベストアンサー

指定のフィールド内に選択された言葉を含んだフィールド・フォームを検索し、呼び出したい。

Access2000Proを使用しています。 メインフォームのテキストボックスを使って、指定のフィールド内に選択された言葉を含んだフォームを呼び出すコマンドを作ろうとしています。 その場合、 1)該当するQueryにはどのようなコードを書いたらよいでしょうか?例えば Like "*" & [Forms]![MainForm]![NameSearch:] & "*"のようにすれば名前の一部でもあればそのフォームを引き出すことができると思いますが、これをやや複雑にして、(a)複数の言葉を指定して、その両方が含まれているもののみのフィールドを検索したり、或いは, (b)一方のみを検索 (c)大文字・小文字による区分けは可能か?は如何でしょうか? 2)対象フィールドはデータ型がテキスト型でもメモ型でもどちらでも検索可能でしょうか?両方共可能であるならば、その差(長短所)はどこにあるのでしょうか? メモ型でOKとなればかなり長い文章からも呼び込めることになりますが検索時間がかかると思われます。 3)一つの検索したい言葉に対し、複数のフィールドをその対象とする場合、はどのようにしたら良いでしょうか? 宜しくご教授下さい。

  • jsota
  • お礼率23% (11/47)

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

  • ベストアンサー
  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.1

あくまでも通常の場合についての回答です。 1) (a) Select Field001, Field002, Field003 From Table001 Where Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch1]) & "%") And Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch2]) & "%") (b) Select Field001, Field002, Field003 From Table001 Where Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch1]) & "%") Or Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch2]) & "%") (c) 大文字の場合、UCase関数、 小文字の場合、LCase関数が使えるはず。 2) どちらも可能ですが、 どちらにしても遅くなります。 インデックスも意味ありませんし。 3) 1)の(b)のWhere句のNameSearchを同じにして、 Fieldを変えれば出来ませんか? こんなのでいいのかどうかわからないので、 自信無しです。

関連するQ&A

  • フィールドのデータ型で検索結果に差が出る[2]

    正確にはフィールドのデータ型と検索条件「And・Or」の違いで検索結果に差が出るになります。 [アドバイス訴求の背景] 別件「フィールドのデータ型で検索結果に差が出る」でアドバイスをお願いして居りました者です「終了」。実は別の式もアドバイス頂いていた経緯があり、そちらで再度試してみたところメモ形でも「Or」条件であれば、正常に検索できることが確認できました。実は、アドバイスを頂いた記述を私が間違って設定していた為、別件の質問の通り「メモ形」は検索できていませんでした。本当に申し訳ございません。以上の経緯「私のプア」もあり、再度アドバイスをお願いすることに気も引けましたが、アドバイスを提供して下さった方に失礼であると思い投稿しました。 [気になっていること] クエリのパラメータ検索「複数パラメータ」に於いて、フィールドのデータ型が「メモ形」で「And」条件の時だけ検索できません。 1,データベースオブジェクト「簡略」 ・テーブル:世界情報 ・フォーム:世界情報フォーム ・フィールド名:情報   フィールドサイズ:メモ ・フォールド名:タイトル フィールドサイズ:200 ・世界情報クエリ1,2,3,4,「パラメーター(複数パラメータ表示)」 2,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式(Or)」した時は問題なく検索結果を返します。 Like "*" & [Forms]![情報]![検索1] Or Like "*" & [Forms]![情報]![検索2] Or Like "*" & [Forms]![情報]![検索3] & "*"(情報フィールドの抽出条件にのみ記載) 3,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式(And)」した時は全て「登録した情報はありません」を返します。 Like "*" & [Forms]![情報]![検索1] And Like "*" & [Forms]![情報]![検索2] And Like "*" & [Forms]![情報]![検索3] & "*"(情報フィールドの抽出条件にのみ記載) ※検索1と検索2にしても結果は同じでした。 4,その他 Like "*" & [Forms]![情報]![検索1] And Like "*" & [Forms]![情報]![検索2] And Like "*" & [Forms]![情報]![検索3] & "*" の式をクエリの記載場所が異なるので「式1: 」は付いていません。 以上ですが、宜しくお願いします。

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

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

  • accessのVBAで変数名でフィールド指定は?

    VBAの記述として フィールド名を指定するときに通常であれば forms![顧客一覧]![ID]やforms![顧客一覧]![age]と記述しますが この[ID]という部分についてあるフォームから IDという文字があるときはIDフィールド、 ageという文字があるときはageフィールドに記述というのはできるのでしょうか?

  • フィールドのデータ型で検索結果に差が出る

    クエリのパラメータ検索「複数キー入力」に於いて、フィールドのデータ型の違いで、検索ができない状態になる。スキルが低く現状突破ができていません。ご面倒をお掛けしますが、アドバイスを宜しくお願い致します。 [気になっていること] フィールドの「データ形」で「メモ形」だけ検索できない現象がでます。「メモ形」を持つデータベースは同じ結果「検索できない」になりました。勿論、私のデータベースの作り方に問題があるかもしれませんが。 [こだわりの背景] 対象のデータベースは作り始めて歴史が長く「全873レコード」、作り始めの頃「習い始めの時期」のタイトル付けがプアであり、「情報」での検索が可能になれば、検索効率が向上し更に有効に活用できると考えています。 [お願い・・・(反省)。] 設定等の内容にて以下記載の通りですが、アドバイスをお願いできればと思います。式に付きましては、このサイトで親身にご対応頂きましたが、質問時にデータ型の情報は詳しくお伝えしていませんでした。反省しております。 1,データベースオブジェクト「簡略」 ・テーブル:世界情報 ・フォーム:世界情報フォーム ・フィールド名:情報   フィールドサイズ:メモ ・フォールド名:タイトル フィールドサイズ:200 ・世界情報クエリ1,2,3,4,「パラメーター(スペースで区切り複数条件設定可)」 2,フィールド名「タイトル(テキスト形)」を検索フィールドに指定「下記の式」した時は問題なく検索結果を返します。 式1: Eval(BuildCriteria("'" & [タイトル] & "'",10,"*" & Replace([表題(一文字可)]," ","* And *") & "*")) 抽出条件:-1 式1: Eval(BuildCriteria("'" & [タイトル] & "'",10,"*" & Replace([表題(一文字可)]," ","* Or *") & "*"))  抽出条件:-1 3,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式」した時は「式が正しく入力されていないか、複雑すぎるため評価できません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。」と返します。 式1: Eval(BuildCriteria("'" & [情報] & "'",10,"*" & Replace([内容(一文字可)]," ","* And *") & "*")) 抽出条件:-1 式1: Eval(BuildCriteria("'" & [情報] & "'",10,"*" & Replace([内容(一文字可)]," ","* Or *") & "*"))  抽出条件:-1 4,その他 Eval(BuildCriteria("'" & [情報] & "'",10,"*" & Replace([内容(一文字可)]," ","* And *") & "*"))の式をクエリに記載すると先頭に「式1: 」が勝手に付いてしまいますが、動作に問題はないでしょうか。 以上ですが、宜しくお願いします。

  • 【Access】複数フィールドを対象とする検索

    Access上で「検索ボタン」をクリックすると、 「データ」フォームのフィールド1、フィールド2、フィールド3のいずれかに「検索条件1」の語を含み、かつ、フィールド4、フィールド5、フィールド6のいずれかに「検索条件2」の語を含むレコードを抽出できるようにしたいと思います。 検索条件はテキストボックスに入力するようにしており、テキストボックス名は「検索条件1」、「検索条件2」となっています。 以下のコードでやってみたのですが、「実行時エラー13、型が一致しません」というエラーが出てうまく抽出できません。 Private Sub 検索ボタン_Click() Dim filter1 As String filter1 = "フィールド1 like '*" & Me!検索条件1 & "*' or フィールド2 like '*" & Me!検索条件1 & "*' orフィールド3 like '*" & Me!検索条件1 & "*'" And " フィールド4 like '*" & Me!検索条件2 & "*' or フィールド5 like '*" & Me!検索条件2 & "*' orフィールド6 like '*" & Me!検索条件2 & "*'" DoCmd.OpenForm "データ", acNormal Forms!データ!.filter = filter1 Forms!データ!.FilterOn = True End Sub 「検索条件1,2」のテキストボックスがあるフォーム上の「検索ボタン」をクリックすると、 「データ」フォームが開き、検索をかけるという流れをイメージして作成 しています。 どなたか正しい記述を教えていただけませんでしょうか。 よろしくお願いいたします。

  • Access複数フィールドを対象とした検索

    こんにちは。下記内容での質問です。 Accessで複数フィールドを対象とした検索フォーム?検索テキストボックス?検索ボタン?のような機能を追加したいのですが…。 [注文テーブル]     注文ID:オートナンバー型 納期:日付/時刻型 注文No.:テキスト型 数量:数値型 [製番テーブル] 製番ID:オートナンバー型 注番ID:数値型 製番1:テキスト型 製番2:テキスト型 製番3:テキスト型 と二つのテーブルがあり、メイン(注文テーブル)/サブ(製番テーブル)フォームで注文IDをリンクフィールドとしています。 一つの注文が3個口です。製品に製番シールをそれぞれ貼って出荷するので、製番シールを参照してメイン/サブフォームから[製番1~3]に後から手入力して管理してます。 製番はアルファベットと数字の組み合わせで6ケタです。例)AB1234 そこで、ある製番一つを変更したい時に、どの注文の[製番1~3]に入っているか分からない旧製番を検索して新製番に変更する時があります。 出来ればVBAをあまり使わずに、"複数フィールドを対象にパラメータ入力"などして検索したいのですが…。 新たに検索クエリ/検索フォームを作成して検索・編集出来るクエリ/フォームを作成する感じでしょうか? 何卒、宜しくお願い致します。

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

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

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

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

  • フォームで入力された文字をクエリのフィールド名として反映させたい 【Microsoft Access】

    Microsoft Accessに関する質問です。バージョンは2003です。 フォーム"Fo1"に、テキストボックス"Te1"とクエリの実行を行うためのコマンドボタン"CB1"があるとします。コマンドボタン"CB1"を押すことでクエリ"Q1"が実行されるよう、イベント プロシージャに記載しています。クエリ"Q1"にはテーブル"Ta1"が表示されており、テーブル"Ta1"は複数のフィールド("Fi1","Fi2","Fi3",…)を有するものとします。 このような状況において、テキストボックス"Te1"に複数のフィールド("Fi1","Fi2","Fi3",…)のうちのどれかを記述し、コマンドボタン"CB1"を押したときに、テキストボックス"Te1"に記載されたフィールド名のデータを実行結果として出力したいと考えています。 そこで、クエリ"Q1"の「フィールド:」の部分に [Forms]![Fo1]![Te1] と記入し、「テーブル:」の部分に"Ta1"を指定した後、クエリを保存して(このときにはフィールド名の記入した部分は「式1: [Ta1].Forms![Fo1]![Te1]」と表示されています)閉じた後に、フォーム"Fo1"を開き、テキストボックス"Te1"に出力させたいフィールド名を記載しコマンドボタン"CB1"を押してみました。 すると、「パラメータの入力」というダイアログが立ち上がり、ダイアログ内には「Ta1.Forms!F01!Te1」という記述とテキストボックスが出力されました。テキストボックスに無記入で"OK"ボタンを押したところ、出力結果に「式1」という列が現れ全てのセルが空白となってしまいました。 フォームや、クエリに記入する表記が間違っているのか、そもそも出力させるフィールド名をフォームから指定するという方法が根本的に違うのかわかりません。 申し訳ありませんが、当方Accessに関しては初心者ですので、極力専門用語は少なくご教授いただければと思います。よろしくお願いします。

  • Accessで「キーワード検索」をしたい

    前任者が作ったデータベースを触っています。 私自身はAccessの基本操作がわかるくらいでVBAとかはよくわかりません。 今回その修正がしたいと思っています。 検索用フォームがあり、現在3つのコンボボックスがあってそれを選択して 「検索開始」をしています。 今回、その検索用フォームに「キーワード検索」というテキストボックスを1つ追加したいです。 検索の対応となるフィールドは2つあります。 「質問」「回答」 このどちらかのフィールドに「キーワード検索」した文字があればレコードを抽出してほしいです。 とりあえず検索結果を表示するためのクエリの「質問」「回答」の抽出条件に同様に Like "*" & [Forms]![F_検索フォーム]![キーワード] & "*"と入れてみました。 なんとなく違う気はするのですが、どうやってやれば良いのかイマイチわかりません。 またこの同じクエリに IIf(IsNull([Forms]![F_検索フォーム]![区分1cd]),True,[区分1cd]=[Forms]![F_検索フォーム]![区分1cd]) 抽出条件欄に「True」 これが3つのコンボボックス分あります。 何のためのフィールドでしょうか? また、私が追加する「キーワード検索」テキストボックスの分も作らないといけないものでしょうか? 素人質問で申し訳ありませんがアドバイスいただけたら助かります。 Accessのテキストは職場にたくさんあるのですが、私のレベルでは読んでも??ばかりです。 よろしくお願いします。

専門家に質問してみよう