• ベストアンサー

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

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

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

また、間違えました。 なにぶん、実際に書いてないもんで。 チェック欄のところを以下のように修正して下さい。 '[チェック欄] Select Case Me!fraチェック欄.Value   Case 1  '全て     '何もしない   Case 2  'チェック欄あり     condCheck = "(テーブル1.チェック欄 =" & True & ")"     wherecond = wherecond & "and " & condCheck   Case 3  'チェック欄なし     condCheck = "(テーブル1.チェック欄=" & False & ")"     wherecond = wherecond & "and " & condCheck End Select 元のコードだと、チェック欄[全て]を選択すると、WhereCondの末尾に" AND "が余分についてしまい、構文エラーになってしまいます。 これで大丈夫だと思います。(ちょっと不安) では。

KODAMAR
質問者

お礼

できました!! ありがとうございます!! これでやっと。。。と思ったのですが、更に更に質問してもよろしいでしょうか? 今まで文字を入れる検索フォームはテキストボックスかチェックボックスかラジオボタンでしたよね。 コンボボックスなんていうのはどのようにやるのでしょうか? テキストボックスと同じようなカンジではもちろんエラーですよね? 何度もすいませんが、宜しくお願いします。。

KODAMAR
質問者

補足

すいません、大丈夫じゃなかったです(^^; 名前を入れないでチェックあり(なしも)の場合にエラーが出てしまいます! 名前さえ入れれば3つのどれでも大丈夫なのですが。。。 ------------------------ 実行時エラー '3075'; クエリ式'テーブル1.チェック欄=True)'の不要な')'があります。 ------------------------ です。 どこを直せばいいのでしょうか?

その他の回答 (7)

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

まだ締め切っていないようですので。 >チェック欄のところで、両方検索できない、とありますが、 >これの両方を検索する方法というのはあるのでしょうか? 検索条件入力フォームで、条件入力をチェックボックスで行うと、チェックした・しないの2種類しか判定出来ません。 したがって、必要な判定基準の数だけオプションボタンを作ります。 やり方(知っている部分は飛ばして下さい。) ・まず、フォームにオプショングループ(フレーム)を配置する ・ツールボックスのオプションボタンをクリックして選択状態にする ・マウスポインタ(フォーム上ではオプションボタンの形になる)をそのフレームの上に持っていくと、フレーム内が反転表示される ・そのままフレーム内にドラッグしてオプションボタンを配置する ・あと2つ、同様にオプションボタンをフレーム内に配置する ・これで、オプションボタンが3つグループ化されました。グループ化されているオプションボタンは、常にグループ内で1つしかチェック出来ません。(他のボタンを選択すると元のボタンは自動的にチェックが外れます。) ・オプションボタンにはオプション値というプロパティがあり、これでどのオプションボタンがチェックされているか判定します。 ・この値はオプションボタン自身ではなく、グループ化しているフレームのValueプロパティで設定したり、取得したりします。 ・オプションボタンとセットになっているラベルコントロールのキャプションを、分かり易く変えます。 例) オプション値1・・・"全て" オプション値2・・・"チェック欄あり" オプション値3・・・"チェック欄なし" ・フレームの既定値プロパティにどれかのオプション値の値を設定します。これで、フォームが立ち上がった直後のとりあえずチェックされているオプションボタンを設定出来ます。 ・コードのチェック欄の部分を以下のように変更します(フレームの名前は[fraチェック欄]とします) '[チェック欄] Select Case Me!fraチェック欄.Value   Case 1  '全て     condCheck = ""   Case 2  'チェック欄あり     condCheck = "(テーブル1.チェック欄 =" & True & ")"   Case 3  'チェック欄なし     condCheck = "(テーブル1.チェック欄=" & False & ")" End Select wherecond = wherecond & "and" & condCheck これで、[全て]を選べばチェック欄の有無両方とも、[チェック欄あり]でチェック欄がTrueのもの、[チェック欄なし]でチェック欄がFalseのものを抽出出来ます。 がんばって下さい。 では。

KODAMAR
質問者

お礼

何度もご登場いただき、ありがとうございます。。。 試してみました。 できました!やったー!! と思ったのも束の間! 名前欄に「持田」と入れて、チェック欄を「全て」で検索すると -------------------- 実行時エラー'3075'; クエリ式'(テーブル1.名前 like '*持田*')and' の構文エラー : 演算子がありません。 -------------------- と出てしまうんです。 名前に何もいれずにチェック欄を「全て」にすればきちんと検索結果が出るし、 名前を入れて、チェック欄を「あり」「なし」にすると検索結果が出てきます。 なぜエラーが出てしまうのでしょうか? 以下がコードです。 -------------------- Private Sub コマンド8_Click() Dim SQL As String Dim wherecond As String Dim condID As String Dim condName As String Dim condBirth As String Dim condCheck As String wherecond = "" '[氏名ID] If Me!氏名ID.Value <> "" Then condID = "(テーブル1.氏名ID = " & CLng(Me!氏名ID.Value) & ")" wherecond = wherecond & " and " & condID End If '[名前] If Me!名前.Value <> "" Then condName = "(テーブル1.名前 like '*" & Me!名前.Value & "*')" wherecond = wherecond & " and " & condName End If '[誕生日] If Me!誕生日.Value <> "" Then condBirth = "(テーブル1.誕生日 = #" & Me!誕生日.Value & "#)" wherecond = wherecond & " and " & condBirth End If '[チェック欄] Select Case Me!fraチェック欄.Value Case 1 condCheck = "" Case 2 condCheck = "(テーブル1.チェック欄=" & True & ")" Case 3 condCheck = "(テーブル1.チェック欄=" & False & ")" End Select wherecond = wherecond & "and " & condCheck wherecond = Mid(wherecond, 6) DoCmd.OpenForm "検索結果フォーム", acNormal, , wherecond End Sub -------------------- 申し訳ありませんが、もう一度ご教授願えませんか? 宜しくお願いします。

KODAMAR
質問者

補足

No.8に対する2度目の補足です。 (見ていただけるかどうか・・・) すいません、こちらのミスでした! ちゃんとできました。

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

もうひとつ気になったので。 各条件の wherecond = wherecond & "and" & condName でandの前後に半角スペースはちゃんと入ってますか? では。

KODAMAR
質問者

お礼

あっ!入っていなかったです! これをやったら、下のエラーも解消しました! 本当に本当にありがとうございました! やっと完成しました。 なんと言ったらいいかわからないくらいお世話になりました。 貴重な時間を割いていただいて、本当に感謝しています。 ありがとうございました!!

KODAMAR
質問者

補足

追加で質問してもよろしいでしょうか?? チェック欄のところで、両方検索できない、とありますが、 これの両方を検索する方法というのはあるのでしょうか? お時間あるときで結構ですので、もし方法がありましたらお教えください。 宜しくお願いします。

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

間違えました。 DoCmd.OpenForm 検索結果フォーム, acNormal, , wherecond を DoCmd.OpenForm "検索結果フォーム", acNormal, , wherecond にして下さい。 (フォーム名は文字列を指定しないといけないのでダブルクォーテーションで括らないとダメでした。) Dim condNameを削除した件はもちろんOKです。(私の間違い) では。

KODAMAR
質問者

お礼

ありがとうございます。無事解消しました。 が!また新たにエラーが!! 名前のところに「持田」と入れてボタンをクリックすると -------------------- 実行時エラー'3075'; クエリ式'ーブル1.名前 like '*持田*')and(テーブル1.チェック欄=False)'の不要な')'があります。 -------------------- と出てしまうのです。 これは一体どこのことでしょうか? お願いします。。。

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

三度maruru01です。 順番にいきます。ちょっと修正もあります。 Dim SQL As String Dim WhereCond As String Dim condName As String Dim condID As String Dim condName As String Dim condBirth As String Dim condCheck As String WhereCond = ""  '変数の初期化。本当はいらないけど明示的に '氏名ID(検索条件入力がテキストボックスとする) 'ちなみにテーブル1の氏名IDは長整数型でないといけません。 If Me!氏名ID.Value <> "" Then   condID = "(テーブル1.氏名ID = " & CLng(Me!氏名ID.Value) & ")"   WhereCond = WhereCond & " AND " & condID End If 'CLngでテキストボックスの内容を長整数型に変換 '名前(検索条件入力がテキストボックスとする) If Me!名前.Value <> "" Then   condName = "(テーブル1.名前 LIKE '*" & Me!名前.Value & "*')"   WhereCond = WhereCond & " AND " & condName End If 'あいまい検索なのでLIKEとワイルドカード(*)を使用 'テキスト型なので、"'"(シングルクォーテーション)で括らないといけない '誕生日(検索条件入力がテキストボックスとする) 'このテキストボックスには、"2002/1/2"など、日付と認識出来る文字列でないといけない If Me!誕生日.Value <> "" Then   condBirth = "(テーブル1.誕生日 = #" & Me!誕生日.Value & "#)"   WhereCond = WhereCond & " AND " & condBirth End If '日付型なので、"#"で括らないといけない 'チェック欄(検索条件入力がチェックボックスとする) If Me!チェック欄.Value = True Then   condCheck = "(テーブル1.チェック欄 = " & True & ")" Else   condCheck = "(テーブル1.チェック欄 = " & False & ")" End If WhereCond = WhereCond & " AND " & condCheck 'ちなみにこの場合だとチェックがある人とない人を両方検索することは出来ない 'この時点で、WhereCondは必ず先頭に" AND "の5文字があるので、Mid関数で6文字目以降を取り出す WhereCond = Mid(WhereCond, 6) '[検索結果フォーム]を開く DoCmd.OpenForm 検索結果フォーム,acNormal,, WhereCond 'なお、予めテーブル1をソースにした[検索結果フォーム]を作成しておく 'フォームの作成は普通に新規作成で、最初の"基になるテーブル"にテーブル1を選択して行えばいいです これらを例えば検索条件入力フォームの[検索]コマンドボタンのClickイベントに書けばOK では。

KODAMAR
質問者

お礼

たびたびありがとうございます。 maruru01さんがおっしゃったとおりに以下の用に記入してみました。 Private Sub コマンド8_Click() Dim SQL As String Dim wherecond As String Dim condID As String Dim condName As String Dim condBirth As String Dim condCheck As String wherecond = "" '[氏名ID] If Me!氏名ID.Value <> "" Then condID = "(テーブル1.氏名ID = " & CLng(Me!氏名ID.Value) & ")" wherecond = wherecond & "and " & condID End If '[名前] If Me!名前.Value <> "" Then condName = "(テーブル1.名前 like '*" & Me!名前.Value & "*')" wherecond = wherecond & "and" & condName End If '[誕生日] If Me!誕生日.Value <> "" Then condBirth = "(テーブル1.誕生日 =#" & Me!誕生日.Value & "#)" wherecond = wherecond & "and" & condBirth End If '[チェック欄] If Me!チェック欄.Value = True Then condCheck = "(テーブル1.チェック欄 =" & True & ")" Else condCheck = "(テーブル1.チェック欄=" & False & ")" End If wherecond = wherecond & "and" & condCheck wherecond = Mid(wherecond, 6) DoCmd.OpenForm 検索結果フォーム, acNormal, , wherecond End Sub ------------------------------ Dim SQL As String Dim wherecond As String Dim condID As String Dim condName As String Dim condBirth As String Dim condCheck As String に「Dim condName As String」が二つあったので、独断で消してしまったのですが大丈夫でしょうか? 以上をクリック時のイベントプロシージャにかきこみ実行を行うと -------------------- 実行時エラー ‘2494’; このアクションまたはメソッドを実行するには、[Form Name/フォーム名]引数が必要です。 -------------------- と出てしまうのです。 どこが間違っているのでしょうか? テーブル1の 氏名ID「数値型[長整数型]] もちゃんとなっているようなのですが。。。 何度も何度も本当にすいません。

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

再びmaruru01です。 ・・・以下略 のところは、変数(私が勝手に作りましたが、任意に付け直して下さい)の宣言をして下さい。全てStringです。 SQLステートメントは、クエリのデザインモードでメニューの[表示]→[SQLビュー]で見られるもの同じです。 ただし、文末の";"(セミコロン)は要りません。 また、改行しているところは、半角スペースでつなげます。 あと、名前はあいまい検索なので、LIKE演算子と*(ワイルドカード)を使用しています。(また、文字列なので、"'"(シングルクォーテーション)で括っています。) これが例えば、名前IDが数値型(長整数)なら、 condID = "(テーブル1.名前ID = " & CLng(Me!名前ID.Value) & ")" となります。 これらをANDでつなげると、(先頭の" AND "は取る) WhereCond = "(名前IDの条件式) AND (名前の条件式) ・・・" という風になります。 その後は、検索(抽出)結果をどうするのかによります。 結果フォームを開いて結果を表示するなら DoCmd.OpenForm フォーム名, acNormal,, WhereCond すでにテーブル1を元にしたフォームを開いているなら Forms!フォーム名.Filter = WhereCond Forms!フォーム名.FilterOn = True これでフォームにフィルタを適用する 結果テーブルを新たに作るなら SQL = "SELECT * INTO 新テーブル名 FROM テーブル1・・・" DoCmd.RunSQL SQL などなどです。 詳細はVBEの画面からヘルプを開いて、"SQL"などで検索して下さい。 では。

KODAMAR
質問者

お礼

再びありがとうございます! 今実際のもので試すのが怖いので(汗)試しに簡単なものをつくって試しています。 「テーブル1」 ・氏名ID[数値型] ・名前[テキスト] ・誕生日[日付] ・チェック欄[Yes/No] となっています。 これから抽出するために検索フォームの実行ボタンに、maruru01さんから教えていただいたものを入力しているところですが、 Dim SQL As String Dim WhereCond As String Dim condName As String Dim condID Dim condName Dim condBirth Dim condCheck '[氏名ID] WhereCond = "" If Me!氏名ID.Value = "" Then condID = "" Else condID = "(テーブル1.氏名ID)" LIKE '*" & Me!氏名ID.Value & "*')" WhereCond = WhereCond & "AND" & condID End If WhereCond = Mid (WhereCond,6) <この「6」は?? SQL = "SELECT * FROM テーブル1"& "WHERE" & WhereCond DoCmd.Run SQL SQL DoCmd.OpenForm 検索結果フォーム,acNormal,, WhereCond End Sub のようになっています。 これに「名前」を付け加えるとしたらどこに入れたらいいんでしょうか? 同じように、 WhereCond = "" If Me!名前.Value = "" Then    : と氏名IDのEnd Ifの下に続ければいいんでしょうか? 何度もすいませんが宜しくお願いします。

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

こんにちは。maruru01です。 私なら、クエリは作らず、コードで直接SQLステートメントを書いて実行します。 仮に[検索条件入力フォーム]に[検索]というコマンドボタンがあるなら、そのClickイベントに記述します。 そこで、検索条件(WHERE句)は、 Dim SQL As String Dim WhereCond As String Dim condName As String Dim condID ・・・以下略 '[名前]項目は、 WhereCond = "" If Me!名前.Value = "" Then   condName = "" Else   condName = "(テーブル1.名前 LIKE '*" & Me!名前.Value & "*')"   WhereCond = WhereCond & " AND " & condName End If '他の項目、condID、condDate、condCheck1、condCheck2も同じ感じで 'WhereCondの後ろに順番につなげていきます。 '先頭の" AND "を除きます。 WhereCond = Mid(WhereCond, 6) 'それで全体のSQLステートメントは SQL = "SELECT * FROM テーブル1 " & _    "WHERE " & WhereCond 'で、これを実行 DoCmd.RunSQL SQL SQLステートメントは必要に応じて、INSERT文にしたり、INTO句をつけたりして下さい。 では。

KODAMAR
質問者

お礼

すいません、SQLの知識がないのでよくわからないのですが、 これをこのまま入れてしまえばできるのでしょうか? >Dim condID >・・・以下略 のあとはどうすればいいのでしょうか? すいませんが、宜しくお願いします。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

SQLを記述するのが正解ですが、クエリでも何とかなると思いますよ 1:クエリのフィールドに、 氏名条件:Nz([氏名]) という列を追加してください。 2:んで、この列の[表示]チェックボックスを外してください。 3:んで、氏名欄の抽出条件を切り取って、この列の抽出条件をに貼り付けてください これで、検索条件入力フォームの氏名欄が空白のときは氏名での絞込みを(見かけ上)行わなくなるはずです。 ただし、速度的にはかなり低下します。 現実的には、冒頭に書いたようにSQLを使うのがいいですね。 過去の質問を検索すれば、SQLについてもある程度は使いこなせるようになるんじゃないかと思います。 PS.「検索がうまくいきません。」について、どううまくいかなかったのかが分からなかった為、半ば以上推測で回答しています(^^; (上記の解釈で合っているような気はするのですが(気のせい?)) 「検索がうまくいきません。」ではなく例えば、 1:どんな結果が出て来てしまうのか。 2:どんな結果が出て来て欲しいのか。 ってな感じで補足していただけると、更なる回答がつくかもしれませんね。

KODAMAR
質問者

補足

回答ありがとうございます。 このような方法があるんですね、初めて知りました。 >3:んで、氏名欄の抽出条件を切り取って、この列の抽出条件をに貼り付けてください とあるのですが、例えば、上記の例ですと、「氏名ID」のクエリーの抽出条件欄には何も入っていないことになるのですが、 この場合はどうしたら・・・? なんだか自分が勘違いしているような気になってきたのですが、、宜しくお願いします。 >PS.「検索がうまくいきません。」について、どううまくいかなかったのかが分からなかった為、半ば以上推測で回答しています(^^; (上記の解釈で合っているような気はするのですが(気のせい?)) はい、すいませんでした。 「検索がうまくいきません」とは、「検索を行った場合に空欄があるものが検索した時に出てこない」といえばわかっていただけますでしょうか? すべての項目が入っていればいいのですが、入っていないと、検索をかけてもないものとして扱われてしまっているようで。。。 例えば、氏名IDに何も入っていなくて、でも「田中」という名前の人のデータが入っていた場合に、名前で「田中」で検索してもその人は検索結果に反映されないのです。 わかっていただけましたでしょうか?? また何かありましたら補足要求してください。 宜しくお願いしますm(_ _)m

関連するQ&A

  • ACCESSでクエリーを使った検索

    VBAを使えば簡単にできるのですが、事情があり、クエリーのみで行わなければいけません。 フォームに入力された情報を元に検索できるクエリを作成しました。 通常でしたらクエリのフィールド名の下の抽出条件に Forms![F_検索]![検索条件1] とすればいいのですが、これが複数の条件を設定した場合はすべての条件を入力しないと、検索結果が出ないことから 以下のように変更しました。 フィールド名の抽出条件には何も書かず、別に式として IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=[Forms!]![F_検索]![検索条件1])) と入力しそこの抽出条件に「True」と入力しました。 これで何も入力されてない場合は全件が表示されるようになりました。 通常の検索はこれでいいのですが疑問点が2点あります。 1.期間を抽出する場合はどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Between [Forms!]![F_検索]![検索条件1] and [Forms!]![F_検索]![検索条件2])) とかしてみましたがダメでした。 2.あいまい検索をするにはどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Like [Forms!]![F_検索]![検索条件1])) なんてしてみましたがだめでした。 ご回答よろしくお願いします。

  • アクセスである文字を含む検索2

    先ほど同じタイトルで質問して、お答えいただいて、それで成功したかにみえたのですが、よくみたら、なぜかテーブルよりクエリの方が多い。おかしいなと思い、[顧客名テーブル]を作成し、 お答えいただいた以下の抽出条件に、 Like Iif(IsNull([Forms]![検索フォーム]![検索]),[顧客名テーブル]![顧客名],'*'&[Forms]![検索フォーム]![検索]&'*') としたら、 件数はきちんと表示されました。 しかし、今度は検索ボタンを押すときに「パラメータの入力」ダイアログが表示され、 [Forms]![検索フォーム]![検索]),1,Unknown と表示され、無視すると、きちんと検索できなくなってしまいました。 すみませんがどうしたら解消できるか、教えてください。 よろしくおねがいします。

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

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

  • アクセスクエリでの空白の値の表示

    フォームで条件フィールドから2つ同時の検索をかけたく クエリに以下の式を記載致しました。 検索はかかるのですが空白のデータがでてきません。 空白のデーターも表示させたいためにはどうしたらいいでしょうか? 式1: IIf(IsNull([Forms]![フォーム]![条件1]) And IsNull([Forms]![フォーム]![条件2]),True,[条件]=[Forms]![フォーム]![条件1]Or [条件]=[Forms]![フォーム]![条件2] 抽出条件  True

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

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

  • フォームからクエリの抽出期間を指定するにあたって

    フォームのテキストボックス(開始日付,終了日付)に入力された期間内の レコードをクエリで抽出するために、以下のような抽出条件を設定しています。 Between [Forms]![フォーム1]![from date] And [Forms]![フォーム1]![終了日付] ここまでは問題なく出来ています。 ですが、例えばテキストボックスに何も入力していないときに、 全ての期間から全件表示させるような方法はありませんでしょうか? IIf(IsNull([Forms]![フォーム1]![開始日付]),True,~ というような形で、IIfとIsNullの組み合わせも考えたのですが、 日付は直接フィールドでは無く抽出条件のため、 Trueより後が設定できずに悩んでおります。 出来ればVBAは使いたくないのですが、 何か良い方法はありませんでしょうか?

  • ACCESSのあいまいな条件のクエリ 

    フォームで金額を入力します。 この入力された金額を使ってクエリの条件を作りたいと考えています。 <条件> ・金額が未入力の場合は、全て抽出。 ・金額が入力されている場合は、その金額以上を抽出   (例:1000と入力された場合は、>=1000) 下記のような条件式を入れたら、金額を入力しているにも関わらず、 何も入力されてきませんでした。 IIf(IsNull([Forms]![フォームA]![txt金額]),Like "*",>=Val([Forms]![フォームA]![txt金額]))

  • Access フォームコンボボックス空白をクエリで抽出したい

    現在access2000を使って、 フォーム1内にコンボボックスを作って コンボボックス内に1,2,3 と項目を入れています。 一方、クエリを使って、上記フォーム内のコンボボックスをつなげて1,2,3をそれぞれ抽出することはできるのですが、 1から3まで全てをiif関数などで 抽出したいと考えてします。 僕が考えた関数は iif(isnull([フォーム1][コンボ1]),is not null ,[フォーム1][コンボ1]) とクエリ抽出条件内に入力すると、結果は、 1、2、3をそれぞれフォームコンボボックスで選択すれば、クエリに反映されるのですが、コンボボックス内を「空白」の状態にすると、1,2,3すべてがクエリで抽出されるのではなく、何も抽出されないという結果になってしまいます。 どうすれば、クエリで1から3すべてを抽出することができるのでしょうか?多分、iif関数内の「空白」は空白として処理されないような気がします。 よろしくお願いします。

  • Access2000 抽出について

    どうしてもわからないので教えてください。 選択クエリで、「フリガナ」というフィールドに、 Like IIf(IsNull([Forms]![F_顧客検索]![カナ検索]),"*",[Forms]![F_顧客検索]![カナ検索] & "*") でフォームからクエリを実行させるようにしているのですが、 フリガナが空白のレコードは抽出されてくれません。 「*」でなく、なんと入れればいいのでしょうか? ちなみに他に、「自宅電話番号」というフィールドに、 Like IIf(IsNull([Forms]![F_顧客検索]![電話検索]),"*" & "*",[Forms]![F_顧客検索]![電話検索] & "*") など、似たような感じで抽出をかけています。 よろしくお願いします。

  • <access クエリのあいまい検索>

    <access クエリのあいまい検索> こんにちわ。以前,クエリについて質問した者です。(前回質問番号:6003331) 引き続き,質問です。 前回はクエリでのあいまい検索の式についての質問でした。 今回は同じクエリで追加として別のフィールドでも同時にあいまい検索を行いたいと思っています。 名前,住所,連絡先等がある住所録があります。 クエリを使って,任意の文字検索をするように設定しています。 前回ここで教えて頂き,「京都」と入れたら,「京都市」も「京都群」もヒットするようになりました。 今回は同時に他のフィールドの検索値が入っていたら,それも一緒に表示させるようにしたいのです。 具体的には下記のとおりです。 1)住所のフィールドに「京都」が含まれている人,かつ,「田中」という文字を含む人を検索 2)単に「田中」という文字を含む人を検索 現在の入力値は下記のとおりです。 ご指導お願いします。 ■今,入力されていること フィールド:IIf(IsNull([forms]![frm条件検索]![住所名]),True,[住所名] Like "*" & [forms]![frm条件検索]![住所名] & "*") テーブル・並び替え=空欄 表示:チェックが入っています。 抽出条件:true