実現したいこと
全てのレコードの個数フィールドが空白になった場合、会社名でかけていたフィルターが解除されるようにしたい。
前提
今現在、個数フィールドに入力された商品をまとめてサブフォームに入力するプログラムを作成しております。
その中で、発注は一つの会社に1つの発注書で行うため、1つ注文商品を選択した(個数を入力した)場合、その商品と同じ会社の商品のみが表示される仕組みを作成しました。
その中で、全ての個数フィールドが空白になった場合、フィルターが解除される仕組みの方も作ろうとしております。
しかし、個数フィールドが空白になった場合として、値がNULLでないフィールドを探して存在しなかった場合にフィルターを解除する仕組みにしているのですが、そのフィールドを探す仕組みがうまく作動せず、全て空白になった場合でも値があるものと認識してしまっております。
この仕組みを正常に作動させるのにはプログラムをどう改善すればよいのでしょうか。
発生している問題・エラーメッセージ
個数フィールドの値を消去したとき、値が空白でないか判別する機能が正常に作動しない。
該当のソースコード
Dim DB As DAO.Database 'データベースへの参照を代入する変数を宣言する Dim RS As DAO.Recordset 'レコードセットへの参照を代入する変数を宣言する Dim RS2 As DAO.Recordset Set DB = CurrentDb() '「Q_商品一覧」クエリを開きレコードセットを再設定する Set RS = DB.OpenRecordset("Q_商品一覧", dbOpenDynaset) '現在のレコードの個数フィールドが0もしくは空白でない場合、その会社名フィールドと同じ会社名でフィルターをかける。 If Me.個数 <> 0 Or Me.個数.Value <> Null Then 会社名.SetFocus RS.Filter = "会社名 LIKE '*" & Me.会社名.Text & "*'" Set RS = RS.OpenRecordset 'フォームのレコードセットを再設定する。 Set Me.Recordset = RS Me.Requery Else '現在のレコードの個数フィールドが空白である場合、「Q_商品一覧」クエリを開きレコードセットを再設定する Set RS2 = DB.OpenRecordset("Q_商品一覧", dbOpenDynaset) '個数が空白でないレコードを探し、存在しない場合フィルターを解除する。 RS2.FindFirst " 個数 IS NOT NULL " If RS2.NoMatch Then Set Me.Recordset = RS2 Me.Requery Else End If End If
試したこと
個数 IS NOT NULLをISNULL(個数) = FALSE に替えてみたが結果は同じだった。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー