我想要一个复选框,当它被选中时,它会过滤加载的数据以仅包含距离“预期对成熟”日期至少一个月的数据。这是我的尝试:
Private Sub LockFilter1Chk_Click()
If Me!LockFilter1Chk = True Then
Me.RecordSource = "SELECT * FROM staff " & _
WHERE DateDiff("m", Me![Expected pair maturation], Now()) > 1 "
End If
If Me!LockFilter1Chk = Not True Then
Me.RecordSource = "SELECT * FROM Staff "
End If
End Sub
设置过滤器可能很简单:
Private Sub LockFilter1Chk_Click()
If Me!LockFilter1Chk = True Then
Me.Filter = "[Expected pair maturation] < DateAdd("m", -1, Date())"
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub
字符串和行连接后
& _
你需要一个新的双引号来开始新的字符串。
如果字符串中有
"
,则必须将其屏蔽为 ""
。
在 SQL SELECT 记录源中,不要引用
Me!
。您正在比较表中的值,因此仅使用字段名称。
一些缩进有助于提高可读性。
这应该更接近(不确定它是否已经做了你想要的)。
Private Sub LockFilter1Chk_Click()
If Me!LockFilter1Chk = True Then
Me.RecordSource = "SELECT * FROM staff " & _
"WHERE DateDiff(""m"", [Expected pair maturation], Now()) > 1 "
Else
Me.RecordSource = "SELECT * FROM Staff "
End If
End Sub
你没有提到你的问题是什么。
你可以按照你的方式去做,但我会使用 if then else 构造:
Private Sub LockFilter1Chk_Click()
If Me!LockFilter1Chk = True Then
Me.RecordSource = "SELECT * FROM staff " & _
"WHERE [Expected pair maturation] < DateAdd('m', -1, Date())"
else
Me.RecordSource = "Staff"
End If
End Sub
或者您可以保留记录来源不变并使用过滤器:
If Me!LockFilter1Chk = True Then
docmd.applyfilter , "[Expected pair maturation] < DateAdd('m', -1, Date())"
else
me.filterOn = false
end if
注意:如果引号中有引号,也可以使用单引号inside:
"DateDiff('m', Me![Expected pair maturation], Now()) > 1 "
我可以同时使用吗? 1 个带有 recordsource 的过滤器比带有 filteron 的结果?谢谢!