使用VBA插入Access报告的标题

使用VBA插入Access报告的标题,vba,function,ms-access,ms-access-2010,Vba,Function,Ms Access,Ms Access 2010,我的数据库有一个全局InsertTitle函数,该函数将根据报表名称和表单中用于打开报表的值插入标题。strField是一个全局变量,用于report\u Open Sub中的其他报表,如下所示 strField = "" If CurrentProject.AllForms("fdlgcontractsummarylookupreport").IsLoaded Then If Not IsNull(Forms!fdlgcontractsummarylookuprep

我的数据库有一个全局InsertTitle函数,该函数将根据报表名称和表单中用于打开报表的值插入标题。strField是一个全局变量,用于report\u Open Sub中的其他报表,如下所示

strField = ""
If CurrentProject.AllForms("fdlgcontractsummarylookupreport").IsLoaded Then              
If Not IsNull(Forms!fdlgcontractsummarylookupreport!cboSort) And Forms!fdlgcontractsummarylookupreport!cboSort <> "ContractID" Then
     strField = Forms!fdlgcontractsummarylookupreport!cboSort.Column(1)                                 
 If Not IsNull(Forms!fdlgcontractsummarylookupreport!cboStatus) Then
      strField = strField & "," & Forms!fdlgcontractsummarylookupreport!cboStatus.Column(1)
    End If
ElseIf Not IsNull(Forms!fdlgcontractsummarylookupreport!cboStatus) Then
    strField = "," & Forms!fdlgcontractsummarylookupreport!cboStatus.Column(1)
End If
这适用于使用此模式的所有报告,但由于用于打开其中一个报告的选项数量太多,因此使用strField变得非常复杂,因此我尝试声明并使用其他变量来打开此报告

Private Sub Report_Open(Cancel As Integer)
Dim strProduct As String
Dim strDelivered As String
Dim strManager As String
Dim strSort As String

If CurrentProject.AllForms("fdlgMasterDeliverables").IsLoaded Then

If Not IsNull(Forms!fdlgMasterDeliverables!cboSort) Then
     strSort = Forms!fdlgMasterDeliverables!cboSort.Column(1)                                  
ElseIf Not IsNull(Forms!fdlgMasterDeliverables!cboDeliverableReceived) Then                             
     strDelivered = Forms!fdlgMasterDeliverables!cboDeliverableReceived.Column(0) 'strField & "," & Forms!fdlgMasterDeliverables!cboDeliverableReceived.Column(0)    'InStr(1, strField, ",") = 0
End If
If Not IsNull(Forms!fdlgMasterDeliverables!cboProductType) Then
        strProduct = Forms!fdlgMasterDeliverables!cboProductType.Column(1)
End If
ElseIf Not IsNull(Forms!fdlgMasterDeliverables!cboProjectManager) Then
        strManager = Forms!fdlgMasterDeliverables!cboProjectManager.Column(1)
End If             
我对这个问题报告的模式做了如下改变(减少了案例列表)

为了解决这个问题,我已经经历了很多次迭代,我感到困惑。如果能有第二(第三、第四)只眼睛来告诉我我做错了什么,我将不胜感激。谢谢

这部分

ElseIf strProduct Like "*" And strSort Like "*" Then
无法访问,因为此部分为真:

ElseIf strSort Like "*" Then
当此
strSort-Like“*”
为真时

因此,试着像这样重新排列布尔“测试”:

ElseIf strProduct Like "*" And strSort Like "*" Then
    InsertTitle = "" & strDelivered & " " & strProduct & " Deliverables Sorted by " & strSort & ""
ElseIf strSort Like "*" Then
    InsertTitle = "" & strDelivered & " Deliverables Sorted by " & strSort & ""

我想出来了!!谢谢你的帮助

 If strReportName = "rptMasterDeliverables" Then

Dim strDelivered As String
Dim strProduct As String
Dim strManager As String
Dim strSort As String

Select Case Forms!fdlgMasterDeliverables!cboDeliverableReceived
    Case "Yes"
        strDelivered = "Received"
    Case "No"
        strDelivered = "Outstanding"
    Case Else
        strDelivered = "All"
End Select

Select Case Forms!fdlgMasterDeliverables!cboProjectManager
    Case Forms!fdlgMasterDeliverables!cboProjectManager.Column(1)
       strManager = " For " & Forms!fdlgMasterDeliverables!cboProjectManager & ""
    Case Else
        strManager = ""
End Select

Select Case Forms!fdlgMasterDeliverables!cboSort
    Case "ContractTO"
        strSort = "Contract Number"
    Case "ContractorName"
        strSort = "Contractor"
    Case "ProductType"
        strSort = "Product Type"
    Case "TOBeginDate"
        strSort = "Task Order Start Date"
    Case "TOEndDate"
        strSort = "Task Order End Date"
    Case "Received"
        strSort = "Date Product Received"
    Case Else
        strSort = "Project Manager"
End Select

Select Case Forms!fdlgMasterDeliverables!cboProductType
    Case Forms!fdlgMasterDeliverables!cboProductType.Column(1)
        strProduct = " " & Forms!fdlgMasterDeliverables!cboProductType & ""
 Case Else
        strProduct = ""
End Select

InsertTitle = "" & strDelivered & strProduct & " Deliverables" & strManager & " Sorted by " & strSort & ""
End IF

为什么要强行开门?您是否尝试过使用自定义类(类模块)?我忘了提到我没有收到任何错误,表单正在正确打开。前两个“insertTitles”功能正常。我在运行函数后插入具有InsertTitle值的产品时遇到问题。。在Else InsertTitle=“可交付成果”结束后放置debug.print,如果我喜欢!我已经重新安排了,不幸的是strProduct仍然没有插入。语法中可能有什么东西吗?运行函数后InsertTitle的值是多少。。将debug.print放在Else InsertTitle=“deliveries”End之后,如果它始终是InsertTitle=”“&strDelivered&“可交付成果按项目经理排序”或InsertTitle=“&strDelivered&”可交付成果按“&strSort&”排序,就好像strProduct不存在一样
ElseIf strProduct Like "*" And strSort Like "*" Then
    InsertTitle = "" & strDelivered & " " & strProduct & " Deliverables Sorted by " & strSort & ""
ElseIf strSort Like "*" Then
    InsertTitle = "" & strDelivered & " Deliverables Sorted by " & strSort & ""
 If strReportName = "rptMasterDeliverables" Then

Dim strDelivered As String
Dim strProduct As String
Dim strManager As String
Dim strSort As String

Select Case Forms!fdlgMasterDeliverables!cboDeliverableReceived
    Case "Yes"
        strDelivered = "Received"
    Case "No"
        strDelivered = "Outstanding"
    Case Else
        strDelivered = "All"
End Select

Select Case Forms!fdlgMasterDeliverables!cboProjectManager
    Case Forms!fdlgMasterDeliverables!cboProjectManager.Column(1)
       strManager = " For " & Forms!fdlgMasterDeliverables!cboProjectManager & ""
    Case Else
        strManager = ""
End Select

Select Case Forms!fdlgMasterDeliverables!cboSort
    Case "ContractTO"
        strSort = "Contract Number"
    Case "ContractorName"
        strSort = "Contractor"
    Case "ProductType"
        strSort = "Product Type"
    Case "TOBeginDate"
        strSort = "Task Order Start Date"
    Case "TOEndDate"
        strSort = "Task Order End Date"
    Case "Received"
        strSort = "Date Product Received"
    Case Else
        strSort = "Project Manager"
End Select

Select Case Forms!fdlgMasterDeliverables!cboProductType
    Case Forms!fdlgMasterDeliverables!cboProductType.Column(1)
        strProduct = " " & Forms!fdlgMasterDeliverables!cboProductType & ""
 Case Else
        strProduct = ""
End Select

InsertTitle = "" & strDelivered & strProduct & " Deliverables" & strManager & " Sorted by " & strSort & ""
End IF