2009-08-31 96 views
0

我想导出2个不同的报表,当我点击一个导出按钮。问题是例程只会触发一次,而我只能得到一份打印报告。难道我做错了什么?我认为这与HTTPResponse有关,但我不确定。导出多个水晶报表ASP.NET

这里是我的代码:

Dim badgeSize As Integer = 0 'Drop Down selection 

    Dim badgeData As New DataSet 'Visitor Badge Data 
    Dim badgeEmployeeData As New DataSet 'Employee Badge Data 
    Dim badgeTotals As Integer = 0 'Totals for both 

    badgeSize = ddlBadgeSize.SelectedValue 

    ' Get Visitor Data 
    badgeData = _DatabaseAccess.GetProjectReportData(sessionInfo.myEventID, sessionInfo.EventCreator) 
    ' Get Employee Data 
    badgeEmployeeData = _DatabaseAccess.GetProjectReportEmployeeData(sessionInfo.myEventID, sessionInfo.EventCreator) 
    'Obtain Totals 
    badgeTotals = badgeData.Tables(0).Rows.Count + badgeEmployeeData.Tables(0).Rows.Count 

    If badgeTotals = 0 Then 
     ShowMessage("There are no badges to print.") 
     Exit Sub 
    End If 

    If badgeSize.Equals(0) Then 'Small 

     If badgeEmployeeData.Tables(0).Rows.Count > 0 Then 
      If badgeEmployeeData.Tables(0).Rows.Count >= 6 Then 
       PrintProjectBadges(badgeEmployeeData, "Employee", badgeSize) 
      Else 
       PrintStandardDymo(badgeEmployeeData, "Employee", 1) 
      End If 
     End If 

     If badgeData.Tables(0).Rows.Count > 0 Then 
      If badgeData.Tables(0).Rows.Count >= 6 Then 
       PrintProjectBadges(badgeData, "Visitor", badgeSize) 
      Else 
       PrintStandardDymo(badgeData, "Visitor", 1) 
      End If 
     End If 
    else 
    'do somethign else 
    endif 

,报告编号:

Private Sub PrintProjectBadges(ByVal theData As DataSet, ByVal badgeType As String, ByVal badgeSize As Integer) 
     Dim ourReport As New ReportDocument 
     Dim crConnectionInfo As New ConnectionInfo(SetCrystalConnection) 

     If badgeSize = 0 Then 
      Try 
       If badgeType = "Visitor" Then 
        ourReport.Load(Server.MapPath("SmallProjectBadge.rpt"), OpenReportMethod.OpenReportByDefault) 'LIVE SERVER USE 
       Else 
        ourReport.Load(Server.MapPath("SmallProjectEmployeeBadge.rpt"), OpenReportMethod.OpenReportByDefault) 'LIVE SERVER USE 
       End If 

      Catch ex As Exception 
       Dim TraceList As New ArrayList 
       TraceList.Add("DBLog") 
       DatabaseAccess.WriteToErrorLog("Visitor Registration", "Printing Project Badges", ex.Message, TraceEventType.Information, 1, TraceList) 
       Exit Sub 
      End Try 

      ourReport.SetDataSource(theData.Tables("Project")) 
     Else 
      'Do somethign else... 
     End If 

     Response.Buffer = True 
     'Clear the response content and headers 
     Response.ClearContent() 
     Response.ClearHeaders() 

     SetLogon(ourReport, crConnectionInfo) 

     'Export the Report to Response stream in PDF format and file name Customers 
     ourReport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, "Visitor_Badges") 
     Response.End() 
     'Response.Close() 


    End Sub 

任何帮助将非常感激。

回答

0

响应一次只能发送一个文件 - 要导出这两个文件,您需要将它们导出到本地磁盘,然后将它们组合成类似ZIP文件的文件,然后将其发送回客户端。