我有一個連續的訪問形式,在標題中有3個組合框來過濾數據。目前我有一個相當長的嵌套IF來檢查多少組合框正在使用,並涵蓋所有8個滲透。有3盒不是也不是不好,但我可能會增加第4或甚至第5,在這種情況下它會變得荒謬。訪問形式的動態編碼過濾器
是否有更簡單的方法來設置連續窗體的組合框過濾器?
目前代碼
Private Sub filters()
Dim fstr As String, rgS As String, piS As String, hcS As String
rgS = "research_group_id = " & Me.fRG
piS = "pi_id = " & Me.fPI
hcS = "healthcat_id = " & Me.fHC
If IsNull(Me.fRG) Then
If IsNull(Me.fPI) Then
If IsNull(Me.fHC) Then
' Do Nothing
Else
fstr = hcS
Call filton(Me.Name, fstr)
End If
Else
If IsNull(Me.fHC) Then
fstr = piS
Call filton(Me.Name, fstr)
Else
fstr = piS & " AND " & hcS
Call filton(Me.Name, fstr)
End If
End If
Else
If IsNull(Me.fPI) Then
If IsNull(Me.fHC) Then
fstr = rgS
Call filton(Me.Name, fstr)
Else
fstr = rgS & " AND " & hcS
Call filton(Me.Name, fstr)
End If
Else
If IsNull(Me.fHC) Then
fstr = rgS & " AND " & piS
Call filton(Me.Name, fstr)
Else
fstr = rgS & " AND " & piS & " AND " & hcS
Call filton(Me.Name, fstr)
End If
End If
End If
End Sub
上面的代碼中每個組合框的更新後解僱。
Public Function filton(frmname As String, fstr As String)
With Forms(frmname)
.FilterOn = False
.Filter = fstr
.FilterOn = True
End With
End Function
非常好。開始時沒有想到它會起作用,但忘了在最後添加「Call Filton(me.name,fstr)」。非常感謝! – 2013-03-22 10:24:45
沒有看到已刪除的評論,但沒有'vbnullstring',它工作正常。 – 2013-03-22 10:50:08