我希望有一个复选框,当勾选时,将加载的数据过滤到仅包含至少一个月的数据,直到“预期对成熟”日期为止。这是我的尝试:
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
答案 0 :(得分:2)
设置过滤器可能很简单:
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
答案 1 :(得分:1)
在字符串和行连接& _
之后,您需要一个新的双引号来启动新字符串。
如果您在字符串中有"
,则必须将其屏蔽为""
。
在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
答案 2 :(得分:1)
你没有提到你的问题是什么 你可以按照你的方式去做,但我会使用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
或者你可以保持记录Source不变并使用过滤器:
If Me!LockFilter1Chk = True Then
docmd.applyfilter , "[Expected pair maturation] < DateAdd('m', -1, Date())"
else
me.filterOn = false
end if
注意:如果引号内有引号,您也可以在中使用单引号:
"DateDiff('m', Me![Expected pair maturation], Now()) > 1 "