根据多个条件将标题插入Access报告

时间:2015-05-19 17:44:51

标签: vba if-statement access-vba case-statement

我正在编写一份报告,通过表单,允许多个过滤器和排序。我希望报告的标题能够反映出对过滤器和过滤器的选择。排序

报告可以按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

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

我正在尝试使用已识别的过滤器返回标题。例如,如果我选择Product type =“Document”&产品经理=“劳拉”我希望标题看起来像“劳拉的所有文件可交付成果”如果我添加了收到=“否”,我希望它能读到“劳拉的杰出文件交付”

如果我选择Received =“Yes”&产品类型=“数据”并选择按合同编号排序我希望标题为“按合同编号接收的数据交付项目”

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

我考虑过一个Case声明,但不知道从哪里开始。任何对出现问题的见解都将非常感激

1 个答案:

答案 0 :(得分:0)

您获得/看到的错误是什么?它看起来像你的代码丢失了,你可以发布所有这些,结果是你得到的与预期的行为?

相关问题