我有一个TimeCardSplit表单,它是一个拆分表单。我希望能够在其记录源EmployeeWorkLog中搜索基于特定字段的记录,以填充表单进行更正。
我有两个组合框,一个文本框和一个列表框,我想用来过滤我的结果。他们是cboSearchEmployee,cboSearchJob,tboSearchDate和lstSearch。我想让lstSearch显示EmployeeWorkLog中的所有记录,并能够使用cboSearchEmployee,cboSearchJob和tboSearchDate过滤掉它。一旦记录被过滤下来,我希望能够在lstSearch中双击它们并以TimeCardSplit的形式将它们显示出来。
我感谢任何可以给出的建议。
谢谢你的期待。
我做了更多搜索,并决定转到子表单而不是使用splitform。我发现我可以使用以下代码过滤子表单。
Private Sub cboSearchJob_AfterUpdate()
If IsNull(Me.cboSearchJob) Then
Me.cldTimeCard.Form.Filter = ""
Me.cldTimeCard.Form.FilterOn = False
Else
Me.cldTimeCard.Form.Filter = "[JobID]=" & Me.cboSearchJob
Me.cldTimeCard.Form.FilterOn = True
End If
Exit Sub
End Sub
现在我试图找到一个功能,一旦过滤后双击一行就可以将其带入表单。目前我正在使用......
Private Sub cboJob_DblClick(Cancel As Integer)
DoCmd.OpenForm "Try", , , "[JobID] = " & Me!JobID
End Sub
这当然只在我子表单中的一个组合框中。虽然这样做但它只会将我的过滤结果的第一个实例带入表单,而不是我双击的特定行。
所以这是我的新问题。是否有更好的地方可以将此代码或类似代码填充到表单中,并且我会双击一行?
再次感谢您的期待。
答案 0 :(得分:0)
这是我找到的解决方案,效果很好。我在6月7日here之前获得了解决方案。我非常感谢你的帮助。
enter Private Sub cmdFilter_Click()
Dim strWhere As String
Dim lngLen As Long
Const conJetDate = "\#mm\/dd\/yy\#"
If Not IsNull(Me.cboSearchJob) Then
strWhere = strWhere & "([JobID] = " & Me.cboSearchJob & ") AND "
End If
If Not IsNull(Me.cboSearchEmployee) Then
strWhere = strWhere & "([EmployeeID] = " & Me.cboSearchEmployee & ") AND "
End If
If Not IsNull(Me.cboSearchService) Then
strWhere = strWhere & "([ServiceID] = " & Me.cboSearchService & ") AND "
End If
If Not IsNull(Me.tboStartDate) Then
strWhere = strWhere & "([DateWorked] >= " & Format(Me.tboStartDate, conJetDate) & ") AND "
End If
If Not IsNull(Me.tboEndDate) Then
strWhere = strWhere & "([DateWorked] < " & Format(Me.tboEndDate + 1, conJetDate) & ") AND "
End If
lngLen = Len(strWhere) - 5
If lngLen <= 0 Then
MsgBox "No criteria", vbInformation, "Nothing to do."
Else
strWhere = Left$(strWhere, lngLen)
Me.cldTimeCard.Form.Filter = strWhere
Me.cldTimeCard.Form.FilterOn = True
End If
此处结束子代码
感谢大家一起来看看并帮助我完成这项任务。现在进入下一个......