- - PR -
WebフォームからPDFの出力
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-03-01 22:10
お世話になります。
ASP.net(C#)で開発をしています。 ActiveReports.netを使用して帳票出力プログラムを作成しています。 帳票出力で問題が発生しています。 実現したい事は、PDF形式で帳票を出力、または表示する事です。 参考にしたのは、ActiveReportsのヘルプです。 以下のようなサンプルコードが記載されていました。 DataDynamics.ActiveReports.Export.Pdf.PdfExport p = new DataDynamics.ActiveReports.Export.Pdf.PdfExport(); System.IO.MemoryStream m_stream = new System.IO.MemoryStream(); rptCustEx rpt = new rptCustEx(); rpt.Run(); p.Export(rpt.Document, m_stream); m_stream.Position = 0; Response.ContentType = "application/pdf"; Response.BinaryWrite(m_stream.ToArray()); Response.End(); (DBへの接続情報やSQL文は帳票に直指定されています。) 上記のサンプルコードを応用して 下記のようなコードを記述しました。 DataDynamics.ActiveReports.Export.Pdf.PdfExport p = new DataDynamics.ActiveReports.Export.Pdf.PdfExport(); System.IO.MemoryStream m_stream = new System.IO.MemoryStream(); rptSample rpt = new rptSample(); DataTable dt = GetPRTData(); rpt.DataSource = new DataView(dt); rpt.Run(false); p.Export(rpt.Document, m_stream); m_stream.Position = 0; Response.ContentType = "application/pdf"; Response.BinaryWrite(m_stream.ToArray()); Response.End(); 以上のようなロジックを記述しています。 このロジックを実行すると 「指定されたキャストは有効ではありません」 とエラーが発生します。 発生箇所は p.Export(rpt.Document, m_stream); です。 (GetPRTDataは印刷データを取得する関数です。) サンプルコードのまま使用すると、DBサーバの接続情報や SQL文などが直で指定しなくてはならない為、現実的には不可能な仕様です。 DB接続情報やSQL文をデザイン時に設定するのでは無く、 コードを実行時に設定する方法が分かれば解決します。 もしくは、キャストの問題が分かれば解決します。 非常に理解し難い質問をしてしまいましたが どなたか、どんな些細な事でも結構ですので ご教授お願いいたします。 |
|
投稿日時: 2006-03-02 14:37
お世話になります。
いろいろと悪戦苦闘の結果、自己解決する事ができました。 以下のように記述しました。 DataDynamics.ActiveReports.DataSources.SqlDBDataSource ds = new DataDynamics.ActiveReports.DataSources.SqlDBDataSource(); ds.ConnectionString = obj.ToString(); ds.SQL = (SQL文); DataDynamics.ActiveReports.Export.Pdf.PdfExport p = new DataDynamics.ActiveReports.Export.Pdf.PdfExport(); System.IO.MemoryStream m_stream = new System.IO.MemoryStream(); rptSample rpt = new rptSample(); rpt.DataSource = ds; rpt.Run(); p.Export(rpt.Document, m_stream); m_stream.Position = 0; Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition","attachment; filename=result.pdf"); Response.BinaryWrite(m_stream.ToArray()); Response.End(); 以上です。 また何かありましたら書き込みさせていただきます。 |
|
投稿日時: 2006-03-02 14:51
レポートにプロパティでも作って値を渡し、
DataInitialize内でDataSourceとDataMemberの設定をすれば良いのではないでしょうか? |
1