前回教えていただきました検索抽出のVBAですが、抽出がうまくできなくなってしまいました。
抽出条件を入力しているにもかかわらず、全部のデータが表示されてしまいます。
どこがまずいのかわかりましたら、ぜひ教えてください。
Private Sub btn_検索02_Click()
Dim kensaku As String
If Not Me![t_04] = "" Then kensaku = kensaku & _
"([舗装施行年度] Like '*" & Me![t_04] & "*') AND "
If Not Me![t_05] = "" Then kensaku = kensaku & _
"([舗装工事名] Like '*" & Me![t_05] & "*') AND "
If Not Me![t_06] = "" Then kensaku = kensaku & _
"([舗装区間01] Like '*" & Me![t_06] & "*') AND "
If Not Me![t_07] = "" Then kensaku = kensaku & _
"([舗装区間02] Like '*" & Me![t_07] & "*') AND "
If Not Me![t_08] = "" Then kensaku = kensaku & _
"([改良施行年度] Like '*" & Me![t_08] & "*') AND "
If Not Me![t_09] = "" Then kensaku = kensaku & _
"([改良工事名] Like '*" & Me![t_09] & "*') AND "
If Not Me![t_10] = "" Then kensaku = kensaku & _
"([改良区間01] Like '*" & Me![t_10] & "*') AND "
If Not Me![t_11] = "" Then kensaku = kensaku & _
"([改良区間02] Like '*" & Me![t_11] & "*') AND "
If Not Me![t_12] = "" Then kensaku = kensaku & _
"([台帳作図年度] Like '*" & Me![t_12] & "*') AND "
If Not Me![t_13] = "" Then kensaku = kensaku & _
"([台帳調査名] Like '*" & Me![t_13] & "*') AND "
If kensaku <> "" Then
kensaku = Left(kensaku, Len(kensaku) - 5)
DoCmd.OpenForm "検索結果", , , kensakum, acFormReadOnly
DoCmd.Maximize
DoCmd.Close acForm, Me.Name
End If
End Sub
ご返事遅くなりまして。ごめんなさい。
If Not Me![t_04] = "" Then kensaku = kensaku & _
"(IsNUll([舗装施行年度] OR " & _
"([舗装施行年度] Like '*" & Me![t_04] & "*')) AND "
「& _ 」が抜けてました。文字列生成ですら必要です。コペミスでした。ごめんなさい。
あぁ、また間違った。
If Not Me![t_04] = "" Then kensaku = kensaku & _
"(IsNUll([舗装施行年度] OR "
"([舗装施行年度] Like '*" & Me![t_04] & "*')) AND "
です。カッコが一つ多かったです。ごめんなさい。
質問者
補足
何度もありまがとうございます。
教えていただきましたコードでやってみたんですが、エラーが出てしまいました。
私が持っているマニュアル本には載っていなかったので、"()"をつけたりはずしたりといろいろやってみましたが、どこがエラーなのか発見できず、またまたお返事してしまいました。
"(IsNUll([舗装施行年度] OR "
"([舗装施行年度] Like '*" & Me![t_04] & "*')) AND "
ORとAND間は普通に改行してかまわないんですよね?
どうか見捨てずご享受ください。
そう来ましたか。(笑)
いつ言われるか…、気がきでは無かったす。(^^;
その項目に'Null'が入っているためです。nullを検索する場合は、名指しでIsNull([舗装施行年度])という風に検索しないとヒットしません。
If Not Me![t_04] = "" Then kensaku = kensaku & _
"([舗装施行年度] Like '*" & Me![t_04] & "*') AND "
は、
If Not Me![t_04] = "" Then kensaku = kensaku & _
"(IsNUll([舗装施行年度]) OR "
"([舗装施行年度] Like '*" & Me![t_04] & "*')) AND "
で、Nullが検索項目の一部のレコードにあってもヒットすると思います。
お礼
ほんとうに何度も何度もありがとうございました。 無事検索できました。 「& _ 」ですか~ なぜ気づかなかったんだろう… やはり基本を理解していないからちょっとトラブルとどうにもならなくなってしまうんですね もっともっと勉強します。 またわからないコトが出てきましたら、「またかよ~」と言わずアドバイスをよろしくお願いいたします。