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()