名前なし
2024/05/09 (木) 10:59:59
b4927@fc3ed
Dim strFilter As String
・String 型の変数の初期値は Null ではなく空文字列である。
・String 型の変数に Null を代入することは出来ない。
If Not IsNull(strFilter) Then
・したがって、上記の条件式の結果は常に True となる。
If strFilter <> "" Then
Me.FilterOn = True
Else
Me.FilterOn = False
End If
・フォームの Filter プロパティに何らかの Where 条件が設定されていても、
FilterOn プロパティが False である状態であればフォームフィルターは
適用されず、レコードソースの全てのレコードが表示される。
Dim strSQL As String
strSQL = "SELECT * FROM テーブル名 Where " & Me.Filter & ";"
CurrentDb.QueryDefs("Q_Dummy").SQL = strSQL
・[ホーム]タブ上の[フォームの実行]ボタンや、フォームの移動ボタン上の
[フィルター適用/フィルター処理なし]ボタンをユーザーがクリックすることによって
フォームフィルターが解除され得ることを想定するのであれば、Filter プロパティの
値が空文字列ではなく、かつ FilterOn プロパティの値が True である場合のみ、
SQL に WHERE 句を付加するようにすることが望ましい。
(でないと、フォーム上に全てのレコードが表示されているのに対し、
クエリ側ではレコードの抽出が行われているという矛盾した状態となり得る)
Dim strSQL As String
strSQL = "SELECT * FROM [テーブル名]"
If Me.Filter <> "" And Me.FilterOn = True Then
strSQL = strSQL & " WHERE " & Me.Filter
End If
strSQL = strSQL & ";"
CurrentDb.QueryDefs("Q_Dummy").SQL = strSQL
通報 ...
ハンドルネームを入力し忘れました、失礼。
あと[フィルターの実行]ボタンでした。