7
votes

Erreur Afficher PDF Crystal Signaler vb.net

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


0 commentaires

5 Réponses :


0
votes

Vous pouvez remplacer .binarinwrite (s.toarray) code> par .binarinwrite (ctype (session ("myCrystalReport"), io.memorystream) .toarray ()) code>.

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>

Dim options = rpt.ExportOptions
options.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat
Session!myCrystalReport= rpt.FormatEngine.ExportToStream(New CrystalDecisions.Shared.ExportRequestContext With {
        .ExportInfo = options
        })
rpt.Dispose()


0 commentaires

5
votes

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 Morthstream fort> avec flux fort> et envoyez-le dans Byte Strong> Array comme dans: P>

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


1 commentaires

J'ai eu le même problème. De cette façon, travaillez-moi, merci.



0
votes

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


0 commentaires

3
votes

Essayez d'utiliser ce code pour convertir dans le flux: xxx

Voici le code complet comme référence: xxx


0 commentaires

0
votes

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


0 commentaires