|
▼ken さん:
こんにちは。
> 抽出用にフォームヘッダーに
> Field_Aに対応したコンボボックスと
> Filed_Bの抽出条件を決定するためのオプショングループを配置
かしこまりました。
その様な条件ですと、初めに投稿されたコードで
ほぼ問題ないですね。申し訳ないです。
Option Compare Database
Option Explicit
Const strWordB = "語句B"
Const strWordC = "語句C"
Const strWordD = "語句D"
Sub FormFilter()
Dim strFilter As String
If Not IsNull(Me.TextA.Value) Then
strFilter = " AND [Field_A] ='" & Me.TextA.Value & "'"
End If
Select Case Me.Ck1.Value
Case 1
strFilter = strFilter & " AND (" _
& " [Field_B] ='" & strWordB & "'" _
& " OR [Field_B] ='" & strWordC & "'" _
& ")"
Case 2
strFilter = strFilter & " AND (" _
& " [Field_B] ='" & strWordB & "'" _
& " OR [Field_B] ='" & strWordC & "'" _
& " OR [Field_B] ='" & strWordD & "'" _
& ")"
Case Else
End Select
If strFilter = "" Then
MsgBox "全件出力"
Else
Me.Filter = Mid(strFilter, 5)
Me.FilterOn = True
End If
End Sub
の様に記述し、Text_A や Ck1 の更新後処理に
Private Sub TextA_AfterUpdate()
Call FormFilter
End Sub
とする事でお望みの様な動作ができるかと思われます。
※この様な掲示版にご質問される際や
ken さん以外の方がこのAccessをメンテナンスする場合、
> TextAのコンボボックス
> Ck1はオプショングループ
という命名規則は混乱を招く場合がありますので
元のコントロールが想像しやすい名前に変えておいた方が
無難かもしれません。
以下蛇足です。
Accessが初期で付けるオプショングループ名は「フレーム1」ですが、
これをFrm_Aなどと省略すると「FormA」の略と混同される可能性がある為、
当方は Grp_A の様な命名規則を行っています。
|
|