• 締切済み

AND検索

アクセスでフォームを作成し、入力項目を5箇所用意しました。 その入力項目によって、OR検索とAND検索を行わせたいと思っています。 OR検索に関しては問題無いのですが、AND検索をさせた場合、5箇所全てを埋めないと結果が得られません。 AND検索で5項目の内3項目が空でも残りの2項目が該当すればデータを表示させたいのですが、方法がわかりません。 アクセス2000を使っています。 よろしくお願いいたします。

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 VBAを使えば出来ますが。 検索対象のテーブルのレコードセットを作り、Findの条件に、項目が空でないなら、 " AND (フィールド名 = " & 条件 & ")" をくっ付けていけばいいでしょう。 では。

amateur3
質問者

補足

早速の回答ありがとうございます。 アクセスの初心者なので、レコードセットという言葉さえよく知りませんでした。 調べながらなんとかやっていこうと思います。

回答No.1

御疲れ様です VBAで宜しければ、こんな感じになります Private Sub コマンド0_Click() Dim stFormName As String Dim stWhere As String stFormName = "AAA" stWhere = 条件文作成("AND") DoCmd.OpenForm stFormName, , , stWhere End Sub Private Function 条件文作成(stConnector As String) As String Dim stSQL As String stSQL = "" stConnector = " " & Trim(stConnector) & " " If IsNull(Me.Txt条件01.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目01 = " & Me.Txt条件01.Value & ")" End If If IsNull(Me.Txt条件02.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目02 = '" & Me.Txt条件02.Value & "')" End If If IsNull(Me.Txt条件03.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目03 = #" & Format(Me.Txt条件03.Value,"mm/dd/yyyy") & "#)" End If If IsNull(Me.Txt条件03.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目04 = '" & Me.Txt条件04.Value & "')" End If If IsNull(Me.Txt条件03.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目05 = " & Me.Txt条件05.Value & ")" End If If stSQL <> "" Then stSQL = "(" & stSQL & ")" 条件文作成 = stSQL End Function

amateur3
質問者

補足

早速の回答ありがとうございます。 現在テストしているのですが、まだ上手くはいってません。 stWhereの返り値まではきちんと動いているので、何とか解決したいと思います。 なにぶん初心者なものなので、基本的なミスをしてる気がします。

関連するQ&A

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

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

  • Dreamweaverでand検索やor検索ができるフォームの作成

    Dreamweaver MX2004を使用しています。 ダイナミックページのASP VBScriptを指定し、データベース(Access)のデータから必要データをリストアップするWebページを作成しました。 フォームの入力画面でキーワードを入力すると、そのキーワードを含むレコードの一覧を表示するWebページを作成しました。(Dreamweaverの自動作成ツールを利用して作成しました。)でも同僚から「and検索やor検索は出来ないの!?」といわれてしまいました。 プログラムの知識はありません。Dreamweaverのマニュアル本を見て、やっとの思いでここまで作成できたレベルです。どのようにしたらand検索やor検索が出来るようになるのでしょうか?Dreamweaverにあるツールを使ってすることは可能でしょうか!どなたか教えてください。プログラムを書かないといけないのであれば、こんな私ですので、できるだけわかり易く教えていただけますでしょうか。よろしくお願いします。

  • Access2002のand検索について

    検索フォーム内にチェックボックスが20項目くらいあり、チェックで選んで「抽出ボタン」を押した後、別フォームに「and検索」で抽出データを検出したいのですが、どのようにしたらいいでしょうか。 (できればVBAではなくクエリでそういう設定はできないでしょうか。)

  • Access2000で検索フォームの作成方法を教えてください。

    Access2000で検索フォームの作成方法を教えてください。 Accessの知識はテーブル、クエリー、フォームの初歩的な作成方法ぐらいしか分かりません。 【今の状況】 フォームを4つ作成しています。 (1)検索条件を指定するフォーム1つ(F4)を作成済みです。 (2)フォーム(F4)には、条件を指定するコンボボックス(条件1、条件2)を2つと、  コマンドボタン(検索ボタン)を1つ作成しています。  ※コンボボックスは、非連結で、値集合タイプに値リストを設定し、値集合ソース値を指定しています。   ※コマンドボタンは、フォーム上にボタンを描いただけで何も設定していません。 (3)検索結果を表示させるフォーム3つ(F1、F2、F3)を作成済みです。 (4)それぞれメインフォーム(M)とサブフォーム(S)で構成されています。 (5)メインフォーム(M)は、3つのフォーム(F1、F2、F3)共通です。  サブフォーム(S)は、3つとも表形式ですが、表示している元データ(クエリー)が異なります。 (6)検索条件を設定したい項目は、メインフォーム(M)にも表示されている項目です。 【やりたいこと(完成イメージ)】  検索条件指定のフォームに作成している「検索ボタン」をクリックすると、  検索結果表示用のフォーム(F1、F2、F3)に検索条件に該当するデータのみ表示させたい。  (上記(6)にも書きましたが、メインフォーム(M)にも検索条件に指定した値を表示させたいです。)  検索条件は、最大6項目指定しますが、条件が選択されているもののみをAND条件で検索したいです。 【教えていただきたいこと】  コンボボックスの条件をANDで指定するには、どこに何を設定すれば良いのでしょうか?  「検索ボタン」の作成方法後に、設定をする必要があると思うのですが、どこに何を設定すれば良いのでしょうか?  検索条件フォーム(F4)の結果を、検索結果表示フォーム(F1、F2、F3)に関連付けるには、どこに何を設定すれば良いのでしょうか?  その他に設定が必要な部分はありませんか?    あと、お勧めの方法が他にあれば教えてください。 初歩的なことしか理解していませんので、 不十分な説明文で申し訳ありませんが、 よろしくお願いします。

  • 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です。

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

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

  • アクセス2003で選択クエリから検索フォームを作成しています。検索した

    アクセス2003で選択クエリから検索フォームを作成しています。検索したいレコードの名前を入力する際に、コピーアンドペーストができません。パラメータの入力でその都度入力しているので不便です。貼り付けができるようにするにはどのようにしたらよいでしょうか。どなたかご教授ください。よろしくお願いいたします。

  • Accessでの検索

    宜しくお願いします。 Accessで検索フォームを作成しようと思っています。 フォームから入力した番号を検索して 結果をテキストボックスに表示するといった感じです。 質問の内容は複数のテーブルがある場合、 どのようにすればいいのか?です。 色々調べてみたのですが、わかりません・・・。 ご存知の方がおりましたら教えて下さい。 宜しくお願いします。

  • Accessの検索フォーム作成で。

    Access2000です。 一覧テーブルは ・名前 ・項目1 ・評価1 ・項目2 ・評価2 となっていて、 山田太朗  | タバコのポイ捨てはしない  | 5 | 10分前行動 | 4 | 前田前   | 交通ルールを守る      | 5 | 挨拶をする  | 4 | 大坪拳   | 10分前行動        | 4 | 挨拶をする  | 5 | のようになっています。 これをもとに「検索フォーム」をデザインフォームで、 名前   [     ] 項目1  [     ] 項目2  [     ] 項目3  [     ] と作成し、「検索」というボタンを押すと、「検索結果フォーム」に検索結果が出るようにしました。 検索ボタンは Private Sub コマンド9_Click() Dim SQL As String Dim WhereCond As String Dim condName As String Dim condKoumoku1 As String Dim condKoumoku2 As String Dim condKoumoku3 As String WhereCond = "" '名前 If Me!名前.Value <> "" Then condName = "(一覧.名前 like '*" & Me!名前.Value & "*')" WhereCond = WhereCond & " and " & condName End If '項目1 If Me!項目1.Value <> "" Then condKoumoku1 = "(一覧.項目1 like '*" & Me!項目1.Value & "*')" WhereCond = WhereCond & " and " & condKoumoku1 End If : WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "検索結果フォーム", acNormal, , WhereCond End Sub となっています。 そこで、検索フォームで 項目に検索値を入れた場合、一覧の項目すべての中から検索できるようにするにはどうしたらいいのでしょうか? また、今の状態ですとand検索ですが、or検索するにはどのようにしたらいいでしょうか?

  • accessでフリーワード検索が入った検索フォームを作成したいのですが。

    はじめまして。accessド初心者です。 簡単な検索フォームをaccessで作成しようと思い、 4項目ぐらいから検索できる形にしようと作成しているのですが、 そのうちの一項目をフリーワードで検索できるようにしたいのです。 リレーション設定し、各項目のクエリを作成し、 入力用のクエリを作るため選択クエリ画面にて、データ入力を 行なおうとしたところで、疑問がでました。 フリーワード検索をさせたい場合は、このデータ入力の段階で、 考えられうるキーワードを全部入れなければ、 データ未入力の言葉をフリーワード検索した場合、引っかかってこない という認識で合っていますでしょうか? 例えば、考えられうるキーワードがとてつもなく多い場合は、 それこそ1文字ずつ文字を替えたものをすべてデータ入力しないと 使えないということなのでしょうか? もしそうであれば、フリーワード検索の項目ははずそうと思っています。 初心者のため、用語の使い方が正しいのか不安ですが、 ご存知の方がいらっしゃれば、教えてください。

専門家に質問してみよう