- - PR -
[ASP.NET]ActiveReportへ値受け渡し
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-27 16:34
ライムです。
デバッグして動きを見ていったところ、 ActiveReport1.rpxのコードのActiveReport1_FetchDataへ追加した TextBox1.Text = HttpContext.Current.Session("TextBox1") でエラーが発生していました。 試しに下記のようにWebForm1.aspxのコードのPage_Loadイベントに --------------------------------------------------------------------- Dim rpt As New report '用紙サイズをA4横に設定 rpt.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.A4 rpt.PageSettings.Orientation = DataDynamics.ActiveReports.Document.PageOrientation.Landscape '上下左右の余白を0.5cmに設定 rpt.PageSettings.Margins.Top = rpt.CmToInch(0.5) rpt.PageSettings.Margins.Bottom = rpt.CmToInch(0.5) rpt.PageSettings.Margins.Left = rpt.CmToInch(0.5) rpt.PageSettings.Margins.Right = rpt.CmToInch(0.5) Session("TextBox1") = "テスト表示" rpt.Run(False) rpt.Document.Save(Server.MapPath("") + "report.rpx", DataDynamics.ActiveReports.Document.RdfFormat.AR20) --------------------------------------------------------------------- と記述してSession("TextBox1")へ値を直接入れてステップ実行していったところ、 rpt.Document.Saveを越えたところでSession("TextBox1")がNULLになるようです。 自分でも調べてみますが、良ければ知恵をお貸しください(TT | ||||||||||||
|
投稿日時: 2005-09-27 17:06
こちらでもステップ実行してみましたが、
ActiveReport1_FetchDataに処理が入るのは、rpt.Run(False)を呼んだ後です。 rpt.Document.Saveでエラーになるってことは、違うとこが原因だと思いますよ。 多分これ。Server.MapPath("") + "report.rpx" デバッガのクイックウォッチで確認してみてください。\が抜けてるはず。 正しくはServer.MapPath("report.rpx")です。 でもこれだと既存ファイル名(ソースファイル)とかぶりませんか? サーバルート下じゃなくてC:\Temp\test.rpxとかの方がいいような… | ||||||||||||
|
投稿日時: 2005-09-27 18:31
ライムです。
ぼのぼの様に指摘頂いたコードを -------------------------------------------- rpt.Document.Save(Server.MapPath("TEST.rpx"), DataDynamics.ActiveReports.Document.RdfFormat.AR20) -------------------------------------------- このように変えてみました。 パスを「C:\」とするとWebサーバ上の仮想パスでないとダメらしく、 「仮想パスが必要です。」とエラーが出てしまいました。 これをウォッチしてみたところ 「rpt.Document.Saveこの引数の数を受け付ける 'Save' がないため、オーバーロードの解決に失敗しました。」 このようなエラーが表示されて居ました。 rpt.Document.Saveについて調べてみます(TT [ メッセージ編集済み 編集者: †raimu† 編集日時 2005-09-27 18:41 ] | ||||||||||||
|
投稿日時: 2005-09-27 18:44
こんにちは、じゃんぬ です。
絶対パスはダメなのです。 相対パスにしてください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-09-27 19:35
これを見れば全て解決。
http://www.grapecity.com/Japan/Support/Search/FaqContent.asp?id=14647 | ||||||||||||
|
投稿日時: 2005-09-27 19:50
あれ?ひょっとしてServer.MapPath("C:\Temp\TEST.rpx")って書かれましたか?Server.MapPathはサーバルートからの相対パスを求めるメソッドですから、絶対パス指定するなら rpt.Document.Save("C:\Temp\TEST.rpx", DataDynamics.ActiveReports.Document.RdfFormat.AR20) です。こちらの環境では、これでちゃんと動きました。 ただ、出力されたファイルが正しいかどうか見る方法がわからなかったもんで、少し調べてみたら、これってRDFファイルってやつですか?RDFファイル使ったことないんですが、標準の拡張子rpxではないんでは? とりあえずDataDynamics.ActiveReports.Viewer.Viewerを使ったWindowsアプリを作ると開けるみたいだったので、やってみたらちゃんと出力されてました。
ええっ?? 私の環境で動いているのは何故? ひょっとしてActiveReportsのバージョン古い?Version 3.0.0.1946ですが。 てっきり他の理由でSessionが使えなくなっているのかとばかり。 >ライムさん 一応確認したいんですけど、ActiveReports関係ないところで(つまり単純にaspx間で)はSession使えますか? | ||||||||||||
|
投稿日時: 2005-09-27 20:24
じゃんぬねっと様>
相対パスで正常に…動いてるかわかりませんが(TT エラーは回避することができました。 ありがとうございました。 黒獅子様> ありがとうございますー(TT 無事にレポートのコントロールへ値を渡すことが出来ました。 ぼのぼの様> >RDFファイル使ったことないんですが、標準の拡張子rpxではないんでは? 元はRDFファイルだったのですが、自分でRPXに書き換えちゃったのです。 やっぱり、わけわからないまま使うもんじゃないですね(TT >ActiveReports関係ないところで(つまり単純にaspx間で)はSession使えますか? aspxだけでしたら、Sessionはちゃんと使えていますよ。 なんか、皆様お騒がせしてすみませんでしたm(_ _)m |