错误显示pdf CrystalReport vb.net

前端之家收集整理的这篇文章主要介绍了错误显示pdf CrystalReport vb.net前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有下面的代码
它的功能是使用CrystalReports从屏幕上的报表加载数据.
Dim strExportFile As String
            strExportFile = "ReportReajustesAplicados.pdf"

            Dim s As System.IO.MemoryStream = relat.ExportToStream(ExportFormatType.PortableDocFormat)
            With HttpContext.Current.Response

                .ClearContent()
                .ClearHeaders()
                .ContentType = "application/pdf"
                .AddHeader("Content-Disposition","inline; filename=" & strExportFile)
                .BinaryWrite(s.ToArray)
                .End()
            End With

当我提取数据时.

我有以下错误

无法将类型为“FileStreamDeleteOnClose”的对象强制转换为“System.IO.MemoryStream”.

我尝试使用System.IO.Stream,提取工作,但不显示屏幕上的数据,因为“.BinaryWrite(s.ToArray)”不接受方法ToArray.

注意:我放的时候

#if DEBUG Then
             CrystalReportViewer1.ReportSource = relat
             CrystalReportViewer1.DataBind ()
             Exit Sub

If #End

作品

我需要这个工作,但在发布模式下.

帮我

我找到了解决方案:

https://archive.sap.com/discussions/thread/3322762

正如SAP回答的那样:
“这是设计,我们从未完全支持导出到MemoryStream.
唯一的选择是不使用MemoryStream,这不会改变.“

所以解决方案是用Stream替换MemoryStream并将其发送到Byte数组中,如下所示:

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,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

猜你在找的VB相关文章