2009-08-31 98 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文件的文件,然後將其發送回客戶端。