使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
> 内容について上記の画像にまとめてみました。フォームのレイアウトについては> 添付頂いたものと同じようなものです。
ではまず、フォームヘッダーセクション上に配置されている
3 つのテキストボックス([住所名入力], [棟入力], [戸番入力])の
[コントロールソース]プロパティを全て空白にして下さい。
(連結テキストボックスではなく、非連結テキストボックスにする)
> 検索ボタンのプロパティ→イベント→クリック時のコード画面
[検索ボタン]および[クリアボタン]の[クリック時]イベントの発生時に
実行するイベントプロシージャを記述する場合は、例えば次のような
コードになるでしょう。
(フォーム[検索画面]のフォームモジュール)
Option Compare Database
Option Explicit
'コマンドボタン[検索ボタン]の[クリック時]イベント
Private Sub 検索ボタン_Click()
'フォームフィルターの設定処理を呼び出す
Call subSetFilter
End Sub
'コマンドボタン[クリアボタン]の[クリック時]イベント
Private Sub クリアボタン_Click()
'条件入力用の非連結テキストボックスの値を全て Null にする
Me![住宅名入力] = Null
Me![棟入力] = Null
Me![戸番入力] = Null
'フォームフィルターの設定処理を呼び出す
Call subSetFilter
End Sub
'フォームフィルターを設定するサブルーチン
Private Sub subSetFilter()
'フィルター条件式を生成するための変数の宣言
Dim strFilter As String
'テキストボックス[住宅名入力]の値が Null ではない場合
If IsNull(Me![住宅名入力]) = False Then
'フィールド[住宅名]に対する条件を追加する
strFilter = strFilter & \_
" AND ([住宅名] Like '\*" & Replace(Me![住宅名入力], "'", "''", , , vbBinaryCompare) & "\*')"
End If
'テキストボックス[棟入力]の値が Null ではない場合
If IsNull(Me![棟入力]) = False Then
'フィールド[住宅名]に対する条件を追加する
strFilter = strFilter & \_
" AND ([棟] Like '\*" & Replace(Me![棟入力], "'", "''", , , vbBinaryCompare) & "\*')"
End If
'テキストボックス[戸番入力]の値が Null ではない場合
If IsNull(Me![戸番入力]) = False Then
'フィールド[住宅名]に対する条件を追加する
strFilter = strFilter & \_
" AND ([戸番] Like '\*" & Replace(Me![戸番入力], "'", "''", , , vbBinaryCompare) & "\*')"
End If
'先頭の" AND "を取り除く
strFilter = Mid(strFilter, 6)
'イミディエイトウィンドウに変数 strFilter の値を出力する(デバッグ用)
Debug.Print strFilter
'このフォームの[フィルター]プロパティの設定
Me.Filter = strFilter
'何らかの条件が指定されている場合(True)はフィルターを適用し、
'何の条件も指定されていない場合(False)はフィルターを解除する
Me.FilterOn = (strFilter <> "")
End Sub