CrystalReport 印刷 CrystalReportViewer クラス CrystalReportViewer コントロールの表示と機能に付いての情報を変更 取得するプロパティ メソッド 及びイベントが有る 解説 CrystalReportViewer コントロールを使用すると Crystal Report をアプリケーション内で表示出来る ReportSource プロパティを使用して 表示するレポートを設定する 此のプロパティを設定すると レポートが CrystalReportViewer コントロール内に表示される レポートのソースには ReportDocument レポートファイルへのパス 又は 厳密に型指定されたレポートを使用出来る CrystalReportViewer コントロールの使用方法の詳細に付いては Report Viewers 及び Windows プロジェクトの作成に関する Project Setup を参照され度い CrystalReportViewer メンバ パブリックプロパティ ActiveViewIndex BackColor BackgroundImage BackgroundImageLayout DisplayBackgroundEdge DisplayGroupTree DisplayStatusBar DisplayToolbar EnableDrillDown EnableToolTips EnterpriseLogon LogOnInfo ParameterFieldInfo ReportSource ReportSourceClassFactoryName RightToLeft SelectionFormula ShowCloseButton ShowExportButton CrystalReportViewer コントロール内のアクティブなビューのインデックスを取得 設定する コントロールの背景色を取得 設定する コントロールに表示される背景イメージを取得 設定する System.Windows.Forms.ImageLayout 列挙で定義される背景イメージレイアウトを取得 設定する レポートをビューウィンドウの枠から離して表示するか何うかを判別する ツリービューを表示するか何うかを取得 設定する ステータスバーを表示するか何うかを取得 設定する ツールバーを表示するか何うかを取得 設定する ユーザーがレポートをドリルダウン出来るか何うかを取得 設定する レポートビューアにツールヒントを表示するか何うかを取得 設定する 企業レポートのログオン情報を取得 設定する TableLogOnInfos コレクションを取得 設定する パラメータフィールドのコレクションを取得 設定する CrystalReportViewer コントロールにバインドするレポートを設定する 内部の ReportSource オブジェクトの作成に必要な情報を取得 設定する ヘブライ語やアラビア語のフォントの使用時等に テキストを右から左に表示するか何うかを取得 設定する レポートのレコード選択式を取得 設定する CrystalReportViewer コントロールツールバーにレポートページを閉じるボタンを表示するか何うかを取得 設定する CrystalReportViewer コントロールツールバーに エクスポートのボタンを表示するか何うかを取得 設定する -1-
ShowGotoPageButton ShowGroupTreeButton ShowPageNavigateButtons ShowPrintButton ShowRefreshButton ShowTextSearchButton ShowZoomButton ViewCount ViewTimeSelectionFormula CrystalReportViewer コントロールツールバーに ページ番号を指定するボタンを表示するか何うかを取得 設定する CrystalReportViewer コントロールツールバーに グループツリーの表示 / 非表示を切り換えるボタンを表示するか何うかを取得 設定する CrystalReportViewer コントロールツールバーに ページナビゲーションのボタンを表示するか何うかを取得 設定する ツールバーに [ 印刷 ] ボタンを表示するか何うかを取得 設定する ツールバーに [ 最新表示 ] ボタンを表示するか何うかを取得 設定する ツールバーに [ 検索 ] ボタンを表示するか何うかを取得 設定する ツールバーに拡大率リストを表示するか何うかを取得 設定する CrystalReportViewer コントロール内のビューの数を取得する レポートで現在使用されて居るデータをフィルタする為のレコード選択式を取得 設定する パブリックメソッド CloseView DrillDownOnGroup ExportReport GetCurrentPageNumber PrintReport RefreshReport SearchForText ShowFirstPage ShowGroupTree ShowLastPage ShowNextPage ShowNthPage ShowPreviousPage Zoom CrystalReportViewer コントロール内のビューのタブを閉じる グループをドリルダウンする CrystalReportViewer コントロールに表示されて居るレポートをエクスポートする レポートの現在のページ番号を取得する CrystalReportViewer コントロールに表示されて居るレポートを出力する CrystalReportViewer コントロールに表示されて居るレポートを最新表示する 指定されたテキストをレポートから検索する レポートの最初のページを表示する グループツリーを CrystalReportViewer コントロールに表示する レポートの最後のページを表示する レポートの次のページを表示する レポートの指定されたページを表示する レポートの前のページを表示する CrystalReportViewer コントロールの拡大率を変更する パブリックイベント Drill DrillDownSubreport Error HandleException Navigate ReportRefresh Search ViewZoom レポートがドリルダウンされると発生する ユーザーがサブレポートをドリルダウンすると発生する CrystalReportViewer コントロールでエラーが発生すると発生する CrystalReportViewer コントロールで例外が発生すると発生する ユーザーがレポートをナビゲートすると発生する レポートのデータが最新表示されると発生する レポートでテキストが検索されると発生する CrystalReportViewer コントロールの拡大率が変更されると発生する -2-
ReportDocument クラス レポートを表す レポートを定義 書式設定 ロード エクスポート 及び 印刷するプロパティとメソッドが含まれる 此のタイプのメンバの一覧に付いては ReportDocument のメンバを参照され度い 解説 レポートの定義と書式設定 エクスポートオプションの設定 印刷オプションの設定 及び レポートオプションの設定に使用するプロパティとメソッドには ReportDocument のプロパティを介して返されるオブジェクトを通じてアクセス出来る ReportDocument メンバ パブリックプロパティ Database DataDefinition DataSourceConnections EnterpriseSession ExportOptions FileName FilePath HasSavedData IsLoaded IsSubreport Name ParameterFields PrintOptions RecordSelectionFormula ReportAppServer ReportClientDocument ReportDefinition ReportOptions Database オブジェクトを取得する DataDefinition オブジェクトを取得する レポート内の総てのテーブルの接続情報を含む IConnectionInfo オブジェクトのコレクションで サブレポートは含まれない BusinessObjects Enterprise で RAS サーバーを管理して居る場合 EnterpriseSession オブジェクトへの参照を取得 設定する ExportOptions クラスインスタンスを取得する レポートファイルの名前を指定する プロトコルかドライブ文字が指定されて居る場合は デフォルトで "ras://" と記述される プロトコルの前置記号を付けずに レポートファイルの名前を指定する レポートに保存されたデータがメモリ内に有るか何うかを取得する レポートが Load メソッドを使ってロードされたか何うかを取得する レポートがサブレポートで有るか何うかを取得する レポート名を取得する ( メインレポートの場合 レポート名は空に成る ) パラメータのフィールドを取得する PrintOptions オブジェクトを取得する レコード選択式を取得 設定する Report Application Server(RAS Server) の名前を取得 設定する ReportClientDocument クラスから Report Application Server API を利用出来る (ReportDocument.ReportAppServer から Report Application Server へポイントして居ない場合 此のプロパティは例外をスローする ) ReportDefinition オブジェクトを取得する ReportOptions オブジェクトを取得する Subreports サブレポートで有る (Subreports オブジェクトを取得する ) SummaryInfo SummaryInfo オブジェクトを取得する -3-
パブリックメソッド Close EnableEventLog Export ExportToDisk ExportToHttpResponse ExportToStream GetConcurrentUsage Load OpenSubreport PrintToPrinter Refresh SaveAs SetCssClass SetDatabaseLogon SetDataSource SetParameterValue VerifyDatabase レポートを閉じる プリントエンジンのイベントログを有効にする ( デフォルトでは ログは有効に成って居ない ) ExportOptions オブジェクト内で指定された形式で 指定された出力先にレポートをエクスポートする レポートを指定の形式でファイルにエクスポートする レポートを指定の形式で応答オブジェクトにエクスポートする レポートを指定の形式でストリームにエクスポートする 開発者がアプリケーションにライセンス監視を組み込める様に同時に開かれて居るジョブの数を返す 新規レポートをロードする ( レポートが既にロードされて居る場合は 其れを閉じて新しいレポートを開く ) レポートに含まれるサブレポートを開き 指定されたサブレポートに対応する ReportDocument オブジェクトを返す PrintOptions.PrinterName プロパティで選択されたプリンタに レポートの指定されたページを印刷する ( プリンタを選択して居ない場合は レポートで指定されたデフォルトのプリンタが使用される ) 保存データを削除する ( 此れで 以後レポートを表示する時に 新しいデータがロードされる ) レポートを指定のファイルに保存する 様々なセクションやレポートオブジェクトのカスケードスタイルシート (CSS) を設定する ユーザー名とパスワードを使ってログオン情報を設定する オブジェクトをレポートエンジンに渡す パラメータフィールドの現在値を設定する ( 値には プリミティブ ParameterValue 孰れかのタイプの配列 又は ParameterValues コレクションを指定出来る ) ReportDocument オブジェクトがロードするレポートに対してデータベース接続がアクティブで有るか何うかを確認する -4-
レポートビューアコントロール Crystal Reports for Visual Studio 2005 には レポートを表示する為の標準フォームコントロールが含まれて居る 各コントロールは ツールボックス内の GUI オブジェクトに複雑なレポートレイアウト情報をカプセル化する 次の 2 つのコントロールが提供される CrystalReportViewer コントロール此のコントロールでは レポートがページベースのレイアウトで表示され ページ間を移動する事が出来る CrystalReportPartsViewer コントロール此のコントロールでは レポート集計情報が小さいポータル型のウィンドウに表示され リンクされた一連のパーツを通じてレポートにより深くドリルダウン出来る 各コントロールはレポートを表示する為に使用する 此れは ツールボックスからコントロールを Web フォームや Windows フォーム上にドラッグアンドドロップし 其のコントロールの ReportSource プロパティをレポートに割り当てて行う ビューアコントロールと其の使用法の詳細に付いては 後述の レポートビューアコントロールの使用方法 を参照され度い -5-
レポートビューアコントロールの使用方法 Crystal Reports SDK を使用してアプリケーションのビルドを計画するに当り 最も重要な検討事項の 1 つに レポートビューアコントロールの使用方法が有る 此等のコントロールに影響を与える SDK の基本を理解する事に依り 目的の Crystal Reports for Visual Studio 2005 プロジェクトに最も適した構造を選択出来る 此の項では 下記の事項に付いて 解説する レポートビューアコントロールとは CrystalReportViewer コントロール CrystalReportPartsViewer コントロール レポートビューアコントロールとは レポートビューアコントロールは Windows アプリケーションや Web アプリケーションにフォームを追加し 其のフォームでレポートを表示する為の.NET コントロールで有る.NET コントロールとは Microsoft.NET コントロールは Visual Studio 2005 のツールボックスに表示される特別なタイプのクラスで有る 此等のコントロールは GUI オブジェクトと仕て Web フォームや Windows フォームに追加され 標準の基本コントロールクラスを継承する 標準的な.NET コントロールには Button DropDownList CheckBox TextBox DataGrid 等が有る Microsoft.NET のコントロールは プレゼンテーション層とビジネスロジック層の分離と謂うベストプラクティスに準拠して居る 此等のコントロールは Web フォームや Windows フォーム上で 表示情報をコントロール自体の中にカプセル化する コード分離クラスでは.NET コントロールはクラスレベルインスタンスと仕てインスタンス化される 此のインスタンス変数は コントロールのプロパティ メソッド 及び イベントへのアクセスを可能にする Microsoft.NET コントロールは Windows フォームと Web フォームの両方で同じ様に機能する.NET フレームワークは Windows アプリケーションでの場合と同様に 各 Web ページをコントロールが含まれるフォームと仕て表示する Crystal Reports がレポートの表示に.NET コントロールを使用する理由 レポート作成ツールの長所の 1 つは レポート構造やデザイン 表示に於ける複雑な処理を 単純な GUI ツールの中にカプセル化する事で有る 同様に.NET コントロールは複雑な表示やデータ入力を Web フォームや Windows のフォームの単純な GUI オブジェクトにカプセル化する.NET コントロールを使用する事に依り レポートの作成や其の表示に関する複雑な処理を 1 つに纏める事が出来る 此れ迄 Crystal Reports のスタンドアロンアプリケーション丈でカプセル化されて居た総ての複雑なレポート情報は レポートビューアと仕て.NET コントロールの中にカプセル化される様に成った -6-
レポートビューアコントロールの数 Crystal Reports for Visual Studio 2005 には Web アプリケーション用と Windows アプリケーション用の 2 つのバージョンの CrystalReportViewer コントロールが付属して居る CrystalDecisions.Web 名前空間に有る CrystalReportViewer コントロールは ASP.NET Web プロジェクトに依って使用される CrystalDecisions.Windows.Forms 名前空間に有る CrystalReportViewer コントロールは Windows プロジェクトに依って使用される Crystal Reports for Visual Studio 2005 では 付属の CrystalReportViewer コントロールに複数の重要な強化が行われて居る 詳細付いては CrystalReportViewer コントロールの使用方法 を参照され度い 亦 Web ページにレポートパーツ而巳を表示する場合は CrystalReportPartsViewer コントロールを使用する レポートパーツコントロールを使用する方法に付いては CrystalReportPartsViewer コントロールを使ったレポートパーツの表示 を参照され度い CrystalReportViewer コントロールを使用してレポートを表示する CrystalReportViewer コントロールは 1 度に 1 つのレポート丈を表示する コントロールが表示するレポートは ユーザーがコードにバインドするレポートに依って決まる 表示するレポートをコントロールに指示するには コントロールの ReportSource プロパティを其のレポートにバインドする 実行時に コントロールは ReportSource プロパティにバインドされたレポートをロードし 此れを表示する 最も単純なフォームでは 割り当ては次の様に成る Visual Basic crystalreportviewer1.reportsource = "C: WorldSalesReport.rpt" C# crystalreportviewer1.reportsource = "C: WorldSalesReport.rpt"; 此の場合 レポートはファイルディレクトリのパスからコントロールに直接バインドされて居る 此れは レポートを CrystalReportViewer コントロールにバインドする為の最も基本的な方法で有る レポートをバインドするシナリオの詳細一覧に付いては レポートをバインドする適切なシナリオの選択 を参照され度い CrystalReportViewer コントロールのバインド DataGrid 等のデータ表示や DataSet 等のデータオブジェクトへのバインドに使用される其他の.NET コントロールの様に CrystalReportViewer コントロールもデータオブジェクトにバインドするのかと謂えば然うではない CrystalReportViewer コントロールは データオブジェクトではなく レポートオブジェクトにバインドする 此れは CrystalReportViewer コントロールの目的が他の.NET コントロールとは異なる為で有る 他の.NET コントロールは データにバインドして生データをページ上で書式設定する 埋め込み Crystal Reports Designer では データの取得と表示をカプセル化した定義に依って レポートを作成する度に此の処理が自動的に行われる 其の為 CrystalReportViewer コントロールはレポートオブジェクトの表示而巳を行う -7-
下記の表は.NET データコントロールにバインドする場合と CrystalReportViewer コントロールにバインドする場合の比較で有る コントロールのタイプ バインド先.NET データコントロール (DataGrid コントロール等 ) データオブジェクト ( DataSet DataReader DataView IDictionary ICollection DataTable).NET レポートビューアコントロール (CrystalReportViewer コントロール等 ) Crystal レポートファイルをカプセル化するレポートオブジェクト 次の層への接続 無し Crystal レポートファイルは 組み込みデータ接続を備えて居る 此れは ODBC や OleDb 等の各種データソースや DataReader オブジェクトや DataSet オブジェクト等に接続する CrystalReportViewer コントロールがデータオブジェクトではなくレポートオブジェクトにバインドする事を解り易く示す為に 此のレポートビューアコントロールのソースプロパティは DataSource ではなく ReportSource と名付けられて居る レポートの自動バインド CrystalReportViewer コントロールのバインドに関するもう 1 つの特徴は 大部分の.NET コントロールとは異なり バインドの為のメソッドを手動で呼び出す必要が無いと謂う点で有る 此のコントロールは 自動的にレポートビューアをレポートオブジェクトにバインドする レポートのバインドに付いての詳細は レポートをバインドする適切なシナリオの選択 を参照され度い CrystalReportViewer コントロール CrystalReportViewer コントロールは.NET Framework でのレポートのバインドおよび表示に使用します CrystalReportViewer コントロールを Web サイトや Windows プロジェクトに追加し これを設定してレポートを表示する方法については プロジェクトの設定 を参照してください Crystal Reports for Visual Studio 2005 には数多くの機能が搭載され これまでのバージョンの CrystalReportViewer コントロールが強化されています これらの機能は 次の 3 つのカテゴリに分類されます Windows プロジェクトと Web サイトの両方で使用出来る機能 Windows プロジェクト丈で使用出来る機能 Web サイト丈で使用出来る機能 Windows と Web スマートタスク ツールヒントを使用不可にするオプション Error イベント マルチリンガルクライアントサポート Unicode 及び GB18030 の文字エンコード方式のサポート -8-
VS 2005 資料 Windows 限定 プロパティウィンドウからのレポートの選択 デザイン時プレビュー (Windows に追加 ) Web 限定 [ プロパティ ] ウィンドウから Crystal Reports への自動データバインド タグベースアプリケーション開発モデル CrystalReportSource コントロール CrystalReportViewer コントロールをカスタマイズする為のカスケードスタイルシート CrystalReportViewer コントロールの Themes CrystalReportViewer コントロールをネストする Multiview コントロール又は Wizard コントロール スマートタスク Visual Studio 2005 で.NET コントロールを Web フォームや Windows フォームに追加すると [ スマートタスク ] パネルが表示される [ スマートタスク ] は.NET コントロールの右上隅に追加される小さいパネルで有る パネルを開くと パネルにはチェックボックスとコンボボックスが用意されて居て 開発者は此等のボックスを使って接続やコントロールの其他のオプションを選択出来る 此の機能に依り 開発者が記述する必要が有るコードの量が大幅に少なく成る Web サイトでは [ スマートタスク ] パネルで選択を行うと ASPX ページで XML が自動生成される Windows プロジェクトでは [ スマートタスク ] パネルで選択を行うと 非表示クラスファイルでコードが自動生成される 非表示クラスファイルは 既存の Windows フォームクラスへの追加と仕て機能する部分クラスで有る 部分クラスは.NET Framework バージョン 2.0 の新機能で有る CrystalReportViewer コントロールに依って [ スマートタスク ] パネルを充分に活用出来る パネルで利用出来る選択肢は Web プロジェクトと Windows プロジェクトで異なる 次の各 [ スマートタスク ] パネルの詳細に付いては 該当するリンクをクリックされ度い CrystalReportViewer の Web サイト用のスマートタスク CrystalReportViewer の Windows プロジェクト用のスマートタスク スマートタスクと減少したコードモデルの制限 スマートタスクに依って コードを自動生成して 手動でコードを記述するよりも作業時間を減らす事が出来る 減少したコードモデルの作成が促進される 但し 自動生成コードを使用すると 初めは時間が節減されるが プロジェクトに後から機能や柔軟性を追加し度い場合 減少したコードモデルからコーディングモデルに切り替えるのが困難で有る 減少したコードモデルを使用した Crystal Reports プロジェクトの開発 減少したコードモデルを使って Crystal Reports で Web サイトや Windows プロジェクトを構築する場合は 次の孰れかの [ スマートタスク ] チュートリアルを参照され度い スマートタスク使用の Crystal Reports での減少したコードに依る Web サイトの設定 スマートタスク使用の Crystal Reports での減少したコードに依る Windows プロジェクトの設定 -9-
VS 2005 資料 コーディングモデルを使用した Crystal Reports プロジェクトの開発 Crystal Reports で コードを手動で記述して Web サイトや Windows プロジェクトを構築する場合は プロジェクトの設定 を参照され度い ツールヒントを使用不可にするオプション レポートのセクションの上にマウスを移動すると ツールヒント機能に依りコンテキスト情報が表示される 現在は 此のオプションが追加され CrystalReportViewer クラスの新しい EnableTooltips プロパティを使用して ツールヒント機能をグローバルに使用不可にする事が出来る 此のプロパティを False に設定すると ツールヒント情報はグローバルに無効に成る Error イベント Crystal Reports for Visual Studio.NET の以前のバージョンでは CrystalReportViewer コントロールを使用する度に スローされる可能性が有る総ての例外をトラップする必要が有った キャッチされないで残された例外が有ると ページの処理が中断され エラーが表示される 中断とエラーを回避する為に Error イベントと謂う新しいイベントが CrystalReportViewer コントロールに追加された Error イベントを使用すると CrystalReportViewer コントロールは 処理を中断する事無く CrystalReportViewer コントロールの上部に例外メッセージを表示する スローされた例外を非表示にするには Error イベントメソッドを呼び出して イベントハンドラで ErrorEventArgs.Handled を True に設定する Error イベントメソッドを使ってエラーページを非表示にする 1.Error イベントメソッドを分離コードクラスに追加する Visual Basic Sub mycrystalreportviewer_error( _ ByVal source As Object, ByVal e As CrystalDecisions.Web.ErrorEventArgs) End Sub C# void crystalreportviewer_error(object source, CrystalDecisions.Web.ErrorEventArgs e) { } 2. イベントハンドラで ErrorEventArgs.Handled を True に設定する e.handled = True e.handled = true; Visual Basic C# -10-
VS 2005 資料 マルチリンガルクライアントサポート Crystal Reports for Visual Studio 2005 は 動的なロケール設定に依って 様々な言語を使用する Web や Windows のクライアントをサポートする 動的なロケール設定に依り ユーザーはツールヒント等の CrystalReportViewer コントロールのコンテンツを 希望の言語で参照出来る 言語リソース Web サーバーや Windows クライアントでは 次の 2 つのソースから CrystalReportViewer コントロール用の言語リソースにアクセス出来る デフォルトの言語リソース DLL( 次の言語が含まれる ) 英語 (en) フランス語 (fr) ドイツ語 (de) スペイン語 (es) イタリア語 (it) 日本語 (jp) 韓国語 (ko) 簡体字中国語 (zh-chs) 繁体字中国語 (zh-cht) 此等の言語リソースは Business Objects Web サイトからダウンロード出来る 注 : デフォルトの言語リソースファイルの全リストに付いては ヘルプの デフォルト及びカスタム言語リソースファイルの使用 を参照され度い ダウンロード場所に付いては 役に立つアドレスの一覧 を参照され度い カスタム言語リソースファイル ( 文字列と仕て作成した後に カスタム言語リソース DLL と仕てコンパイルする 注 : カスタム言語リソース DLL の作成方法に付いては チュートリアル マルチリンガルクライアントサポートの設定 を参照され度い ニュートラルリソースと非ニュートラルリソース 言語リソースには ニュートラルと非ニュートラルのリソースが有る ニュートラルリソースとは en( 英語 ) fr( フランス語 ) 及び jp( 日本語 ) 等の一般的な言語設定で有る 非ニュートラルリソースとは 例えば ドイツ語 ( オーストリア ) 用の de-at の様に 地域等の追加基準に基づいて設定される言語バージョンで有る グローバルリソースとローカルリソース デフォルト言語リソースは GAC にインストールされる為 常にグローバルで使用出来る 一方 カスタム言語リソースは グローバル 又は ローカルの孰れかでアクセスする 此のカスタム言語リソースフォルダをネットワークの中央に保存して其処で共有する事も出来るが Web や Windows のアプリケーションのローカルディレクトリにコピーする事も出来る -11-
カスタム言語リソースを中央に保存した場合 此のリソースは グローバルリソース と呼ばれる 此のシナリオでは XML 設定ファイルでの設定に依り Web や Windows アプリケーションに対してリソースの位置を伝える必要が有る グローバルリソースを正しくロードするには リソースファイルが含まれるフォルダの名前と言語のロケールが一致する必要が有る ローカルディレクトリにリソースをコピーした場合には カスタム言語リソースは ローカルリソース と呼ばれる 此のシナリオでは 設定ファイルは必要無い ローカルリソースを正しくロードするには リソースファイルのカルチャとリソースファイルが含まれるフォルダの名前が言語のロケールと一致する必要が有る 注 : グローバルリソースとローカルのリソースの設定や使用方法の詳細に付いては チュートリアルで説明されて居る マルチリンガルクライアントサポートの設定 を参照され度い グローバルリソースとローカルリソースの選択 リソースを複数のアプリケーションで共有する必要が有る場合は グローバルリソースが適して居る 例えば Web サーバーに複数の Web サイトが有り 其の総ての Web サイトで標準セットの言語リソースを共有する必要が有る場合等は グローバルリソースの使用が適して居る 広範な配布により単純な設定が指定されて居る単一のアプリケーション丈でリソースを使用する場合には ローカルリソースが適して居る 例えば Windows アプリケーションは 広範な配布を目的とした単一のアプリケーションフォルダで構成されて居る為 ローカルリソースの使用が最適で有る 殆どの場合 Web アプリケーションにはグローバルリソースを選択し Windows アプリケーションにはローカルリソースを選択するのが適切で有る 初めにロードするリソース 特定のアプリケーションに対してローカルとグローバルの両方のリソースを設定する場合には ローカルリソースの優先順位が高く成る ( ロードの順序が先に成る ) 確実にグローバルリソースを使用し度い場合は 設定ファイルが正しく機能する事を確認してからローカルリソースフォルダを削除する 非ニュートラルとニュートラルのリソースも リソースのロード順の影響を受ける 特定の言語に非ニュートラルとニュートラルの両方のリソースを設定して居る場合には ( ドイツ語 ( オーストリア ) とドイツ語等 ) 非ニュートラルのリソースが最初にチェックされる 孰れの場合も 特殊なリソースの方が 一般的なリソースよりも優先順位が高く成る クライアント側の表示 実行時にクライアントアプリケーションで表示される言語は 次の要因に依り決定される Windows アプリケーションの場合 各ユーザーのマシンの環境ロケール設定 Web サイトの場合 Web サーバーの環境ロケール設定 クライアントブラウザの言語設定 個々の ASPX ページにユーザーが設定する地域言語プロパティ -12-
VS 2005 資料 Unicode 及び GB18030 の文字エンコード方式のサポート Crystal Reports for Visual Studio 2005 は 次の文字集合規格に含まれる各国文字をサポートする Unicode GB18030 Crystal Reports が Unicode と GB18030 でのエンコーディングを何の様にサポートするかを理解するには 文字に関する 3 つの観点 ( 文字群 コードポイントと仕ての文字 コード化データと仕ての文字 ) を理解する必要が有る 亦 コードポイント ( より正確なコード化文字の表現 ) とコード単位の関係に付いても理解する必要が有る 次のリンクをクリックして 目的の節にジャンプされ度い 文字の観点 コードポイントとコード単位の関係 Crystal Reports による Unicode 経由での GB18030 のサポート 文字の観点 文字集合規格を理解するには 文字に関する次の 3 つの観点を個々に理解する必要が有る 文字群 ( 文字の概要リスト ) スカラ値を持つコードポイントと仕ての文字 コード化されたデータと仕ての文字 文字群 ( 文字の概要リスト ) 文字群は 100 万文字を超える文字の概要リストで 此処に含まれる文字は ラテン語 キリル語 中国語 韓国語 日本語 ヘブライ語 及び アラム語等 様々なスクリプトで使用される 音符等の記号も亦 文字群に含まれる Unicode 規格と GB18030 規格には 夫々れ文字群が有る 1 つの規格に新しい文字が追加されると 他方の規格にも其の文字が追加され パリティが維持される スカラ値を持つコードポイントと仕ての文字 注 : 此の 2 つめの観点は Unicode 丈に当て嵌り GB18030 には該当しない 文字群に含まれる夫々れの文字には コードポイントが割り当てられる 各コードポイントには スカラ値と呼ばれる特定の数値が有る 多く場合 スカラ値は 16 進数で表される コードポイントは コードスペースに置かれる コードスペースは スカラ値の範囲で構成され 次の 2 つの面に分けられる BMP( 基本多言語面 )( サイズ :64K) Unicode の場合 此の下位多言語面に含まれる値の 16 進式の範囲は U+0000 から U+FFFF で有る -13-
SMP( 補助多言語面 )( サイズ :64K の 16 の補助セクション ) Unicode の場合 此の上位多言語面に含まれる値の 16 進式の範囲は U+10000 から U+10FFFF で有る 使用可能な全スカラ値のコードスペースの合計サイズは 17 * 64k( 使用可能な値の数 :1,088,000) で有る コード化されたデータと仕ての文字 夫々れのエンコード方式に依り 文字は文字群からコード化データへと変換される GB18030 の場合 コード化データは 文字群から直接生成される 文字群とコード化データを媒介するスカラ値と謂う概念は Unicode 丈で使用される Unicode の場合 コード化データは スカラ値にアルゴリズムを適用する事に依って生成される Unicode は 次の 3 つの文字エンコード方式を定義する UTF-8 UTF-16 UTF-32 コードポイントとコード単位の関係 Crystal Reports for Visual Studio 2005 に依る GB18030 と Unicode のサポート方法を理解するには コードポイントとコード単位の関係を理解する必要が有る コードポイントとコード単位 個々のエンコードで コードポイントは 1 つ 又は 複数のコード単位にマップされる 注 : コードポイントの概要に付いては 前のセクション 文字の観点 を参照され度い コード単位は 各エンコード形式に含まれる 1 つの単位で有る コード単位のサイズは 個々のエンコード形式のビット値と同じで有る UTF-8 のコード単位は 8 ビットで構成される UTF-16 のコード単位は 16 ビットで構成される UTF-32 のコード単位は 32 ビットで構成される GB18030 では コード単位は 8 ビットで構成される 各コードポイントのコード単位数 コードポイントへのマップが必要なコード単位数は エンコード形式に依って異なる UTF-8 UTF-8 では コード単位が比較的小さい事から 1 コードポイントに付き 複数のコード単位をマップする事が一般的で有る コードポイントは 1 2 3 又は 4 つのコード単位にマップされる -14-
UTF-16 UTF-16 コード単位の大きさは 8 ビットのコード単位の 2 倍で有る 従って U+10000 よりもスカラ値が小さいコードポイントは 1 つのコード単位でエンコードされる スカラ値が U+10000 以上のコードポイントの場合は コードポイント毎に 2 つのコード単位が必要に成る 此等のコード単位のペアには UTF-16 独自の Unicode サロゲートペアが含まれる 注 :Unicode サロゲートペアのサポートに付いては 後述する UTF-32 UTF-32 で使用される 32 ビットのコード単位は 所有るコードポイントを 1 つのコード単位でエンコード出来る大きさと成る GB18030 GB18030 では コード単位が比較的小さい事から 1 コードポイントに付き 複数のコード単位をマップする事が一般的で有る コードポイントは 1 2 又は 4 つのコード単位にマップされる Unicode サロゲートペアのサポート Unicode がサポートするスクリプトに U+10000 以上のスカラ値を持つコードポイントの文字が含まれる場合が有る UTF-16 では 此の様なコードポイントを サロゲートペアを使用してエンコードする Unicode サロゲートペアは 適切に処理する必要が有る 例えば エンコードに UTF-16 を使用するアプリケーションでテキストを操作して居る場合 切り取り コピー 貼り付け操作の為に文字を追加 削除 又は 選択する時は 各コードポイントを 1 つのテキスト文字と仕てテキストカーソルを動かす必要が有る Crystal Reports に依る Unicode 経由での GB18030 のサポート Crystal Reports for Visual Studio 2005 は GB18030 を直接サポートして居ない 孰れかの Unicode エンコード形式に変換済みの値を通して GB18030 にアクセスする 変換には.NET Framework 一部のデータベースドライバ Windows オペレーティングシステム等 数多くのソースを使用出来る テキストは通常 UTF-8 と仕てハードドライブに保存され UTF-16 と仕てメモリにロードされる Crystal Reports は UTF-16 で Unicode サロゲートペアをサポートして居る Unicode を使用した GB18030 のサポート例 Unicode 変換に依る GB18030 サポートの提供領域と仕て把握するべき重要な場所は 次の通りで有る GB18030 でコード化されたデータを含むデータベース GB18030 でコード化されたデータベースデータは データベースドライバがデータの取得時に此れを UTF-16 に読み替える場合に而巳サポートされる 注 :Microsoft SQL Server 2005 は データの取得時に GB18030 データを UTF-16 に読み替える 其他のサーバーに付いては 使用して居るデータベースプロバイダに問い合わせられ度い GB18030 ソースからデータを公開する DateSets ソースに拘らず DataSets は UTF-8 でコード化された XML と仕てフォーマットされる -15-
VS 2005 資料 GB18030 ソースからデータを公開する Web サービス Web サービス経由で送受信された総てのテキストは Unicode に変換済みで有る サポートされて居ない GB18030 シナリオ Crystal Reports が GB18030 をサポートしない主な状況と仕ては GB18030 でコード化されたテキストファイルへのアクセス 及び 此のファイルのインポートが挙げられる GB18030 でコードされたテキストファイルは 先ず サードパーティに依って Unicode に変換する必要が有る 変換後 Crystal Reports は 其の Unicode でコード化されたテキストファイルと対話出来る様に成る プロパティウィンドウからのレポートの選択 Windows プロジェクトで CrystalReportViewer コントロールを使ってレポートを選択して表示するには ReportDocument コンポーネントをページ上にドラッグしてコンポーネントのレポートを設定してから 分離コードクラスでレポートを CrystalReportViewer コントロールにバインドする必要が有る Crystal Reports for Visual Studio 2005 では CrystalReportViewer コントロールのレポート選択が簡素化された CrystalReportViewer コントロールを Windows フォームに追加したら [ プロパティ ] ウィンドウに有る ReportSource プロパティからレポートを選択出来る ReportSource プロパティはコンボボックスを表示する コンボボックスをクリックすると 参照の選択とプロジェクトに含まれる総ての埋め込みレポートの一覧が表示される ReportSource プロパティを使用して レポートを選択する レポートのデザイン時プレビューは CrystalReportViewer コントロールに表示される 詳細に付いては デザイン時プレビュー を参照され度い 注 : レポートのバインドの詳細に付いては レポートをバインドする適切なシナリオの選択 を参照され度い Crystal Reports API を使用してコーディングするプロジェクトの設定方法に付いては プロジェクトの設定 を参照され度い デザイン時プレビュー (Windows に追加 ) デザイン時プレビューは レポートをデザイン時にプレビューする機能で有る Crystal Reports for Visual Studio.NET の以前のバージョンでは レポートをファイルディレクトリパスと仕て [ プロパティ ] ウィンドウの ReportSource プロパティに割り当てた時 Web プロジェクトの CrystalReportViewer コントロールでデザイン時プレビュー機能を利用出来た 此の機能は Windows プロジェクトに追加された レポートを [ プロパティ ] ウィンドウの ReportSource プロパティに割り当てると デザイン時にレポートのプレビューが Windows フォームに表示される -16-
CrystalReportPartsViewer コントロール CrystalReportPartsViewer コントロールは.NET Framework で リンクされた一連のパーツと仕て Crystal レポートをバインド 及び 表示する為に使用される 此のコントロールに依り レポート情報の表示に必要な領域を削減出来る事から ポータル Web ページに少量のレポート情報を表示する様な場合に理想的に機能する 注 : リンクされた一連のパーツと仕てレポートが機能する為の変更方法や CrystalReportPartsViewer コントロールへのバインドに付いては チュートリアル CrystalReportPartsViewer コントロールを使ったレポートパーツの表示 を参照され度い Crystal Reports for Visual Studio 2005 では CrystalReportPartsViewer コントロールの機能が強化され Web パーツフレームワークや ASP.NET バージョン 2.0 を搭載したポータルフレームワークをサポート出来る様に成った Web パーツフレームワークに依り 開発者は設定可能な Web パーツのページにコントロールをカプセル化出来る -17-
詳細情報 プロジェクトの設定 此のセクションは 上級と中級の開発者の孰れに取っても重要な学習ポイントで有る 新しい Windows プロジェクトや Web プロジェクトを Crystal Reports for Visual Studio.NET 2002 2003 及び Crystal Reports for Visual Studio 2005 で作成 及び 設定するに当たっての 推奨されるベストプラクティスを示す Visual Studio 2005 でのプロジェクトの設定 Crystal Reports for Visual Studio 2005 では Web アプリケーションと Windows アプリケーションが同様の構造ではなく成った Web アプリケーションは プロジェクトと仕てビルドされなく成った 現在は Web サイトと仕てビルドされる 此れは Web アプリケーションをプロジェクトと仕て表現する事は無く成った事を意味する Web サイトフォルダのコンテンツは Windows プロジェクトのコンテンツよりも単純化された 特に 此れ迄プロジェクトとグローバルのファイル全体に及んで居た設定情報の殆どが削除され 其の残りは Web.config ファイルに再配置されて居る Windows アプリケーションは 引き続きプロジェクトと仕てビルドされる Visual Studio 2005 での Windows プロジェクトの設定 此のセクションでは コーディングモデルを使用した Windows プロジェクトの設定を示す 此の設定の一部と仕て Form1 クラスと入力コードに付いて説明する 此処で作成する此のコードベースの Windows プロジェクトは オンラインヘルプで提供されるコーディングチュートリアルに取っての必要条件と成る ヘルプの チュートリアルとサンプルコード を参照され度い Visual Studio 2005 で提供されて居る減少したコードのモデルを使用して Windows プロジェクトをビルドする場合は チュートリアル スマートタスクを使用した Crystal Reports での減少したコードに依る Windows プロジェクトの設定 に進む 此のセクションの手順は 下記の順に続けて完了する必要が有る 新しい Windows プロジェクトの作成 標準 Visual Basic プロジェクト設定の適用 Windows フォームの準備 CrystalReportViewer コントロールの追加 新しい Windows プロジェクトの作成 Windows プロジェクトを作成する前に Crystal Reports for Visual Studio 2005 がシステムにインストールされて居る事を確認する ヘルプの 必須インストール を参照され度い Crystal Reports for Visual Studio 2005 を使用して Windows プロジェクトを設定する -18-
1.Visual Studio 2005 を起動する 2.[ ファイル ] メニューの [ 新規作成 ] を選択し 次に [ プロジェクト ] をクリックする 3.[ 新しいプロジェクト ] ダイアログボックスで [ プロジェクトの種類 ] リストから C# 又は Visual Basic の言語フォルダを選択する 4. テンプレートのリストから [Windows アプリケーション ] をクリックする 5.[ 名前 ] フィールドで デフォルトのプロジェクト名をユーザー指定のプロジェクト名に置き換える 此処では Pascal の命名規則を適用し プロジェクト名の最初の文字を大文字にする ( プロジェクトから生成されるアセンブリの名前空間名と仕てプロジェクト名が使われる為で有る ) 6.[OK] をクリックする 標準 Visual Basic プロジェクト設定の適用 此のドキュメントのチュートリアルで動作する様にプロジェクトを設定するには Visual Basic プロジェクトのプロジェクト設定を少し変更する必要が有る 猶 プロジェクトを C# で開発して居る場合は Windows フォームの準備 に進む Crystal Reports for Visual Studio 2005 で Visual Basic プロジェクトのプロジェクト設定を修正する 1. ソリューションエクスプローラで ソリューション名の下に太字で表示されて居るプロジェクト名を右クリックし [ プロパティ ] を選択する 2.[ プロパティ ] ビューの [ コンパイル ] タブをクリックする 3.[OptionStrict] リストで [ オン ] をクリックする 4.[ プロパティ ] ビューを閉じる 5.[ ファイル ] メニューの [ 総て保存 ] をクリックする 注 : ベストプラクティスと仕て 総ての Visual Basic プロジェクトの最初で OptionStrict を有効にする事を推奨する 此れに依って コードを記述する時に 厳密に型指定された変数宣言と有効なキャストを行うベストプラクティスが強制的に使用される 此等は孰れも コンパイル時にチェックされる コンパイル時のチェックを必ず実行する事で 実行時の例外が減少する Windows フォームの準備 従来の Visual Basic 6 で作成される Windows アプリケーションは 通常 Form1 と謂う名前でデフォルトのフォームを定義して居た Windows プロジェクトでも此のパターンに従い 同じデフォルトのフォーム名 Form1 を使用する 拡張子は 使用する開発言語に応じて.cs 又は.vb に成る Crystal Reports for Visual Studio 2005 で Windows フォームを準備する 1. メインウィンドウに Form1 が表示されて居ない場合は ソリューションエクスプローラで [Form1] をダブルクリックする Designer に [Form1] が表示される 2.[ 表示 ] メニューの [ コード ] をクリックする Form1 クラスのコードビューが表示される 此のクラスの表示は Windows アプリケーションが Visual Basic か C# の孰れでプログラムされたかに依存する C# では Form1 クラスは次の様に表示される クラス署名 コンストラクタ (Form1) Visual Basic では Form1 クラスは次の様に表示される クラス署名 (Form1 クラス ) -19-
注 :Form1 クラスに追加されたメソッドや変数は 別のパーシャルクラスに格納される 此れは C# でも Visual Basic でも同様で有る パーシャルクラスに付いては 此の後の Windows プロジェクトの設定 で説明する 次に private helper メソッドを追加し 此のクラスに Crystal Reports を設定する総てのコードの指定場所と仕て使用する Crystal Reports 設定コードのプライベートヘルパーメソッドを追加する 1. 此の Form1 クラスに 戻り値の無い新しいプライベートスコープのヘルパーメソッド ConfigureCrystalReports を追加する Visual Basic Private Sub ConfigureCrystalReports( ) End Sub private void ConfigureCrystalReports( ) { } C# 次に Form_Load イベントハンドラを追加し Form_Load イベントハンドラに有る ConfigureCrystalReports を呼び出す 此れに依り フォームのロード時に自動的に ConfigureCrystalReports メソッドが実行される 2.[ ファイル ] メニューの [ デザイナ ] をクリックする 3.[Form1] をダブルクリックする コードビューに戻る Form1 をダブルクリックした為 Form1_Load イベントハンドラが Form1 クラスに自動的に作成される 4.Form1_Load イベントハンドラで ConfigureCrystalReports メソッドの呼び出しを入力する ConfigureCrystalReports( ) ConfigureCrystalReports( ); Visual Basic C# 5.[ ファイル ] メニューの [ 総て保存 ] をクリックする CrystalReportViewer コントロールの追加 Windows フォームにレポートを表示するには CrystalReportViewer コントロールを追加する Crystal Reports for Visual Studio 2005 で CrystalReportViewer コントロールを追加する 1. デザインビューで Form1 を開く 2. ツールボックスから Crystal Reports ノードを開いて CrystalReportViewer コントロールを探す 3.CrystalReportViewer コントロールをフォーム上にドラッグアンドドロップする -20-
CrystalReportViewer コントロールでは スマートタスクパネル と呼ばれる新しい GUI 機能がコントロールの右上隅に表示される 注 : 此れは.NET バージョン 2.0 で提供される減少したコードに依る開発モデルの一部で有る CrystalReportViewer コントロールのスマートタスクパネルは GUI 設定を使用してレポートのバインドやコントロールのレイアウト等の機能設定を単純化する 此処では コードベースの開発モデルを使用して居る為 設定にはスマートタスクパネルを使用しない スマートタスクパネルの詳細に付いては スマートタスク を参照され度い 4. スマートタスクパネルが開いて居る場合は CrystalReportViewer コントロールの右上隅に有る矢印トグルをクリックして スマートタスクパネルを閉じる 5.CrystalReportViewer コントロールをクリックして選択する 6.[ プロパティ ] ウィンドウから Name プロパティを以下の様に設定する Visual Basic Windows プロジェクトの場合は Name プロパティに mycrystalreportviewer を設定する C# Windows プロジェクトの場合は Name プロパティに crystalreportviewer を設定する 7.[ ファイル ] メニューの [ 総て保存 ] をクリックする 8.[ ビルド ] メニューの [ ソリューションのビルド ] をクリックする ConfigureCrystalReports が正常に追加されて居る事を確認する 1.[ 表示 ] メニューで [ 其他のウィンドウ ] [Object Browser] の順にクリックする 2.Object Browser でプロジェクト名のノードを展開し 次にプロジェクト名の名前空間ノードを展開して [Form1] クラスをクリックする Form1 クラスのメンバが表示される 此れには CrystalReportViewer 変数 (Form1.Designer.cs パーシャルクラスから ) 及び ConfigureCrystalReports メソッド (Form1.cs パーシャルクラスから ) の両方が含まれて居る Visual Studio 2005 では Form1.cs( 又は.vb) と此れに対応するファイルの Form1.designer.cs( 又は.vb) は 夫々れのメンバを共有する単一の Form1 クラスに両方ともコンパイルされる 此れは.NET フレームワークバージョン 2.0 の新機能で有るパーシャルクラスに依って可能と成る partial と謂う名前のクラス修飾子をクラス署名に追加出来る 此の修飾子は 此のクラスファイルが同名の既存のクラスに追加されて居る事を示す 此れは Windows フォームに次の様な影響を及ぼす Visual Studio.NET 2002 と 2003 の場合 Form1.cs( 又は.vb) ファイルには Windows フォームに追加されたコントロールのクラスレベル宣言等の多数の自動生成コードや 其のフォームやコントロールに関するイベント等の設定コードが含まれて居た Visual Studio 2005 では 此の自動生成コードは より目立たない Form1.designer.cs( 又は.vb) ファイルに移動されて居る 此のファイルは Form1 パーシャルクラスで有る 此れに依り 元の Form1 クラスは Form1 パーシャルクラスから総ての自動生成コードにアクセス出来る様に成ると同時に 開発者が記述する追加コードを制限しない様に成る 名前空間を参照する Imports/Using 文を追加する 1. ソリューションエクスプローラに [ 参照 ] フォルダが表示されない場合は ソリューションエクスプローラのツールバーで [ 総てのファイルを表示 ] をクリックして 総てのプロジェクトファイルを表示する 2. ソリューションエクスプローラで [ 参照 ] フォルダを展開する -21-
3. 次の Crystal Reports アセンブリが追加されて居る事を確認する CrystalDecisions.CrystalReports.Engine CrystalDecisions.Shared 4.Form1 を選択し [ 表示 ] メニューの [ コード ] をクリックする Form1 クラスのコードビューが表示される 5. クラス署名の上で Imports(Visual Basic) 又は using(c#) 宣言を 次の Crystal Reports 名前空間を含むクラスの先頭に追加する Visual Basic Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared C# using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; 注 :Crystal Reports の様々なクラスに名前空間の前置記号を付けずにアクセスするには 此等の名前空間をクラスの先頭で宣言する必要が有る 此れで プロジェクトの設定は完了した 但し 多くのチュートリアルには サンプルレポートを追加する等の追加設定が必要で有る CrystalReportViewer の Windows プロジェクト用のスマートタスク CrystalReportViewer の Windows 用の [ スマートタスク ] パネルを使用すると Crystal レポートを作成 選択 編集する事が出来る 亦 CrystalReportViewer コントロールをカスタマイズするオプションも用意されて居る 次の各機能は Windows プロジェクトの [ スマートタスク ] パネルで使用出来る Crystal レポートの新規作成と編集 新しい Crystal レポートの作成此のメニューコマンドを使用すると 埋め込み Crystal Reports Designer を介してレポート作成する事が出来る 処理を完了すると レポートを CrystalReportViewer コントロールにバインドして 直ちに表示するレポートコードが自動生成される 此の機能の使用方法に付いては スマートタスクを使用した Crystal Reports での減少したコードに依る Windows プロジェクトの設定 を参照され度い Crystal レポートの選択此のコンボボックスを使用すると 既存の Crystal レポートを選択する事が出来る 処理を完了すると レポートを CrystalReportViewer コントロールにバインドして 直ちに表示するレポートコードが自動生成される CrystalReportViewer コントロールのカスタマイズ ツールバーを表示此のチェックボックスを使用して CrystalReportViewer コントロールツールバーの表示 / 非表示を切り替える事が出来る -22-
グループツリーを表示此のチェックボックスを使用して CrystalReportViewer コントロールに有るグループツリーの表示と非表示を切り替える事が出来る ステータスバーを表示此のチェックボックスを使用して CrystalReportViewer コントロールに有るステータスバーの表示と非表示を切り替える事が出来る 親コンテナでドッキングを解除する此のメニューコマンドを使用すると Dock プロパティを None 又は Fill に設定する事が出来る デフォルトでは CrystalReportViewer コントロールを Windows フォームにドロップすると Dock プロパティは Fill に設定される 此のメニューコマンドをオンにすると Dock プロパティの None が終了し Windows フォームや他のコンテナ内 (Windows フォーム内の Panel コントロール等 ) で CrystalReportViewer コントロールを自由に移動して サイズを変更する事が出来る スマートタスク使用の Crystal Reports での減少したコードに依る Windows プロジェクトの設定 初めに 此のチュートリアルでは Crystal Reports for Visual Studio 2005 で Windows プロジェクトを作成する方法を学習する 次に CrystalReportViewer コントロールを Windows フォームに追加する [ スマートタスク ] パネルから埋め込み Crystal Reports Designer を開き 新しいレポートを作成する スマートタスク機能は CrystalReportViewer コントロールにレポートをバインドするコードを生成する 此のチュートリアル全体に於いて 此のレポートは次の 3 つの方法でプレビュー出来る 埋め込み Crystal Reports Designer で Visual Studio 2005 の為の新しい [ プレビュー ] ボタンを使用してプレビューする Windows フォームでダミーデータを使用してプレビューする 注 :Windows フォームの此のプレビューは デザイン時プレビューと謂う新しい機能で有る デザイン時プレビューは レポートをデザイン時にプレビューする機能で有る Crystal Reports for Visual Studio.NET の以前のバージョンでは レポートをファイルディレクトリパスと仕て [ プロパティ ] ウィンドウの ReportSource プロパティに割り当てた時 Web プロジェクトの CrystalReportViewer コントロールでデザイン時プレビュー機能を利用出来た 此の機能は Windows プロジェクトに追加された レポートを [ プロパティ ] ウィンドウの ReportSource プロパティに割り当てると デザイン時にレポートのプレビューが Windows フォームに表示される 実行時にアプリケーションを構築してコンパイルする際にプレビューする 此のチュートリアルの最後で コードビューに切り替え Crystal Reports for Visual Studio 2005 で減少したコードの開発モデルが何の様に機能するかを確認する CrystalReportViewer コントロールを使用する Windows プロジェクトの作成 Windows プロジェクトを作成する前に Crystal Reports for Visual Studio 2005 がシステムにインストールされて居る事を確認する 詳細に付いては ヘルプの 必須インストール を参照され度い -23-
Crystal Reports for Visual Studio 2005 で減少したコードの Windows プロジェクトを設定する 1.Visual Studio 2005 を起動する 2.[ ファイル ] メニューの [ 新規作成 ] を選択し 次に [ プロジェクト ] をクリックする 3.[ 新しいプロジェクト ] ダイアログボックスで [ プロジェクトの種類 ] リストから C# 又は Visual Basic の言語フォルダを選択する 4. テンプレートのリストから [Windows アプリケーション ] をクリックする 5.[ 名前 ] フィールドで デフォルトのプロジェクト名をユーザー指定のプロジェクト名に置き換える 6.[OK] をクリックする ソリューションエクスプローラが開き Form1 クラスが含まれる 7.Form1 クラスを開く 8. ツールボックスから Crystal Reports ノードで CrystalReportViewer コントロールを探す 9.CrystalReportViewer コントロールを Windows フォームにドラッグする A.[ プロパティ ] ウィンドウから Name プロパティを以下の様に設定する Visual Basic プロジェクトの場合は 値に mycrystalreportviewer を設定する C# プロジェクトの場合は 値に crystalreportviewer を設定する B.[ ファイル ] メニューの [ 総て保存 ] をクリックする スマートタスクを使用するレポートの設定 Visual Studio 2005 には.NET コントロールで使用する スマートタスクと呼ばれる新しい GUI 機能が有る Windows プロジェクトの CrystalReportViewer コントロールの場合 スマートタスクパネルは [CrystalReportViewer タスク ] と謂う名前で有る CrystalReportViewer タスクのスマートタスクパネルを使用すると コードを記述しなくても CrystalReportViewer コントロールの複数の機能を設定する事が出来る 詳細に付いては CrystalReportViewer の Windows プロジェクト用のスマートタスク を参照され度い スマートタスクで行った選択内容が Form1 のパーシャルクラスにコードと仕て生成される 此の非表示のパーシャルクラスは 初期化コードとデザインコードを含む Visual Studio 2005 の新しい機能で有る 此のセクションでは [CrystalReportViewer タスク ] スマートタスクパネルと埋め込み Crystal Reports Designer を使用して新しいレポートを設定する 減少したコードのチュートリアルでは 後でスマートタスクの他の機能を学習する スマートタスクを使用するレポートの設定 1.CrystalReportViewer コントロールの右上隅に有る小さい三角形のボタンをクリックする CrystalReportViewer タスクのスマートタスクパネルが開く 2.[ レポートの新規作成 ] リンクをクリックする 3.[ 新しい Crystal レポートの作成 ] ダイアログボックスに XtremeCustomers.rpt と謂う名前を入力し [OK] をクリックする Crystal Reports ギャラリのダイアログボックスが開く 4.[Crystal Reports ギャラリ ] ダイアログボックスの [Crystal レポートドキュメントの新規作成 ] パネルで [ レポートウィザードを使用 ] を選択する 5.[ エキスパートの選択 ] パネルで [ 標準 ] を選択し [OK] をクリックする 6. 標準レポート作成ウィザードウィンドウの [ 利用可能なデータソース ] パネルで 次の手順を実行する a.[ 接続の新規作成 ] フォルダを展開する b.[odbc(rdo)] フォルダを展開する -24-
7.ODBC(RDO) ウィンドウで Xtreme サンプルデータベース用の ODBC DSN エントリ の説明に従って 使用して居る Crystal Reports のバージョンに合った ODBC DSN エントリを選択し [ 完了 ] をクリックする [ODBC(RDO)] フォルダが展開され Xreme サンプルデータベースが表示される 8.Tables ノードを展開し Customer テーブルを選択する 9.Customer テーブルをダブルクリックしてテーブルを [ 選択したテーブル ] パネルに移動し [ 次へ ] をクリックする A.Ctrl キーを押し乍ら [ 顧客名 ] [ 敬称 ] [ 住所 1] 及び [ 市 ] をクリックする B.[>] ボタンをクリックして此等のフィールドを [ 表示するフィールド ] パネルに移動し [ 次へ ] をクリックする C.[ 利用可能なフィールド ] パネルの [ レポートフィールド ] で {Customer. 市 } を選択し [>] ボタンをクリックして此のフィールドを [ グループ化 ] パネルに移動し [ 完了 ] をクリックする XtremeCustomers レポートが作成され Visual Studio のメインウィンドウにロードされる D. ウィンドウの下部の [ メインレポートプレビュー ] をクリックする レポートはプレビューモードで表示され Xtreme データベースのデータが表示される 注 :[ プレビュー ] ボタンは Crystal Reports for Visual Studio 2005 に付属する埋め込み Crystal Reports Designer の新しい機能で有る E. ウィンドウの下部の [ メインレポート ] をクリックして プレビューモードを終了する F.Form1 クラスに戻る レポートがデザイン時プレビューモードで表示され Web フォームにレポートのグラフィックのレイアウトが表示される Form1 の下で XtremeCustomers レポートがコンポーネントトレイに表示される G.[ ファイル ] メニューの [ 総て保存 ] をクリックする レポートが作成され CrystalReportViewer コントロールのレポートと仕て指定される 此の時点で レポート変数の名前を変更する事が出来る レポート変数の名前を変更する 1. コンポーネントトレイの XtremeCustomers1 をクリックして選択する 2.[ プロパティ ] ウィンドウで [ 名前 ] フィールドを xtremecustomersreport に設定する 此れでプロジェクトをビルドして実行する事が出来る 減少したコードの Windows プロジェクトをテストする 1.[ ビルド ] メニューで [ ソリューションのビルド ] を選択する 2. ビルドエラーが有る場合は 此処で修正する 3.[ デバッグ ] メニューの [ 開始 ] をクリックする 4.XtremeCustomers レポートが新しい Windows アプリケーションに表示される 5.Visual Studio に戻り [ 停止 ] ボタンをクリックして デバッグモードを終了する スマートタスクに依って生成されたコードの確認 此のセクションでは スマートタスクに依って生成されたコードを確認する スマートタグに依り コードを記述せずに Crystal Reports で Windows プロジェクトを設定出来る -25-
スマートタスクに依って生成されたコードを確認する 1.Form1 クラスを開く 2.[ 表示 ] メニューの [ コード ] をクリックする Form1 クラスがコードビューで開き 空のクラスが表示される 注 :C# では 空のクラスにはクラスコンストラクタが表示される public Form1( ) { InitializeComponent( ); } 次のコードが無い事に注意され度い CrystalReportViewer コントロールのインスタンスの宣言 XtremeCustomers レポートのインスタンス レポートを CrystalReportViewer コントロールにバインドするコード 存在しないコードは パーシャルクラス内で非表示に成って居る パーシャルクラスは.NET Framework 2.0 及び Visual Studio 2005 の新機能で有る パーシャルクラスに依って クラスは別のクラスファイルから追加部分を受け取る事が出来る 別のクラスファイルには 同じクラス名を付け 其の先頭に partial と謂う文字を付ける パーシャルクラスには 一般に 自動生成されたデザイナコードが含まれる Form1 クラスに表示されない自動生成されたコードを確認するには CrystalReportViewer と非表示の Form1 のパーシャルクラスのレポートインスタンスを表示する 非表示の Form1 のパーシャルクラスを表示する 1. ソリューションエクスプローラのツールバーの [ 総てのファイルを表示 ] アイコンをクリックする 2.Form1.cs 又は Form1.vb を展開する Form1.Designer.cs 又は.vb が表示される 3.Form1.Designer.cs 又は Form1.Designer.vb を右クリックし [ コードの表示 ] を選択する Form1 のパーシャルクラスが開き 此のクラスに対して自動生成されたコードが表示される 此れには CrystalReportViewer コントロールインスタンスの宣言 XtremeCustomers レポートインスタンス 及び レポートを CrystalReportViewer コントロールインスタンスにバインドするコードが含まれる 纏め 此のチュートリアルでは 減少したコードの開発モデルに従い Crystal Reports の Windows プロジェクトを作成した CrystalReportViewer コントロールを追加し スマートタスクを使用してコードを記述せずに新しいレポートを作成して CrystalReportViewer コントロールにバインドした 次に スマートタスクで選択した内容に基づいて 非表示のパーシャルクラスに自動生成されたコードを確認した -26-
レポートをバインドする適切なシナリオの選択 Crystal Reports SDK を使用してアプリケーションの作成を計画するに当り最も重要な検討事項の 1 つに レポートをバインドするシナリオの選択が有る レポートをバインドするシナリオに影響を与える SDK の基本を理解する事に依り 目的の Crystal Reports for Visual Studio 2005 プロジェクトに最も適した構造を選択出来る 注 : 殆どの Web サイトや Windows プロジェクトでは チュートリアルで手順が説明されて居る 埋め込みレポートにバインドする と 埋め込みでないレポートにバインドする と謂う 最も単純な 2 つのシナリオを使用する事が出来る 従って 此のセクションを読む前に チュートリアルとサンプルコードのチュートリアルを実行され度い レポートビューア 及び レポートのバインドに付いては レポートビューアコントロール を参照され度い 使用するアプリケーションに最適な レポートをバインドするシナリオを選択するには 推奨シナリオの概要 を参照され度い レポートのバインドに使用出来る総てのシナリオの詳細な一覧は 全シナリオの詳細一覧 を参照され度い 推奨シナリオの概要 使用するアプリケーションに最適な レポートをバインドするシナリオの選択をサポートする為 此処では推奨シナリオの長所と短所を纏め 広く使用されて居るシナリオに付いて其の理由を説明する 注 : 殆どの Web サイトや Windows プロジェクトでは チュートリアルで手順が説明されて居る 埋め込みレポートにバインドする と 埋め込みでないレポートにバインドする と謂う 最も単純な 2 つのシナリオを使用する事が出来る 従って 此のセクションを読む前に チュートリアルとサンプルコード. のチュートリアルを実行され度い Crystal Reports で推奨されるバインドのシナリオ 通常は CrystalReportViewer オブジェクトモデルを使用するシナリオよりも レポートを ReportDocument オブジェクトモデルにバインドするシナリオを推奨する ( ヘルプの ReportDocument オブジェクトモデルに依るレポートのバインド 及び CrystalReportViewer オブジェクトモデルに依るレポートのバインド を参照され度い ) 此れは プログラムに依るレポートとの対話に於いて ReportDocument オブジェクトモデルの方がより豊富な機能の API を提供する為で有る オブジェクトモデルの詳細に付いては ヘルプの 適切なオブジェクトモデルの選択 を参照され度い 殆どの場合 Crystal Reports for Visual Studio 2005 では 埋め込みレポートクラスへのバインド のシナリオが使われる 此のシナリオは パフォーマンスの最適化と謂う点では最善の選択とは謂えないが 最も単純なメソッドを使用する 其のメソッドとは レポートをプロジェクトに追加してレポートラッパークラスを作成し 其のレポートラッパークラスをインスタンス化して CrystalReportViewer コントロールに渡すと謂う物で有る レポートラッパークラスは ReportDocument 基本クラスを継承する為 ユーザーは ReportDocument オブジェクトモデルの総ての機能に対するアクセス権限を持つ 註 :Visual Studio 2005 では Crystal Reports レポートファイルは Web プロジェクトに埋め込まれる事は無い 従って レポートラッパークラスは作成されない レポートはフォルダに格納され 総ての埋め込みでないレポートと同様に レポートのファイルディレクトリパスに依り参照される必要が有る 此の場合 ディレクトリパスは現在の Web サイトフォルダへのパスで有る -27-
Crystal Reports for Visual Studio 2005 でのレポートのバインドに広く使用されて居るもう 1 つの方法は ReportDocument にロードされる埋め込みでない Report クラスへのバインド で説明されて居る 此のシナリオは ReportDocument オブジェクトモデルの全機能へのアクセス権をユーザーに付与する点は同じだが 埋め込みでないレポートのメリットも提供する為 ユーザーはアプリケーションの再コンパイルをする事無くレポートを変更出来る レポートのバインドに ASP.NET Cache オブジェクトを使用するシナリオも有る ( ヘルプの キャッシュされた埋め込みレポートクラスへのバインド 及び キャッシュ管理ユーティリティクラスにロードされる埋め込みでない Report クラスへのバインド を参照され度い ) 此等のシナリオは 共有性の高いレポートのパフォーマンスを最適化する 共有性の高いレポートのキャッシュ を参照され度い Report Application Server(RAS) で推奨されるバインドのシナリオ アンマネージド Report Application Server( ヘルプの アンマネージド Report Application Server を参照され度い ) のライセンスを Crystal Reports for Visual Studio 2005 アプリケーションに追加して居る場合 次の機能が追加される RAS レポートエンジンに依る高いスケーラビリティ 広範なレポート修正機能を提供する ReportClientDocument オブジェクトモデルへのアクセス RAS の場合 目的のプロジェクトの設定に応じて 次の 3 つのシナリオを使用してレポートをバインド出来る RAS 10 で Crystal Reports 10 を使用する場合は 1 つのレポートに付き 2 行のコードを追加する丈で 元々埋め込みレポートを使用して Crystal Reports で作成されたプロジェクトを RAS と ReportClientDocument オブジェクトモデルにポート出来る ヘルプの ReportDocument.Load メソッドを使ったアンマネージド RAS へのバインド を参照され度い 上記のシナリオを最適化するには RAS サーバーで埋め込みレポートのコピーを作成し 其のコピーの使用を RAS に指示する ヘルプの ReportDocument.FileName プロパティを使ったアンマネージド RAS サーバーへのバインド を参照され度い RAS 10 で新しいプロジェクトを作成し RAS 9 でも此れを操作するには 作成したレポートを ReportClientDocument オブジェクトモデルに直接ロードする ReportClientDocument.Open メソッドを使ったアンマネージド RAS へのバインド を参照され度い Crystal Reports Server 又は BusinessObjects Enterprise で推奨されるバインドのシナリオ Crystal Reports Server 又は BusinessObjects Enterprise にアップグレードして居る場合 レポートのバインドには 次の 4 つのシナリオが有る 何のシナリオを選択するかに付いては レポートの修正とスケーラビリティに対するユーザーの必要条件に基づいて決定する プログラムに依る修正無しに 最高の速さとパフォーマンスでレポートを表示出来る ヘルプの ReportSource へのバインド (BusinessObjects Enterprise 11) を参照され度い ReportClientDocument オブジェクトモデルにアクセスする事に依り 表示プロセスの一部と仕て プログラムに依ってレポートを修正出来る ヘルプの ReportAppFactory.OpenDocument メソッドを使ったマネージド RAS へのバインド を参照され度い Crystal Reports Server 又は BusinessObjects Enterprise で Crystal Reports Developer エディションを使用する場合は 元々埋め込みレポートを使用して Crystal Reports で作成されたプロジェクトを Crystal Reports Server 又は BusinessObjects Enterprise にポートすると同時に 其の埋め込みレポートのコピーを Crystal Reports Server 又は BusinessObjects Enterprise に公開する事に依り既存のレポートコードを維持出来る レポートのコピーの参照に付いては ヘルプの ReportDocument.FileName プロパティを使ったマネージド RAS へのバインド を参照され度い -28-
Enterprise フレームワークの InfoObject インスタンスと仕てレポートにアクセスする事に依り レポートのスケジュールと其のパラメータを変更する事が出来る ヘルプの レポートにキャストする InfoObject へのバインド を参照され度い 此のセクションの内容を学習した後 SDK で使用出来る総てのオプションに付いての理解を深める為に 全シナリオの詳細な一覧が必要に成る事も予想される 全シナリオの詳細一覧 を参照され度い 全シナリオの詳細一覧 レポートをバインドするシナリオの選択に当たっては 其のポイントを纏めた 推奨シナリオの概要 を参照され度い 注 : 殆どの Web サイトや Windows プロジェクトでは チュートリアルで手順が説明されて居る 埋め込みレポートにバインドする と 埋め込みでないレポートにバインドする と謂う 最も単純な 2 つのシナリオを使用する事が出来る 従って 此のセクションを読む前に チュートリアルとサンプルコードのチュートリアルを実行され度い Crystal Reports の全製品群は 4 つのオブジェクトモデルに分類される 此等のオブジェクトモデルは夫々れ レポートを CrystalReportViewer コントロールにバインドする複数のシナリオを提供する CrystalReportViewer オブジェクトモデル コードに依るファイルディレクトリパスへのバインド プロパティウィンドウでのファイルディレクトリパスへのバインド CrystalReportSource コントロールへのバインド (Visual Studio 2005 の Web サイト ) レポート Web サービス URL へのバインド Crystal サービスを使用して CrystalReportViewer をバインドするシナリオ サーバーファイル (VS.NET 2002 と 2003) へのバインド Crystal Enterprise(VS.NET 2002 と 2003) へのバインド サーバーファイルへのバインド (Visual Studio 2005) Crystal Reports Server 又は BusinessObjects Enterprise へのバインド (Visual Studio 2005) Report Application Server へのバインド (Crystal Reports 9 以降 ) Crystal Enterprise へのバインド (Crystal Reports 9) ReportSource へのバインド (BusinessObjects Enterprise 11) ReportDocument オブジェクトモデル 埋め込みレポートクラスへのバインド ReportDocument にアップキャストする Report クラスへのバインド ReportDocument クラスにロードされる埋め込みでないレポートへのバインド キャッシュされた埋め込みレポートクラスへのバインド キャッシュ管理ユーティリティクラスにロードされる埋め込みでない Report クラスへのバインド ReportDocument コンポーネントに依るバインド Crystal サービスを使用して ReportDocument をバインドするシナリオ (VS.NET 2002 と 2003) Report Application Server へのバインド (Crystal Reports 10 以降 ) Crystal Enterprise へのバインド (Crystal Reports 10 以降 ) -29-
アップグレードに依って使用可能なオブジェクトモデル ReportClientDocument オブジェクトモデル (RAS) ReportDocument.Load メソッドを使ったアンマネージド RAS へのバインド ReportDocument.FileName プロパティを使ったアンマネージド RAS サーバーへのバインド ReportClientDocument.Open メソッドを使ったアンマネージド RAS へのバインド ReportDocument.Load メソッドを使ったマネージド RAS へのバインド ReportDocument.FileName プロパティを使ったマネージド RAS へのバインド ReportAppFactory.OpenDocument( プロパティを使ったマネージド RAS へのバインド InfoObject Object Model(BOE) レポートにキャストする InfoObject へのバインド CrystalReportPartsViewer コントロールを使ったレポートパーツの表示 此のチュートリアルでは レポートをパーツに分割し 一連のハイパーリンクをクリックする事に依り各パーツを表示する方法を学習する ハイパーリンクに依って 全体のレポート集計グループから詳細なレポート情報に移動する 全体の開始ポイントを設定し 次に連続した各ハイパーリンクをレポートに対して設定する レポートをパーツと仕て表示するには レポートに CrystalReportPartsViewer と謂う代替コントロールを割り当てる 注 : レポートパーツは Web サイトで而巳使用出来る Windows プロジェクトでは使用出来ない レポートの作成 レポートを表示するには 次の 2 つの方法が有る レポート全体を表示する リンクされた一連のレポートパーツと仕てレポートを表示する レポート全体の表示 一般に レポートは 1 つ 又は 其れ以上のページから構成される 1 つのドキュメントと仕て表示され 詳細情報はカテゴリ別 サブカテゴリ別 及び 個々の詳細情報行別にグループ化して表示される 例えば Crystal Reports に付属の Xtreme Access データベースには 世界各地の自転車販売店に関する顧客データが格納されて居る レポートのデータを表示する標準的な方法は 地域と都市を基にグループ化されて居る自転車販売店を個々に表示し 詳細レベルで各販売店の情報行を表示する レポート全体の表示には CrystalReportViewer コントロールを使用する リンクされた一連のパーツと仕てのレポートの表示 Web ポータル 及び 携帯電話に依る Web ブラウズが普及したが 孰れも情報を見る為の表示領域が限られる事から レポートの新しい表示方法を開発した -30-
此の開発に当り グループのカテゴリ サブカテゴリ 及び 詳細行から構成されたオールインワンレポートを 一連のレポートパーツと仕て定義し直した 此等のパーツは リンクされた一連のページビューに依って表示される 此のシナリオでは 最上位カテゴリグループの情報を先に表示する 上位グループの項目を選択すると グループ情報のサブカテゴリが表示される 此のドリルダウンは 特定サブカテゴリの個々の詳細情報行に到達する迄続けられる 例えば Xtreme Access データベースの自転車販売店の顧客データは 最初は地域リストと仕て表示される 地域を 1 つ選択すると 此の地域内の都市が表示される 特定の都市を選択すると 此の都市に有る自転車販売店の詳細行が表示される レポートをパーツに分割する事に依って 限られた表示領域から大きい複雑なレポートへ効果的にアクセス出来る様に成る リンクされた一連のパーツと仕てレポートを表示するには CrystalReportPartsViewer コントロールを使用する CrystalReportPartsViewer コントロールでレポートを使用する為の設定 此のチュートリアルでは 全体表示用のレポートを リンクされた一連のパーツと仕てのアクセスが可能なレポートにする為に ハイパーリンク情報を追加する方法を学習する 先ず CrystalReportViewer コントロールを使用して標準プロジェクトを作成する Xtreme サンプルデーターベースの Customer テーブルを基にレポートを作成し レポート全体を CrystalReportViewer コントロールに表示する 次に レポートを再び開いてレポートパーツ設定にアクセスし 初期エントリポイントをレポートに割り当てる 通常 初期エントリポイントは最上位のグループカテゴリにする 詳細行レベルに到達する迄 レポートグループのサブカテゴリ間を連結するハイパーリンクを追加する 此れに依り レポートはレポートパーツと仕て表示出来るが 此の時点では Web フォームの CrystalReportViewer コントロール内でレポート全体が表示される レポートパーツを表示するには Web フォームの CrystalReportViewer コントロールを削除し CrystalReportPartsViewer コントロールに置き換える必要が有る 分離コードクラスのコントロールの変数名を更新する プロジェクトに戻ると レポートはリンクされた一連のパーツと仕て表示される レポートパーツを表示する為のレポートの変換 先ず Crystal Reports に同梱されて居るサンプルの Microsoft Access データベースから情報を読み込むレポートを作成する 注 :Xtreme.mdb は Crystal Reports と共に提供されるサンプルデータベースで有る 使用して居るバージョンの Crystal Reports に付属して居る Xtreme.mdb をコンピュータのハードディスクドライブから探し出すには ヘルプの Xtreme サンプルデータベースの場所 を参照され度い ODBC DSN エントリからデータベースに接続する必要が有る 使用して居るバージョンの Crystal Reports でのエントリ名を見付けるには Xtreme サンプルデータベース用の ODBC DSN エントリ を参照され度い -31-
パラメータを設定してレポートを作成する 注 : 此の手順は プロジェクトの設定 で作成されたプロジェクトに而巳有効で有る プロジェクトの設定には 此のプロジェクトに必要な特定の名前空間参照とコード設定が含まれる為 此の設定無しに手順を完了する事は出来ない 従って 此の手順を始める前に先ず プロジェクトの設定 の手順を実行して置く必要が有る 1. ソリューションエクスプローラで太字のプロジェクト名を右クリックし [ 追加 ] をポイントして [ 新しい項目の追加 ] をクリックする 2.[ 新しい項目の追加 ] ダイアログボックスで [ テンプレート ] ビューから Crystal レポート と謂う名前のテンプレートを選択する 3.[ 名前 ] フィールドに Customers.rpt と入力し [ 追加 ] をクリックする 注 :Visual Studio.NET 2002 又は 2003 では ボタン名は [ 開く ] で有る 4. 製品の登録が未だの場合は 登録を求めるダイアログボックスが表示される 登録方法に付いては Crystal Reports の登録とキーコード を参照され度い 5.[Crystal Reports ギャラリ ] ダイアログボックスの [Crystal レポートドキュメントの新規作成 ] パネルで [ レポートウィザードを使用 ] を選択する 6.[ エキスパートの選択 ] パネルで [ 標準 ] を選択し [OK] をクリックする 7. 標準レポート作成ウィザードウィンドウの [ 利用可能なデータソース ] パネルで [ 接続の新規作成 ] フォルダを展開する 注 :Crystal Reports が Crystal Reports Developer エディションにアップグレードされて居ない Visual Studio.NET 2002 又は 2003 では [ 接続の新規作成 ] フォルダは存在しない 其の内容が最上位に表示される 8. 開いたサブフォルダから [ODBC(RDO)] フォルダを展開する 9.ODBC(RDO) ウィンドウで Xtreme サンプルデータベース用の ODBC DSN エントリ の説明に従って 使用して居る Crystal Reports のバージョンに合った ODBC DSN エントリを選択し [ 完了 ] をクリックする [ODBC(RDO)] フォルダが展開され Xreme サンプルデータベースが表示される A.Tables ノードを展開し Customer テーブルを選択する B.Customer テーブルをダブルクリックしてテーブルを [ 選択したテーブル ] パネルに移動し [ 次へ ] をクリックする C.Ctrl キーを押し乍ら [ 国 ] [ 顧客名 ] [ 前年度取引高 ] [ 地域 ] 及び [ 市 ] をクリックする D.[>] ボタンをクリックして此等のフィールドを [ 表示するフィールド ] パネルに移動し [ 次へ ] ボタンをクリックする E.[ 利用可能なフィールド ] パネルの [ レポートフィールド ] で 次の手順を完了させる a.[ 国 ] を選択し [>] 記号をクリックして フィールドを [ グループ化 ] パネルに移動する b.[ 地域 ] を選択し [>] 記号をクリックして フィールドを [ グループ化 ] パネルに移動する c.[ 次へ ] をクリックする 国 及び 地域グループの 前年度取引高 フィールドに集計フィールドが作成される F.[ 完了 ] をクリックする Customers レポートが作成され Visual Studio のメインウィンドウにロードされる G. ウィンドウの下部の [ メインレポートプレビュー ] をクリックする レポートのレベルが 先ず 国別に並べ替えられ 次に地域別に並べ替えられて 階層的に表示される レポートをレポートパーツと仕て表示する場合 各レベルは別々に表示される 此れで レポートを変換してレポートパーツと仕て表示する準備が出来た -32-
レポートのバインド プロジェクトの設定 の指示に従って此のチュートリアルの準備をする時に CrystalReportViewer コントロールを Web フォームに配置した 但し レポートパーツを表示するには CrystalReportPartsViewer コントロールを使用する必要が有る 此処では Customers レポートをインスタンス化し 此れを CrystalReportPartsViewer コントロールにバインドする 次に 前の手順で作成したレポートパーツがレポートに表示されるか何うかをテストする レポートをインスタンス化してバインドするには 次の 2 つの方法が有る 埋め込みレポートと仕て 埋め込みでないレポートと仕て 注 :Visual Studio 2005 は Web サイトでは埋め込みでないレポート丈をサポートして居る 以下の手順の孰れかを選択する 埋め込みレポートを使用する場合は 次の手順に従って レポートを埋め込みレポートと仕てインスタンス化する 埋め込みでないレポートを使用する場合は 2 番目の手順に従って レポートを埋め込みでないレポートと仕てインスタンス化する Customers レポートを埋め込みレポートと仕てインスタンス化して CrystalReportPartsViewer コントロールにバインドする 1.Web フォームを開く 2.[ ファイル ] メニューの [ デザイナ ] をクリックする 3.CrystalReportViewer コントロールを削除する 4. ツールボックスで Crystal Reports ノードを開き CrystalReportPartsViewer コントロールを探す 5.CrystalReportPartsViewer コントロールを Web フォームにドラッグする 6.[ プロパティ ] ウィンドウから ID プロパティを以下の様に設定する Visual Basic Web サイトの場合は ID プロパティに mycrystalreportpartsviewer と設定する C# Web サイトの場合は ID プロパティに crystalreportpartsviewer と設定する 7.[ 表示 ] メニューから [ コード ] をクリックし 此の Web フォームの分離コードクラスを表示する 8. 変数名 customerreport で Customers レポートのラッパークラスに新しいクラスレベルの宣言を追加する アクセス修飾子を private に設定する Private customersreport As Customers private Customers customersreport; Visual basic C# 9.ConfigureCrystalReports メソッド内で レポートラッパークラスをインスタンス化する 注 :ConfigureCrystalReports メソッドは プロジェクトの設定 で作成された -33-
customersreport = New Customers( ) customersreport = new Customers( ); Visual basic C# A. レポートインスタンス化の下に有る行で CrystalReportPartsViewer コントロールの ReportSource プロパティに インスタンス化したレポートクラス ( 変数名は customerreport) をバインドする Visual basic mycrystalreportpartsviewer.reportsource = customersreport C# crystalreportpartsviewer.reportsource = customersreport; 注 : コントロールを各自の Web フォームや Windows フォームに追加したので CrystalReportPartsViewer コントロールのインスタンスにコードでアクセス出来る IntelliSense が CrystalReportPartsViewer コントロールインスタンスを認識しない場合は CrystalReportPartsViewer コントロールがクラスレベルの宣言と仕て此の分離コードクラスに追加されて居る事を確認する 此れでプロジェクトをビルドして実行する事が出来る Customers レポートを埋め込みではないレポートと仕てインスタンス化して CrystalReportPartsViewer コントロールにバインドする 1.Web フォームを開く 2.[ 表示 ] メニューの [ コード ] をクリックする 3. 変数名 customersreport で ReportDocument レポートのラッパークラスに新しいクラスレベルの宣言を追加する アクセス修飾子を private に設定する Visual basic Private customersreport As ReportDocument C# private ReportDocument customersreport; 注 :ReportDocument クラスは CrystalDecisions.CrystalReports.Engine 名前空間に含まれる 此の名前空間には プロジェクトの設定 で Imports(Visual Basic) 又は using(c#) 宣言を追加した ReportDocument をインスタンス化して名前空間にレポートをロードする際は レポートを埋め込まずに SDK を介してレポートにアクセスする 4. プロジェクトの設定 の手順で追加した ConfigureCrystalReports メソッドで ReportDocument クラスをインスタンス化する Visual basic customersreport = New ReportDocument( ) C# customersreport = new ReportDocument( ); 5. 文字列変数を宣言して reportpath と謂う名前をつけ ローカルレポートの実行時パスを代入する -34-
此のパスは Web サイトと Windows プロジェクトで異なる Web サイトでは ローカルレポートファイルの名前は文字列パラメータと仕て Server.MapPath メソッドに渡される 此れに依ってローカルレポートは 実行時にハードドライブのファイルディレクトリパスにマップされる Visual basic Dim reportpath As String = Server.MapPath("Customers.rpt") C# string reportpath = Server.MapPath("Customers.rpt"); Windows プロジェクトでは バックスラッシュを使って Application.StartupPath プロパティをローカルレポートファイル名と連結する 此れに依って レポートは同じディレクトリに Windows 実行ファイルと仕てマップされる 注 : コンパイル時に 実行ファイルを含むディレクトリにレポートをコピーする Visual basic Dim reportpath As String = Application.StartupPath & " " & "Customers.rpt" C# string reportpath = Application.StartupPath + " " + "Customers.rpt"; 6.ReportDocument インスタンスの Load メソッドを呼び出し reportpath 文字列変数を渡す customersreport.load(reportpath) customersreport.load(reportpath); Visual basic C# 7. 次の行のレポートのロードの下で CrystalReportPartsViewer の ReportSource プロパティを ReportDocument インスタンスにバインドする Visual basic mycrystalreportpartsviewer.reportsource = customersreport C# crystalreportpartsviewer.reportsource = customersreport; 埋め込みレポートのクラス 又は 埋め込みではないレポートのクラス (ReportDocument) の孰れをインスタンス化して居るかに関わり無く 使用する変数名は同じで有る (customersreport) 此れに依り 其の後の手順で共通のコードを使用出来る 此れでプロジェクトをビルドして実行する事が出来る 此の時点では 市パラメータフィールドの値を設定するコードを書き込んで居ない為 レポートのロードに失敗するはずで有る 市パラメータフィールドには後で値を追加する Customers レポートのロードをテストする 1.[ ビルド ] メニューで [ ソリューションのビルド ] を選択する 2. ビルドエラーが有る場合は 此処で修正する -35-
3.[ デバッグ ] メニューの [ 開始 ] をクリックする 注 :Visual Studio 2005 で Web サイトを開発中で デバッグを今回初めて行う場合 ダイアログボックスが表示され Web.config ファイルの変更が必要で有る事が示される [OK] ボタンをクリックしてデバッグを有効にする Customers レポートが Web ブラウザに表示される 4. 国をクリックして地域のリストを表示する 5. 地域をクリックして 顧客名 前年度取引高 及び 市フィールドを表示する 6.Visual Studio に戻り [ 停止 ] ボタンをクリックして デバッグモードを終了する レポートのデータのフィルタ 此処では レポートに表示されるデータをフィルタする為に [ データコンテキスト ] フィールドを設定する方法を学習する [ データコンテキスト ] 設定の詳細に付いては レポートパーツのドリルダウンの実装 を参照され度い レポートのデータをフィルタする 1.Crystal レポートを開く 2. レポートの空いて居る領域を右クリックする [ レポート ] を選択し [ レポートオプション ] をクリックする 3.[ データコンテキスト ] フィールドに / 国 [USA] と入力する 4.[OK] をクリックして [ レポートオプション ] ダイアログを終了する 5.[ ビルド ] メニューで [ ソリューションのビルド ] を選択する 6. ビルドエラーが有る場合は 此処で修正する 7.[ デバッグ ] メニューの [ 開始 ] をクリックする レポートには USA のレコード丈が表示される 8.Visual Studio に戻り [ 停止 ] ボタンをクリックして デバッグモードを終了する データコンテキストの設定は 削除する事も変更する事も出来る 纏め 此のチュートリアルでは レポートをパーツに分割し 一連のハイパーリンクをクリックする事に依って各パーツを表示する方法を学習した ハイパーリンクに依って 全体のレポート集計グループから詳細なレポート情報へ移動した レポートをパーツと仕て表示する為に レポートに CrystalReportPartsViewer コントロールを割り当てた -36-