2015-05-19 26 views
0

我正在研究一个报告,该报告将通过表单允许多个过滤器和排序。我希望报告的标题能够反映出筛选器&的选择。根据多个条件在Access报告中插入标题

该报告可以通过3个字段进行过滤:产品类型,收到的交付成果(是/否)和项目经理。

它可以通过排序:合同号,产品类型,承包商,开始日期,完结之日&日期产品获得

我已经得到了一些元素的工作(那些DeliverablesReceived已选定与不排序),但与其他问题一起遇到问题。

Public Function InsertTitle(strReportName As String) As String 
Dim strProduct As String 

If strReportName = "rptMasterDeliverables" Then 
    If strField = "" Then 
     InsertTitle = "All Deliverables Sorted by Project Manager" 
    ElseIf Forms!fdlgMasterDeliverables!cboDeliverableReceived Like "No" Then 
     InsertTitle = "Outstanding Deliverables Sorted by " & Left(strField, InStr(1, strField, ",") - 1) & "" 
    ElseIf Forms!fdlgMasterDeliverables!cboDeliverableReceived Like "Yes" Then  
     InsertTitle = "Received Deliverables Sorted by " & Left(strField, InStr(1, strField, ",") - 1) & "" 
    ElseIf InStr(1, strField, ",") = 0 Then          
     InsertTitle = "All Deliverables Sorted by " & strField & "" 

以上所有的工作很好,我遇到的问题与打开报表以下

ElseIf Forms!fdlgMasterDeliverables!cboDeliverableReceived Like "Yes" And Left(strField, 1) = "," Then 
     InsertTitle = "Received Deliverables sorted by Project Manager" 
    ElseIf Left(strField, 1) = "," And Forms!fdlgMasterDeliverables!cboDeliverableReceived Like "No" Then 'cboReceived 
     InsertTitle = "Outstanding Deliverables sorted by Project Manager" 
    ElseIf InStr(1, strProduct, ",") = 0 And Forms!fdlgMasterDeliverables!cboDeliverableReceived Like "No" Then 
     InsertTitle = "" & Mid([strProduct], 2, Len([strProduct])) & " Deliverables" 
    ElseIf Left(strField, 1) = "*" And InStr(1, strField, ",") = 0 Then 
     InsertTitle = "All " & Mid([strField], 2, Len([strField])) & " Deliverables sorted by " & strField & "" 
    ElseIf Left(strField, 2) = "* " And Forms!fdlgMasterDeliverables!cboDeliverableReceived Like "Yes" Then 
     InsertTitle = "Received " & Mid([strField], 3, Len([strField])) & " Deliverables sorted by Project Manager" 

的代码是

Private Sub Report_Open(Cancel As Integer) 
Dim strProducts As String 
strField = "" 
    If CurrentProject.AllForms("fdlgMasterDeliverables").IsLoaded Then 
    If Not IsNull(Forms!fdlgMasterDeliverables!cboSort) Then 
     Me.Report.GroupLevel(0).ControlSource = Forms!fdlgMasterDeliverables!cboSort.Column(0)  
     strField = Forms!fdlgMasterDeliverables!cboSort.Column(1)         
    If Not IsNull(Forms!fdlgMasterDeliverables!cboDeliverableReceived) Then 
     strField = strField & "," & Forms!fdlgMasterDeliverables!cboDeliverableReceived.Column(1) 
    End If 
    ElseIf Not IsNull(Forms!fdlgMasterDeliverables!cboDeliverableReceived) Then   
     strField = "," & Forms!fdlgMasterDeliverables!cboDeliverableReceived.Column(1)  
    End If 
    If Not IsNull(Forms!fdlgMasterDeliverables!cboProductType) Then 
     strProduct = Forms!fdlgMasterDeliverables!cboProductType.Column(1) 
    End If 

目前可以正常工作的部分返回“优秀/收到/所有可交付成果按[选定的排序]排序“,如果没有选择过滤器或排序,则会正确返回”按项目经理排序的所有可交付成果“

我正试图让标题返回与过滤器(s)确定。例如,如果我选择产品类型=“文档”&产品经理=“劳拉”我希望标题读取类似于“劳拉提供的所有文档”的内容。如果我添加收件人=“否”,我希望它读取“优秀的文档交付劳拉”

如果我选择接收=‘是’&产品类型=‘数据’,然后选择通过合同号进行排序,我想的标题改为‘按合同号’

接收到的数据交付

如果没有选择排序顺序,我希望标题默认为“....按项目经理排序”

我已经考虑转到案例状态但不知道从哪里开始。任何洞察什么是错误的将不胜感激

+0

我应该注意到该报告表现出色,所有的过滤器都能像排序一样工作......它只是插入让我疯狂的标题 – pja

回答

0

你正在看到什么错误?它看起来像你的代码缺少部分,你可以发布它的所有,结果你越来越vs预期的行为?