Ms access 我的事件过程在单击时不执行任何操作
在Access中,我的VBA有两个问题:第一个是当我单击搜索按钮时,什么也没有发生,第二个是声明ME子句有错误Ms access 我的事件过程在单击时不执行任何操作,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,在Access中,我的VBA有两个问题:第一个是当我单击搜索按钮时,什么也没有发生,第二个是声明ME子句有错误 Private Sub Search_Click() Dim strWhere As String, lngLen As Long Const conJetDate = "\#mm\/dd\/yyyy\#" strWhere = "" If Not IsNull(Me.AssignedTo) Then strWhere = strWhere & "(
Private Sub Search_Click()
Dim strWhere As String, lngLen As Long
Const conJetDate = "\#mm\/dd\/yyyy\#"
strWhere = ""
If Not IsNull(Me.AssignedTo) Then
strWhere = strWhere & "([AssignedTo] Like '*" & Me.AssignedTo & "*') AND"
End If
If Not IsNull(Me.OpenedBy) Then
strWhere = strWhere & "([OpenedBy] Like '*" & Me.OpenedBy & "*') AND"
End If
If Not IsNull(Me.Status) Then
strWhere = strWhere & "([Status] Like '*" & Me.Status & "*')AND"
End If
If Not IsNull(Me.Category) Then
strWhere = strWhere & "([Category] Like '*" & Me.Category & "*')AND"
End If
If Not IsNull(Me.Priority) Then
strWhere = strWhere & "([Priority] Like '*" & Me.Priority & "*')AND"
End If
If Not IsNull(Me.OpenedDateFrom) Then
strWhere = strWhere & "([EnteredOn] >= " & Format(Me.OpenedDateFrom, conJetDate) & ") AND "
End If
If Not IsNull(Me.DueDateFrom) Then
strWhere = strWhere & "([EnteredOn] <= " & Format(Me.DueDateFrom, conJetDate) & ") AND "
End If
lngLen = Len(strWhere) - 5
If lngLen <= 0 Then
MsgBox "No criteria", vbInformation, "Nothing to do."
Else
End If
strWhere = Left$(strWhere, lngLen)
Me.Filter = strWhere
Me.FilterOn = True
End Sub
Private Sub Search\u Click()
线一样暗,格伦一样长
Const congetdate=“\\\\ mm\/dd\/yyyy\\”
strWhere=“”
如果不为null(Me.AssignedTo),则
strWhere=strWhere&“([AssignedTo]类似“*”&Me.AssignedTo&“*”)和”
如果结束
如果不是IsNull(Me.OpenedBy),那么
strWhere=strWhere&“([OpenedBy]类似“*”&Me.OpenedBy&“*”)和”
如果结束
如果不是IsNull(Me.Status),则
strWhere=strWhere&“([Status]如“*”&Me.Status&“*”)和”
如果结束
如果不为空(Me.Category),则
strWhere=strWhere&“([Category]如“*”&Me.Category&“*”)和”
如果结束
如果不为null(Me.Priority),则
strWhere=strWhere&“([Priority]如“*”&Me.Priority&“*”)和”
如果结束
如果不为null(Me.OpenedDateFrom),则
strWhere=strWhere&([EnteredOn]>=“&Format(Me.OpenedDateFrom,congetdate)&”)和”
如果结束
如果不为null(Me.DueDateFrom),则
strWhere=strWhere&“(输入)我确信你必须Me.Requery
或Me.Refresh
在你设置Me.Filter
之后。另外,对于日期,你必须用#
包围它们。我确信你需要使用4而不是5来删除额外的和
。最后,我将字符串上的分隔符改为”
。这只是我个人的偏好。请参阅代码:
Private Sub Search_Click()
Dim strWhere As String
strWhere = IIF(Len(Me.AssignedTo & "") <> 0, "([AssignedTo] Like ""*" & Me.AssignedTo & "*"") AND", "") & _
IIF(Len(Me.OpenedBy & "") <> 0, "([OpenedBy] Like ""*" & Me.OpenedBy & "*"") AND", "") & _
IIF(Len(Me.Status & "") <> 0, "([Status] Like ""*" & Me.Status & "*"") AND", "") & _
IIF(Len(Me.Category & "") <> 0, "([Category] Like ""*" & Me.Category & "*"") AND", "") & _
IIF(Len(Me.Priority & "") <> 0, "([Priority] Like ""*" & Me.Priority & "*"") AND", "") & _
IIF(Len(Me.OpenedDateFrom & "") <> 0, "([EnteredOn] >= #" & Format(Me.OpenedDateFrom, "mm/dd/yyyy") & "#) AND", "") & _
IIF(Len(Me.DueDateFrom & "") <> 0, "([EnteredOn] <= #" & Format(Me.DueDateFrom, "mm/dd/yyyy") & "#) AND", "")
If Len(strWhere & "") = 0 Then
MsgBox "No criteria", vbInformation, "Nothing to do."
Else
Me.Filter = Left(strWhere, Len(strWhere & "") - 4)
Me.FilterOn = True
Me.Requery
End If
End Sub
Private Sub Search\u Click()
作为字符串的Dim strWhere
strWhere=IIF(Len(Me.AssignedTo&“)0,([AssignedTo]类似“*”&Me.AssignedTo&“*”)和“,”)&_
IIF(Len(Me.OpenedBy&“)0,([OpenedBy]类似于“*”&Me.OpenedBy&“*”)和“,”)&_
IIF(Len(Me.Status&“)0、([Status]类似“*”&Me.Status&“*”)和“,”)和_
IIF(Len(Me.Category&“0”([Category]如“*”&Me.Category&“*”)和“,”)和_
IIF(Len(Me.Priority&“0”([Priority]如“*”&Me.Priority&“*”)和“,”)和_
IIF(Len(Me.OpenedDateFrom&“)0、([EnteredOn]>=#“&格式(Me.OpenedDateFrom,“mm/dd/yyyyy”)&“#”)和“,”)&_
IIF(Len(Me.DueDateFrom&“”)0,([EnteredOn]如果您不一定需要宏,创建事件过程而不是宏应该可以解决您的问题。为按钮创建事件过程的简单方法是在“设计”视图中右键单击按钮,然后单击“生成事件”。然后您可以将宏中的代码复制并粘贴到事件过程中,并删除宏。我很困惑。如果单击搜索时什么都没有发生,您如何知道第二个问题的相关信息?BTB,您应该一次只问一个问题,尝试通过调试或使用MsgBox进行测试,例如MsgBox(Me.Status)因为我创建了一个宏并运行了它,然后出现了调试问题。你知道为什么事件过程没有做任何事情吗?如果你不是绝对需要一个宏,那么创建一个事件过程而不是一个宏应该可以解决你的问题。选项显式设置了吗?谢谢你回复玲儿,当我插入你的代码并单击搜索时事件尚未触发。@user3666237,我修改了代码。请尝试我的更新,看看它是否适用于您。此外,您可能希望查看您真正需要的版本。当我单击“搜索”按钮时,什么都没有发生。您知道原因吗?@LInder谢谢,我意识到代码是有效的,但出于某种原因,我表单中的表没有响应vba command筛选器。在我的代码中,引用了我试图在表单中筛选的表。@user3666237,我猜您已将记录源属性设置为希望表单使用的表。应用筛选器将根据您在表单上设置的记录源更改显示的数据。