
アクセスです。
テーブルに
フィールド1 フィールド2
A
B B
C C
と入ってるとします。
フィールド2についてはNULL値のレコードもあれば、
値が入ってる場合もあります。
このテーブルをフォームにひもづけていて、(帳票フォームにしています)
フォームヘッダーにテキストボックス2つとコマンドボタンがあり
Private Sub コマンド_Click()
Me.Form.Filter = _
"フィールド1 like '*" & Me.テキスト_1.Value & "*'" & " and " _
& "フィールド2 like '*" & Me.テキスト_2.Value & "*'"
Me.Form.FilterOn = True
End Sub
としたときに、レコードのフィールド2に文字が入ってる場合は、抽出できるのですが、
フィールド2がNULLの場合は、1件もヒットしません。
テキスト_1にはAを入れて
テキスト_2には何も入れないで検索してみると、1件もヒットしませんが、
テキスト_1にBを入れて検索すると、Bのレコードが抽出されます。
もちろん
テキスト_1もテキスト_2もBをいれても、Bのレコードが抽出されます。
VBAコードで
& "フィールド2 like '*" & Me.テキスト_2.Value & "*'"
としてるので、NULL値でも抽出されると思ったのですがなぜ何も抽出されないのでしょうか?
ワイルドカードでnull値も検索されないのでしょうか?
テーブルのフィールド2のデータをNull値ではなく、””にしたら、問題なく抽出されましたが
データのNull値はNull値のままにして、空白などの文字には置き換えたくないです。
(というか、すべてのNULL値に空白を入れる作業が大変なのでやりたくないです。
実際のフィールド数は50個くらいあります)
よろしくお願いします。

No.2ベストアンサー
- 回答日時:
テキスト_2 に入力がなかった場合、
> "フィールド2 like '*" & Me.テキスト_2.Value & "*'"
は、 "フィールド2 like '**'" となり、Null 以外全部・・・という意味になります。
Null のものも対象としたい場合には、条件を記述しない事です。
例えば
Dim sWhere As String
Const sAndOr = " AND "
sWhere = ""
If (Not IsNull(Me.テキスト_1)) Then
sWhere = sWhere & sAndOr & "フィールド1 like '*" & Me.テキスト_1 & "*'"
End If
If (Not IsNull(Me.テキスト_2)) Then
sWhere = sWhere & sAndOr & "フィールド2 like '*" & Me.テキスト_2 & "*'"
End If
If (Len(sWhere) > 0) Then
Me.Filter = Mid(sWhere, Len(sAndOr) + 1)
Me.FilterOn = True
Else
Me.FilterOn = False
Me.Filter = ""
End If
※
条件を記述する場合、文字列先頭に必ず sAndOr を付加します。
条件ありの場合は、先頭の sAndOr を除いた分を条件設定します。
>フィールド2 like '**'" となり、Null 以外全部・・・
ワイルドカードでnull値は抽出されないとのこと、覚えます。
頂いたコードの仕組みがよくわかりませんが、
(特にMe.Filter = Mid(sWhere, Len(sAndOr) + 1)の部分)
使わせていただきます。
ありがとうございました。
No.1
- 回答日時:
F1 F2
A
B B
C
としたら、クリック時イベントに
Me.Form.Filter = _
IIf(IsNull(Me!TX1), "(F1 like '*" & Me!TX1.Value & "*' or F1 is Null)", "(F1 like '*" & Me.TX1.Value & "*')") _
& " and " _
& IIf(IsNull(Me!TX2), "(F2 like '*" & Me!TX2.Value & "*' or F2 is Null)", "(F2 like '*" & Me.TX2.Value & "*')")
Me.Form.FilterOn = True
MsgBox Me.Filter
ということかな?
テキスト_1 → TX1、フィールド1 →F1 のようにしています。
Filterプロパティの中にIIF関数を入れることもできるのですか。
知りませんでした。
条件として、"*' or F1 is Null
としないと、null値は抽出されないようですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Access(アクセス) Accessテキストボックス内に2つのフィールドの値を比較して大きい方の値を表示させる方法 1 2022/09/09 10:50
- Access(アクセス) accessの日付フィールドから前年度だけを取り出したい 3 2022/04/13 23:13
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
このQ&Aを見た人はこんなQ&Aも見ています
-
アクセスのフィルタ nullについて。
その他(データベース)
-
Accessのフォームで、空欄のレコードを検索したい。
その他(データベース)
-
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
-
4
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
5
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
6
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
7
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
8
accessvba 複数条件でFilterをしたい
Access(アクセス)
-
9
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
10
ACCESSでクエリを作成したら「式が複雑すぎます。」の表記が…
その他(データベース)
-
11
ACCESS VBAの実行時エラーなんですが
PowerPoint(パワーポイント)
-
12
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
13
Access2010 「演算子がありません」エラー
その他(データベース)
-
14
access マクロでのフィルタの解除の方法
Access(アクセス)
-
15
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
16
Access 複数条件検索の設定が上手く行きません
Access(アクセス)
-
17
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
18
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
19
アクセスのOR検索
Access(アクセス)
-
20
ACCESSで条件によってフォーム上のフィールドの色を変更
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】列を折りたたみ非表...
-
9月17日でサービス終了らし...
-
【マクロ】アクティブセルの時...
-
ページが変なふうに切れる
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルの循環参照、?
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報