いつもお世話になっております。ちょっと困っています。AV資料の管理にAccessを利用していますが、曖昧検索をしたいので、クエリで、
Like "*" & [筆者・監督名は?:] & "*"
で監督名に"黒沢"と入力すると、きちんと表示されますが、あいまい検索の項目を増やすと、例えば、
邦題タイトルとか、同じように
Like "*" & [邦題は?:] & "*"
なんて検索しようとし、ただし、その部分に何も入れないで先程の監督名に"黒沢"と入れると、なぜか、件数が減ってしまいます。原因としては、邦題の部分で何もない場合には何も表示されなくて、邦題と監督名にきちんと入っていれば、監督名検索でHITします。
これをあいまい検索複数で、監督名だけで、全ての件数(邦題が空白でも表示)が表示されるようにするには、クエリ部分でどのように表示させればいいのでしょうか?
分りにくい内容ですが、どなたかお知恵をお貸し下さい。
No.6ベストアンサー
- 回答日時:
ちょっとだけ解説。
ワイルドカードをヘルプで調べると、
「*」は0文字以上の文字列 とあります。
Null は文字列ではないので Like '*' ではヒットしません。
Nz は Null値を置き換える関数です。
Nz([邦題],"") は
IIf(IsNull([邦題]),"",[邦題]) と同じです。
Nz([邦題],"") を Like "*" & [邦題は?:] & "*"
で検索すると、元Nullのものが、"" になっていますから
[邦題は?:] に未入力で全件ヒットになります。
No1さんの
[邦題]を Like "*" & [邦題は?:] & "*" Or Is null
で検索でもよさそうですが、
監督名が未入力で、邦題を入力した場合に
余計なものがヒットしてしまいます。
試行錯誤しながら、どうもNULLの場合の処理がおかしいと気付いたのですが、アクセスは得意ではないので、どのようにかけばいいのか悩んでましたが、どうにかめどが立ちました。
ありがとうございます。今回NZ関数を覚えた事で、NULL値を強制的に""にする事でHITできるなんて、技を教えて頂いて、感謝しております。暫く、そのままにしておりますが、私以外にも参考になったかた多いと思います。大変勉強になりました。ありがとうございます。
No.7
- 回答日時:
なるほど、bonaronさんやm3_makiさんのことがただしいですね。
変更するとSQL文が簡単になるのと、前のバグがなおりますね。
-------------------------------------------------
SELECT Authority1,Title1
FROM (SELECT Nz(Authority,"") AS Authority1,Nz(Title,"") AS Title1 FROM ITEM_TBL)
WHERE Authority1 Like "*" & [著者・監督名は?:] & "*" AND Title1 Like "*" & [邦題は?:] & "*"
-------------------------------------------------
No.5
- 回答日時:
邦題タイトルのフィールド名を「邦題」とします。
クエリにフィールドを追加。
フィールド:Nz([邦題],"")
抽出条件: Like "*" & [邦題は?:] & "*"
他の文字列の項目で Nullの可能性があるものは
同じパターンで。
この回答への補足
今までNZでフィールドを追加した事がないのですが、
Nz([邦題],"") と言う項目をフィールに追加するには、どのようにすればいいのでしょうか?
クエリには、現在あるものしか追加した事なくて、
Nz([邦題],"")と言う名前を追加してもエラーになってしまいます。
簡単な操作だとは思うのですが、どうもうまくできません。どのような手順でNz([邦題],"")と言うフィールドを作成できるかご教授くださいませ。
出来ました。何だか混乱しましたが、
邦題1:Nz([邦題],"")
と入力したら邦題の部分で未入力にしても、"黒沢"と言う文字で検索もきちんとでき、かつ、邦題の部分に適当な文字を入れてもHITするようになりました。
ありがとうございます。
後一息です。ありがとうございました。
No.4
- 回答日時:
1.筆者・監督名のテーブルでのカラム名をAuthority
2.邦題のカラム名をTitle
3.テーブル名をITEM_TBL
とします。
まずVBAで関数を2個作ります。中身は一緒ですがAuthorityとTitleの二つがあるので、2個です。
---------------------------------
'モジュールレベルの変数を4つ作ります。
Private iCount1 As Integer '何回目の呼び出しかを覚えておくための変数
Private strData1 As String '入力されたデータ保持用
Private iCount2 As Integer
Private strData2 As String
Function myQuery1(strCondtion As String) As String
If strCondtion1 = "**" Then
myQuery1 = ""
iCount1 = iCount1 + 1
Else
If iCount1 = 0 Then
myQuery1 = strCondtion1
strData = strCondtion1
iCount1 = iCount1 + 1
Else
iCount1 = 0
myQuery1 = strData
End If
End If
End Function
'
Function myQuery2(strCondtion As String) As String
If strCondtion2 = "**" Then
myQuery2 = ""
iCount2 = iCount2 + 1
Else
If iCount2 = 0 Then
myQuery2 = strCondtion2
strData = strCondtion2
iCount2 = iCount2 + 1
Else
iCount2 = 0
myQuery2 = strData
End If
End If
End Function
---------------------------------
ここまでできたら後はSQL文です。
考え方としてはNullのデータもまず取り出し、その後Nullを""の0文字列に変更してあいまい検索にかけます。
SQL文-----------------------------
SELECT Authority1,Title1
FROM ( SELECT IIF(Authority IS Null,"",Authority) AS Authority1,IIF(Title IS Null,"",Title) AS Title1 FROM ITEM_TBL WHERE (Authority Like myQuery1("*" & [筆者・監督名は?:] & "*") OR Authority IS Null) AND (Title Like myQuery2("*" & [邦題は?:] & "*") OR Title IS Null))
WHERE Authority Like myQuery1("") AND Title Like myQuery2("")
----------------------------------
うまく動かないときは、レスいただければ幸いです。
ありがとうございます。
ここまで考えていませんでした。
でも折角なので実際に当てはめてみますねぇ。
ここまで考える程の技術はありませんが、折角のご好意使わせて頂きます。
まずはお礼まで、
ありがとうございます。
No.2
- 回答日時:
質問の意味が良く理解できて居ないのかも知れませんが・・・
> Like "*" & [筆者・監督名は?:] & "*"
Like "*" & Nz([筆者・監督名は?:],"") & "*"
> Like "*" & [邦題は?:] & "*"
Like "*" & Nz([邦題は?:],"") & "*"
にしては、どうでしょう?
空白(Null値)の時に、「結果が出ない」、「件数が変らない」のどちらでもなく、「件数が減る」と言う理由が今ひとつ理解できないのですが・・・
And なら「結果が出ない」
Or なら「件数が変らない」
だと、思うのです。
この回答への補足
クエリの中で
Like "*" & [筆者・監督名は?:] & "*"
だけだと22件でるのですが、この他にも抽出項目があり、
Like "*" & [邦題は?:] & "*"
と言う項目も同じ用に設定し、
そこに何も条件を設定しないで通すと、
22件でると思ったら、5件しかHITしなかったんですよねぇ。
邦題の部分で何かしら文字がある場合に抽出されて、そうでない(何もない)場合では、HITしなくて、どうすれば、邦題に何もない場合でも抽出されるのかと思案してました。
NO1さんのお陰で無事思ったような事ができました。
所でこのNzと言うのは何か意味があるのでしょうか?
初めて見る書き方なのですが、教えていただけないでしょうか?お手数おかけしてすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- X(旧Twitter) Twitter検索から除外 1 2023/08/18 11:00
- X(旧Twitter) カギをかけているツイッターの検索について教えてください。 2 2022/11/07 17:22
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- 政治 これは自民党の作った現在の法律が悪いから、起こったのではないですか? 7 2022/05/06 10:22
- 政治 こんな監督を解雇できない、自民党の作った法律に問題がありますね? 4 2022/05/10 20:54
- Chrome(クローム) Chromeのアドレスバーに履歴等を表示させないようにしたい 2 2022/09/08 14:20
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
フォントについて教えてください!
みなさんの一番好きなフォントは何ですか? よく使うフォントやこのフォント好きだなあというものをぜひ教えてください!
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
集合写真、どこに映る?
あなたが集合写真を撮られるとき、画角のどのあたりにいることが多いですか? 私は振り返ってみると右の端にいることが多い気がします。
-
2024年においていきたいもの
2024年もあとわずかですが、いま抱えているもので「これは来年にもっていきたくないなぁ」というものを教えて下さい。
-
Accessクエリ 複数フィールドを対象に空白の場合は全件表示したい
Access(アクセス)
-
ACCESS クエリの抽出条件で全てを抽出したい
PowerPoint(パワーポイント)
-
<ACCESS>別テーブルのレコードのテキストデータが中に含まれるレコードを抽出する方法を教えてください
Access(アクセス)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
ACCESSでスペースの抽出
Access(アクセス)
-
6
IIF関数の使い方
Visual Basic(VBA)
-
7
検索フォームで空白を抽出したい
Access(アクセス)
-
8
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
9
フィルタ後のフォームの件数の取得の仕方
Access(アクセス)
-
10
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
11
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
-
12
Access レポートを開く時、2つの条件で昇順で並び替え
Access(アクセス)
-
13
クエリのデータをテーブルに入れたい
Access(アクセス)
-
14
2つ目のレコードの値を取得するには?
Access(アクセス)
-
15
アクセスのテキストボックスの初期値を空白に
Access(アクセス)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
18
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
19
アクセスVBAのMe!と[ ]
Access(アクセス)
-
20
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有頂天ホテル、YOUの歌ったタイ...
-
Accessのクエリで、あいまい検...
-
ハリー・ポッターとロードオブ...
-
映画の舞台挨拶って上映前?上...
-
年間、どれくらいの数の映画を...
-
フォレスト・ガンプのステッカ...
-
映画のエンドロール観る派?観...
-
ロード・オブ・ザ・リングのラスト
-
どこからが告白なのか?
-
ディズニーが、実写版人魚姫や...
-
パンフレットが先か、映画を観...
-
グロ映画のタイトルが思い出せ...
-
続編映画タイトルのバリエーシ...
-
ハリー・ポッターと炎のゴブレ...
-
同性の親友に告白されました
-
女性はお金払って話し相手にな...
-
皆さんに質問です。あなたの好...
-
ネタバレを嫌う人嫌わない人
-
ロード オブ ザ リングに詳しい...
-
35年前くらいの邦画です。タイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
有頂天ホテル、YOUの歌ったタイ...
-
Accessのクエリで、あいまい検...
-
「日々是好日」の英訳をお願い...
-
「リプレイスメント」の曲
-
はねるのトびらの短縮言葉
-
ナバロンの要塞ってモデルに...
-
映画の舞台挨拶って上映前?上...
-
結局、「アリータ・バトル・エ...
-
続編映画タイトルのバリエーシ...
-
どこからが告白なのか?
-
ディズニーが、実写版人魚姫や...
-
フォレスト・ガンプのステッカ...
-
猿の惑星の結末
-
映画のエンドロール観る派?観...
-
年間、どれくらいの数の映画を...
-
ハリー・ポッターとロードオブ...
-
ロード・オブ・ザ・リングのラスト
-
ハッピーエンドの逆は?
-
「ボクを包む月の光」を読んで…
-
パンフレットが先か、映画を観...
おすすめ情報