我繼承了離開的那個人的數據庫,並且一直試圖運行維護並根據需要添加功能。我應該說,當我三週前盯着這份工作時,我完全沒有編碼經驗,但是已經在這裏和那裏找到了一些東西。對問題:SearchFilters和代碼執行:從一個noob
主窗體有一個嵌套在那裏的表,並且過濾器基本上設置過濾出來並與表中的數據一起玩。我會嘗試在imugr上添加圖片並添加鏈接(編輯:http://imgur.com/nHUsCdX)
左側有許多過濾器和搜索框。這包括:
的文本搜索框(通過A欄搜索)
日期搜索框
組過濾器 - 搜索組列,並且基於選擇的值過濾掉。
趨勢 - 基本填滿日期搜索框(2)的過濾器,具有預設收入季度日期。
區域過濾器 - 與組過濾器(3)的工作方式相同,除了在區域列中搜索。
以下幾行代碼或多或少地控制着這些過濾器和搜索框,我將整個發佈它。
Private Sub frmFieldPresets_AfterUpdate()
Dim fieldPreset As String
Select Case Me.frmFieldPresets
Case 1
fieldPreset = "Audit"
DoCmd.OpenForm "frm_Fields"
Call Forms.frm_Fields.cmd_De_SelectAllFields_Click
Forms.frm_Fields.chk_EN.Value = True
Forms.frm_Fields.chk_BLI.Value = True
Forms.frm_Fields.chk_AN.Value = True
Forms.frm_Fields.chk_EDD.Value = True
Forms.frm_Fields.chk_GIIC.Value = True
Forms.frm_Fields.chk_NILGIC.Value = True
Forms.frm_Fields.chk_RDTTO.Value = True
Forms.frm_Fields.chk_ESB.Value = True
Call Forms.frm_Fields.refreshFields
DoCmd.Close acForm, "frm_Fields"
Case 2
fieldPreset = "CMRM"
DoCmd.OpenForm "frm_Fields"
Call Forms.frm_Fields.cmd_De_SelectAllFields_Click
Forms.frm_Fields.chk_BLI.Value = True
Forms.frm_Fields.chk_AN.Value = True
Forms.frm_Fields.chk_OID.Value = True
Forms.frm_Fields.chk_EN.Value = True
Forms.frm_Fields.chk_GIIC.Value = True
Forms.frm_Fields.chk_NILGIC.Value = True
Forms.frm_Fields.chk_RDTTO.Value = True
Forms.frm_Fields.chk_EDD.Value = True
Call Forms.frm_Fields.refreshFields
DoCmd.Close acForm, "frm_Fields"
Case 3
fieldPreset = "Finance"
DoCmd.OpenForm "frm_Fields"
Call Forms.frm_Fields.cmd_De_SelectAllFields_Click
Forms.frm_Fields.chk_EN.Value = True
Forms.frm_Fields.chk_RDTTO.Value = True
Forms.frm_Fields.chk_BLI.Value = True
Forms.frm_Fields.chk_GIIC.Value = True
Forms.frm_Fields.chk_NILGIC.Value = True
Call Forms.frm_Fields.refreshFields
DoCmd.Close acForm, "frm_Fields"
Case 4
fieldPreset = "TBM"
DoCmd.OpenForm "frm_Fields"
Call Forms.frm_Fields.cmd_De_SelectAllFields_Click
Forms.frm_Fields.chk_EN.Value = True
Forms.frm_Fields.chk_BLI.Value = True
Forms.frm_Fields.chk_AN.Value = True
Forms.frm_Fields.chk_RDTTO.Value = True
Forms.frm_Fields.chk_GIIC.Value = True
Forms.frm_Fields.chk_NILGIC.Value = True
Forms.frm_Fields.chk_EDD.Value = True
Call Forms.frm_Fields.refreshFields
DoCmd.Close acForm, "frm_Fields"
Exit Sub
End Select
End Sub
Private Sub frmRegions_AfterUpdate()
Call refresh_Filters
End Sub
Private Function regionselection()
Select Case Me.frmRegions
Case 1
regionselection = "Canada"
Case 2
regionselection = "USA"
Case 3
regionselection = "Singapore"
Case 4
regionselection = "Europe & Asia Pacific"
Case 5
regionselection = "Global"
End Select
End Function
Private Sub frmTrendingQuarters_AfterUpdate()
Dim fieldPreset As String
Select Case Me.frmTrendingQuarters
Case 1
txtDate1.Value = "11/1/2014"
txtDate2.Value = "1/31/2015"
fieldPreset = "Q1"
Case 2
txtDate1.Value = "2/1/2015"
txtDate2.Value = "4/30/2015"
fieldPreset = "Q2"
Case 3
txtDate1.Value = "5/1/2015"
txtDate2.Value = "7/31/2015"
fieldPreset = "Q3"
Case 4
txtDate1.Value = "8/1/2015"
txtDate2.Value = "10/30/2015"
fieldPreset = "Q4"
Exit Sub
End Select
DoCmd.OpenForm "frm_Fields"
Call Forms.frm_Fields.cmd_De_SelectAllFields_Click
Forms.frm_Fields.chk_OID.Value = True
Forms.frm_Fields.chk_EN.Value = True
Forms.frm_Fields.chk_FWCO.Value = True
Forms.frm_Fields.chk_Reg.Value = True
Forms.frm_Fields.chk_RC.Value = True
Forms.frm_Fields.chk_Rem1.Value = True
Forms.frm_Fields.chk_Rem2.Value = True
Forms.frm_Fields.chk_RDTTO.Value = True
Call Forms.frm_Fields.refreshFields
DoCmd.Close acForm, "frm_Fields"
Call refresh_Filters
End Sub
Private Sub txtDate1_AfterUpdate()
Call refresh_Filters
End Sub
Private Sub txtDate2_AfterUpdate()
Call refresh_Filters
End Sub
Private Sub txtSearch_AfterUpdate()
Call refresh_Filters
End Sub
Private Sub refresh_Filters()
Dim searchFilter, dateFilter, allFilter As String
Dim searchString, date1String, date2String As String
Me.Refresh
If IsNull(Me.txtSearch) Then
searchString = "*"
Else
searchString = Me.txtSearch
End If
If IsNull(Me.txtDate1) Then
date1String = "1/1/2000"
Else
date1String = Me.txtDate1
End If
If IsNull(Me.txtDate2) Then
date2String = "1/1/2020"
Else
date2String = Me.txtDate2
End If
searchFilter = "(" & "[Event Name] Like '*" & searchString & "*'" & ")"
regionFilter = "(" & "[Region] Like '*" & regionselection & "*'" & ")"
dateFilter = "(" & "[OpERA Create Date] Between " & "#" & date1String & "#" & " AND " & "#" & date2String & "#" & ")"
allFilter = searchFilter & " And " & dateFilter & " And " & regionFilter
Me.frm_ORE_All.Form.Filter = allFilter
Me.frm_ORE_All.Form.FilterOn = True
End Sub
現在我需要幫助的部分是最後幾行代碼。在某些時候,我被告知textSearch的參數(僅在一列中查看)需要擴展以包含其他列。因此,搜索將擴大以查看更多列。所以我改變了searchFilter的代碼,並添加了更多的列。
這是最新的代碼,最後幾行。
'searchFilter = "(" & "[Event Name] Like '*" & searchString & "*'" & ")"
searchFilter = "(" & "[Event Name] Like '*" & searchString & "*'" & ") OR (" & "[Event Submitted By] Like '*" & searchString & "*'" & ") OR (" & "[Organizational Business Unit] Like '*" & searchString & "*'" & ") OR (" & "[Business Line Impacted] Like '*" & searchString & "*'" & ") OR (" & "[Attester Name] Like '*" & searchString & "*'" & ") OR (" & "[Comments] Like '*" & searchString & "*'" & ") OR (" & "[Function Where Cause Occurred] Like '*" & searchString & "*'" & ") OR (" & "[Root Cause] Like '*" & searchString & "*'" & ") OR (" & "[Remedy 1] Like '*" & searchString & "*'" & ") OR (" & "[Remedy 2] Like '*" & searchString & "*'" & ")"
regionFilter = "(" & "[Region] Like '*" & regionselection & "*'" & ")"
dateFilter = "(" & "[OpERA Create Date] Between " & "#" & date1String & "#" & " AND " & "#" & date2String & "#" & ")"
allFilter = searchFilter & " And " & dateFilter & " And " & regionFilter
Me.frm_ORE_All.Form.Filter = allFilter
Me.frm_ORE_All.Form.FilterOn = True
End Sub
一旦我插入這一新的searchFilter代碼行,並停用原來的代碼,它就完美了。除其他過濾器因任何原因停止工作外。所以雖然GroupFilters仍然有效,但Trending和RegionFilter完全停止工作。
如果我切換回原來的代碼行,並停止使用新代碼,則所有事情都會再次正常工作(除了textboxsearch只返回搜索一列的事實)。
我敢肯定,這只是我的代碼效率低下,或明顯的事情,當我不知道的時候你會發現。有小費嗎?
This Works!謝謝! 解決。已驗證解 – echelon99