J'ai le code ci-dessous Sa fonction est de charger les données d'un rapport à l'écran à l'aide des cristalreports à l'aide des cristalreports.
#if DEBUG Then CrystalReportViewer1.ReportSource = relat CrystalReportViewer1.DataBind () Exit Sub If #End
5 Réponses :
Vous pouvez remplacer J'ai écrit un exemple ci-dessous, je ne suis pas sûr que c'est ce que vous recherchez, mais j'espère que cela peut vous aider. Cela fonctionne pour moi de laisser les utilisateurs télécharger / afficher des rapports de cristal à l'aide du format PDF. P> .binarinwrite (s.toarray) code> par
.binarinwrite (ctype (session ("myCrystalReport"), io.memorystream) .toarray ()) code>.
Dim options = rpt.ExportOptions
options.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat
Session!myCrystalReport= rpt.FormatEngine.ExportToStream(New CrystalDecisions.Shared.ExportRequestContext With {
.ExportInfo = options
})
rpt.Dispose()
J'ai trouvé la solution sur:
https://archive.sap.com/discussions / thread / 3322762 p>
AS répondu par SAP Guy: «Ceci est par conception, nous n'avons jamais soutenu pleinement l'exportation vers Memodstream. Seule l'option est de ne pas utiliser MemorMemReam, cela ne sera pas modifié. " P>
de sorte que la solution consiste à remplacer Dim strExportFile As String
strExportFile = "ReportReajustesAplicados.pdf"
Dim s As System.IO.Stream = relat.ExportToStream(ExportFormatType.PortableDocFormat)
Dim b(s.Length) As Byte
s.Read(b, 0, CInt(s.Length))
With HttpContext.Current.Response
.ClearContent()
.ClearHeaders()
.ContentType = "application/pdf"
.AddHeader("Content-Disposition", "inline; filename=" & strExportFile)
.BinaryWrite(b)
.Flush()
.SuppressContent = True
HttpContext.Current.ApplicationInstance.CompleteRequest()
End With
J'ai eu le même problème. De cette façon, travaillez-moi, merci.
J'avais un problème similaire lors de l'exécution localement. Au lieu d'utiliser un flux, utilisez ceci:
using (CrystalDecisions.CrystalReports.Engine.ReportDocument oRpt = new ReportDocument()) { oRpt.Load(Server.MapPath("../RptFiles/MyCReport.rpt")); oRpt.SetDataSource(MyDataSource); // ... other stuff you need, params, etc Response.Clear(); Response.ClearHeaders(); oRpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, false, "MyReportName"); oRpt.Close(); }
Pour ceux qui ne fonctionnent pas avec des serveurs Web et doivent simplement l'enregistrer:
Dim myStream As New System.IO.MemoryStream 'ExportToStream acutally produces type: FileStreamDeleteOnClose -- not Stream. Can't implicitly convert it to MemoryStream Dim myTempStream As System.IO.Stream myTempStream = oRpt.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat) 'Now copy the data to a MemoryStream before closing the report and destroying the stream. myTempStream.CopyTo(myStream) 'Clean up and close the temp stream and report. oRpt.Close()