- - PR -
ASP.NET ActiveReports:アンバウンドレポートへのソース設定方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-06-01 18:41
ActiveReports未経験者なため初歩的な質問で申し訳ございません。
現在、ASP.NET+Active Reports for .NET 2.0J で帳票出力のサブシステムを実装している者です。 Web.sln +Webプロジェクト:(TestReport)をプロジェクト参照 | | | +TestWeb.aspx:プレビュー画面、WebViewerを配置 | | | +App_Codeフォルダ | +Controlフォルダ | +WebFactory.vb(コントローラ):プレビュー画面の要求によりデータベースにアクセス。 | 該当データを取得、DataSetを返す。 +TestReport.vbproj(プロジェクト) +rptTestReport.rpx(レポート本体):アンバウンドレポート 大まかな構造は上記のようになっており、手順としては <呼び出しページ側> 1.印刷指示ページのボタンクリックにてコントローラのメソッド呼び出し。 2.コントローラより該当データのDataSetが返ってくる。 3.そのDataSetをレポートのDataSourceにセットする。 4.DataSetの名前をレポートのDataMemberにセットする。 5.レポート実行 <レポート側> 6.DataIntializeでアンバウンドフィールドを作成 7.アンバウンドフィールドてTextBoxを連結 <呼び出しページ側> 8.Viewerにレポート表示 のようになっております。 そこで質問なのですが、DataSourceとDataMemberをセットしている(?)にも関わらず、 レポートのDataInitializeでDataMemberが見つかりません、という内容の例外が発生してしまい レポートが表示できないのです。 <呼び出しページの該当ソース> Dim reportDataSet As New DataSet reportDataSet = m_webFactory.SelectData(conditionKey) 'DataSet取得 If reportDataSet IsNot Nothing Then 'ドロップダウンリストの値でViewerType切り替え If Me.ddlSlitForm.SelectedItem.Value.Equals(DropDownListSlitFormValue.MODE_HTML) Then WebViewer1.ViewerType = DataDynamics.ActiveReports.Web.ViewerType.RawHtml Else WebViewer1.ViewerType = DataDynamics.ActiveReports.Web.ViewerType.AcrobatReader End If Dim testReport As New TestReport.rptTestReport() testReport.DataSource = reportDataSet 'DataSetをセット・ testReport.DataMember = "TestReport" 'DataMemberにFactoryで指定したDataSetの名前"TestReport"をセット testReport.Run(False) 'レポート実行 WebViewer1.ClearCachedReport() 'Viewerのキャッシュレポートをクリア WebViewer1.Report = testReport 'ViewerにReportをセット WebViewer1.Visible = True 'Viewer表示・ End If <レポートの該当ソース> Private Sub rptTestReport_DataInitialize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DataInitialize 'アンバウンドフィールドを作成 Fields.Add("A") Fields.Add("B") Fields.Add("C") 'アンバウンドフィールドをTextBoxと連結 Me.txtA.DataField = "A" Me.txtAgencyName.DataField = "B" Me.txtSRName.DataField = "C" End Sub ヘルプを参照したり、あちこち調べたのですがわからず終いで困っております。 どなたかお分かりになる方、教えて頂けませんでしょうか。宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2007-06-01 19:10
やりたいことの意図が読み取れているか自信がありませんが、ActiveReport クラスの FieldCollection に対して Add したフィールドを使うのではなくて (またはその必要はなくて)、単に DataField に reportDataSet (DataTable) 内の表示したい 'カラム名' を設定すれば良いのではないですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-06-01 19:40
早速のご回答ありがとうございます。 意図は伝わっていると思います。 やりたいことを簡潔に説明しますと、 1.アンバウンドレポートにデータセットをバウンドして出力する。 2.出力形式はHTMLまたはPDFのうちいづれかを選択する。 難しく考えすぎていたようですので、早速ご指示通りにやってみたのですが、 「DataMemberが見つかりません。レポートのDataSourceとDataMemberプロパティを確認してください。」 というエラーが解消されません。 カラム名を設定する以外には何かあるのでしょうか? DataMemberにはDataSet名を設定してあります。 [ メッセージ編集済み 編集者: やまじぃ 編集日時 2007-06-01 19:42 ] | ||||||||||||
|
投稿日時: 2007-06-01 19:56
DataMember は各フィールドに設定していますか? またその時は DataTable 名になると思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-06-01 21:30
ご指摘の通りレポートのDataMemberにはDataTable名を設定し、各フィールド(テキストボックス)のDataFieldにカラム名をセットした結果、DataMember・・・というエラーは表示されなくなりました。大変助かりました、ありがとうございます。 すみませんが、便乗して追加質問させて下さい。 1.ヘッダの高さを1ページ目とそれ以降で異なるようにする 2.それに伴い明細部の最大行数も1ページ目とそれ以降で変える 3.さらにグループ化により改ページさせる という複合条件を持つ帳票なのですが、 1はオーバーレイ、 2は最大行数を設定/取得するプロパティをページ毎に変更する 3はグループヘッダのDataFieldにグループ化の対象項目を設定する という方法で解決できるかと思ってるのですが、他のスレッドでも取り上げられている内容でページヘッダには可変要素のような項目を入れてはいけない、というのがあったように思います。 気になっているのが、1〜3を実現するにあたってはヘッダ項目を全てグループヘッダに配置すべきなのか?ということです(現在はヘッダ項目はページヘッダに配置してあります)。 | ||||||||||||
|
投稿日時: 2007-06-02 15:52
データも表示されたということでよろしいでしょうか。解決できたようで良かったです。
元の質問と異なっておりますので、別のスレッドを建てた方が良いのではないかなぁと思います。
そのページ内で常に同じ値を返すデータを扱う分には問題ありません。たとえば 「ページ番号」 などは問題ないですが、詳細セクションに配置すべきデータは扱ってはなりません。 オーバーレイによる制御はページ単位で行われるハズですので、扱っても良いということになります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-06-04 00:23
元の質問と異なっておりますので、別のスレッドを建てた方が良いのではないかなぁと思います。 マナー違反ですね、申し訳ございませんでした。 今後は気をつけます。
そのページ内で常に同じ値を返すデータを扱う分には問題ありません。たとえば 「ページ番号」 などは問題ないですが、詳細セクションに配置すべきデータは扱ってはなりません。 オーバーレイによる制御はページ単位で行われるハズですので、扱っても良いということになります。 [/quote] マナー違反の内容にも回答頂き有難うございました。 | ||||||||||||
|
投稿日時: 2007-06-04 16:00
エラーが表示されなくなった時点で別のエラーが発生し、そちらの解消に努めていたためご報告が遅れてしまいました。 確かにDataMember・・・というエラーは表示されなくなったのですが、肝心のデータが表示されないんです。またまた行き詰ってしまいました。 別のエラーというのは、WebViewerのReportNameプロパティに何も設定していなかったためレポートの参照ができずにいた、という事でした。 データさえ表示されればあともう少しという所のような気がしているのですが、その一歩が遠いです... |