よく見る画面ですが、結構みなさん苦戦しているようです。次のようにするのが、まぁ一番楽なのではないでしょうか。
Dim report As New ReportDocument
'rptファイルをロードします。
report.Load("C:\test.rpt")
'
'ここでパラメータ等を設定します。
'
'帳票をメモリーストリームにエクスポートする
Dim strm As IO.MemoryStream
strm = DirectCast(report.ExportToStream(ExportFormatType.PortableDocFormat),IO.MemoryStream)
With Response
.Clear()
.ContentType = "application/pdf"
'メモリストリームの内容を書き込む
.OutputStream.Write(strm.ToArray, 0, CInt(strm.Length - 1))
.Flush()
End With
細かい事を言うと、サンプルプログラムが長くなってしまうので、おおまかな処理を書きました。
大体の場合、これだけでも問題ありませんよ。
結構、rptファイルを一旦pdfとしてサーバーに保存して、そのファイルにリダイレクトするみたいな手法を使っていることが多いですけど、それだと権限管理とか面倒なので、個人的にはこれが一番かと思います。
注意点としては、.OutputStream.Writeの第3引数はIntegerです。pdfのファイルサイズがIntegerで表現可能なサイズを超えている場合は、これではだめです。
まぁ、現実問題として、帳票が2Gを超えるなんてありえないので、ほとんどの場合はこれで大丈夫だと思われ。。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。
'rptファイルをロードします。
report.Load("C:\test.rpt")
'
'ここでパラメータ等を設定します。
'
'帳票をメモリーストリームにエクスポートする
Dim strm As IO.MemoryStream
strm = DirectCast(report.ExportToStream(ExportFormatType.PortableDocFormat),IO.MemoryStream)
With Response
.Clear()
.ContentType = "application/pdf"
'メモリストリームの内容を書き込む
.OutputStream.Write(strm.ToArray, 0, CInt(strm.Length - 1))
.Flush()
End With
細かい事を言うと、サンプルプログラムが長くなってしまうので、おおまかな処理を書きました。
大体の場合、これだけでも問題ありませんよ。
結構、rptファイルを一旦pdfとしてサーバーに保存して、そのファイルにリダイレクトするみたいな手法を使っていることが多いですけど、それだと権限管理とか面倒なので、個人的にはこれが一番かと思います。
注意点としては、.OutputStream.Writeの第3引数はIntegerです。pdfのファイルサイズがIntegerで表現可能なサイズを超えている場合は、これではだめです。
まぁ、現実問題として、帳票が2Gを超えるなんてありえないので、ほとんどの場合はこれで大丈夫だと思われ。。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。