...

FlexReport for WinForms - ComponentOne

by user

on
Category: Documents
1695

views

Report

Comments

Transcript

FlexReport for WinForms - ComponentOne
FlexReport for WinForms
2017.01.24 作成
グレープシティ株式会社
FlexReport for WinForms
目次
FlexReport for WinForms の概要
C1Report から FlexReport へのアップグレード
5-7
FlexReport と C1Report
7-8
C1Report から FlexReport への重要な変更点
8-10
主要な機能
11
FlexReport の詳細情報
12
コンポーネントとコントロール
12
オブジェクトモデルの概要
12-13
FlexReport のセクション
13-15
FlexReport クイックスタート
16
手順 1:レポート定義の作成
16-26
手順 2:レポートの修正
26-29
手順 3:C1FlexReport コンポーネントでのレポートのロード
29-30
手順 4:レポートのレンダリング
30-31
設計時サポート
32
[C1FlexReport のタスク]メニュー
32
[C1FlexViewer のタスク]メニュー
32-33
FlexReport の操作
C1FlexReport と C1Document
C1Document の重要な変更点
FlexReport のデータ連結
34-35
35
35-37
37
データベースからのデータの取得
37-38
ストアドプロシージャからのデータの取得
38-40
データテーブルオブジェクトをデータソースとして使用
カスタムデータソースオブジェクトの使用
FlexReport のデータソース
コードを使用した複数のデータソースへの接続
40
40-41
41
41-42
複数データソースレポートでのチャートへのデータの連結
42-47
複数データソースレポートでのパラメータへのデータの連結
47-48
計算フィールドの定義
デスクトップ用 FlexReport の開発
1
5
48-49
49
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
設計時の FlexReport のロード
49-50
設計時の FlexReport の作成
50-51
実行時の FlexReport のロード
51-54
パラメータの追加
54-55
データのグループ化
55-57
小計などの集計の追加
57-60
クロス集計レポートの作成
60-66
データのソート
66-67
データのフィルタ処理
67-68
さまざまな形式へのレポートのエクスポート
68-69
VBScript の操作
69-71
VBScript の要素、オブジェクト、変数
71-75
互換性のための関数:Iif および Format
75-76
集計関数
76-78
FlexReport オブジェクトの分割の管理
フィールドの変更
78-79
79-81
データがないセクションの非表示
81-82
値に基づいたフィールドの表示/非表示
82-84
ページカウンタのリセット
84-85
FlexReportDesigner の操作
FlexReportDesigner について
85
86
86-88
[ファイル]メニュー
88-89
設計モード
89-90
[ホーム]タブ
90-94
[挿入]タブ
94-95
[調整]タブ
95-96
[ページ設定]タブ
プレビューモード
FlexReportDesigner オプションの設定
2
78
値に応じたフィールドの書式設定
サブセクションの追加
96
96-98
98-103
スタイルギャラリー
103-105
複数のサブセクションの追加
106-107
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport フィールドの追加
テキストフィールド
RTF フィールド
107-109
109
パラグラフフィールド
109-111
チェックボックスフィールド
111-113
バーコードフィールド
113
バーコードシンボル
113-119
バーコードのプロパティ
119-120
計算フィールド
120-123
画像フィールド
123-124
図形フィールド
124
サブレポートフィールド
チャートフィールド
124-128
128
チャートタイプ
128-134
設計時サポート
134-137
データバインドされたチャートでデータのプロット
137-138
非連結チャートでのデータのプロット
138-140
複数の系列を持つチャート
140-141
グループ化されたレポート内のチャート
141-143
FlexReport カスタムフィールドの追加
マップカスタムフィールド
143
143-144
マップカスタムフィールドのプロパティ
144-147
マップカスタムフィールドの追加
147-150
SuperLabel カスタムフィールド
パラメータの操作
150-152
152-154
データ連結
154-155
計算フィールド
155-156
サブレポート
156-158
パラメータのカスケード
158-160
複数値パラメータ
160-161
パラメータの暗黙的な受け渡し
3
107
161
複数のデータソースの追加
161-163
FlexReport のデータソースの変更
163-164
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReportDesigner でデータのソート化
164-167
FlexReport のプレビューと印刷
167-168
FlexReportDesigner でのレポートのインポート
168-169
Microsoft Access レポートのインポート
169-172
Crystal Reports のインポート
172-175
レポートのエクスポートと公開
PDF/A へのエクスポート
FlexReports の見栄えの向上
175-176
176
176-178
境界線
178-180
FlexViewer の主要な機能
181
181
FlexViewer ツールバー
181-182
レポートのビューを回転する
183-184
FlexReport と FlexViewer の連結
184-185
Flex ViewerでのPDFファイルの読み込み
185-188
SSRS レポートのプレビュー
188-190
タスク別ヘルプ
4
175
背景
レポートおよびドキュメントビューア(C1FlexViewer コントロール)
191
交互表示の背景の追加
191-192
条件付き書式設定の追加
192-194
カスタム用紙サイズの指定
194
動的ページヘッダーの追加
194-195
ガターマージンの作成
195-196
グループ化とソート
196-198
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport for WinForms の概要
ComponentOne Studio には、FlexReport for WinForms が導入されています。これは、C1Report を更新して高速化した
新しいコンポーネントです。
FlexReport は、複雑なレポートの作成からプレビュー、エクスポート、印刷まで、完全なレポートソリューションを提供する包括
的なレポートツールです。FlexReport は、優れたオブジェクトモデルを備え、プレビューコントロールやデザイナアプリケーショ
ンとして最新のユーザーインタフェースを提供しています。これを使用して、魅力的で機能豊富なレポートを柔軟に生成できま
す。FlexReportコントロールを操作するには、最小限必要なサーバー構成はWindows 7 SP1またはWindows Server 2008
R2 SP1用プラットフォーム更新(KB2670838)です。
データを集約した形式で提示し、レポートを設計およびカスタマイズし、FlexReport によって生成されたレポートに基づいて重
要なビジネス意思決定を行ってください。高品質なレンダリング、正確な計算、使いやすさにより、FlexReport は、基礎レベル
のレポート設計者だけでなく上級レベルのレポート設計者にとっても必須のコントロールです。
C1Report から FlexReport へのアップグレード
C1Report を使用して作成されたレポートは、C1FlexReport と完全に互換性があります。以下に、既存の C1Report レポー
ト定義(.xml)を C1FlexReport レポート定義(.flxr)に簡単にアップグレードまたは変換する 2 つの方法を示します。
デザイナで C1Report レポート定義をアップグレードする
1. C1FlexReportDesigner.4.exe を実行します。
2. [ファイル]
[ファイル]→[開く]
[開く]に移動し、アップグレードする C1Report レポート定義(.xml)を選択します。次のダイアログボックス
が表示されます。
3. [OK]]をクリックします。
4. [ファイル]
[ファイル]→[保存]
[保存]に移動します。
5. [レポート定義ファイルの保存]
[レポート定義ファイルの保存]ダイアログボックスで、[ファイル名]
[ファイル名]を指定し、[保存]
[保存]をクリックします。
レポート定義がタイプ .flxr として保存されます。これで、レポート定義が C1Report の .xml から C1FlexReport の .flxr に変換
されました。
Visual Studio で既存の C1Report Windows アプリケーションプロジェクトを FlexReport Windows アプリケー
ションプロジェクトにアップグレードする
1.
2.
3.
4.
C1Report(.xml)ファイルを含む既存の Windows アプリケーションプロジェクトを開きます。
Form から C1Report を削除します。
Form から C1Report のプレビューコントロール C1PrintPreview または C1RibbonPreviewControl を削除します。
C1FlexReport コンポーネントをツールボックス
ツールボックスに追加します。
a. タブを右クリックし、[アイテムの選択]
[アイテムの選択]を選択します。[ツールボックスアイテムの選択]
[ツールボックスアイテムの選択]ダイアログボックスが表
示されます。
b. [参照]をクリックし、bin\v4.0 フォルダから C1.Win.FlexReport.4.dll を選択します。C1FlexReport コンポー
ネントがツールボックスに追加されます。
5. C1FlexViewer コントロールをツールボックス
ツールボックスに追加します。
a. タブを右クリックし、[アイテムの選択]
[アイテムの選択]を選択します。[ツールボックスアイテムの選択]
[ツールボックスアイテムの選択]ダイアログボックスが表
示されます。
5
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
b. [参照]をクリックし、bin\v4.0 フォルダから C1.Win.FlexViewer.4.dll を選択します。C1FlexViewerコントロー
ルがツールボックス
ツールボックスに追加されます。
6. C1FlexReport を Form にドロップします。C1FlexReport のバージョンと同じバージョンの以下の dll が参照に追加さ
れます。
C1.C1Pdf.4
C1.Win.4
C1.Win.BarCode.4
C1.Win.C1Document.4
C1.Win.FlexReport.4
これらの参照が同じバージョンでない場合は、それらを手動で追加する必要があります。
7. C1FlexViewer コントロールを Form にドロップします。C1FlexViewer のバージョンと同じバージョンの以下の dll が参
照に追加されます。
C1.C1Zip.4
C1.Win.C1DX.4
C1.Win.C1Ribbon.4
C1.Win.FlexViewer.4
C1.Win.ImportServices.4
これらの参照が同じバージョンでない場合は、それらを手動で追加する必要があります。
8. 以下の dll を参照に追加します。
C1.C1Word.4
C1.C1Excel.4
C1.Win.C1Chart.4
C1.Win.C1Chart3D.4
マップおよびスーパーラベルカスタムフィールドを使用する場合は、以下の dll を参照に追加します。
C1.Win.FlexReport.CustomFields.4
C1.WPF.Maps.4
C1.WPF.4
9. C1Report コンポーネントの名前を C1FlexReport コンポーネントに変更します。コードでは、次のようにしてコンポー
ネントの名前を変更できます。
Visual Basic
Dim report As New C1Report()
' 変更後
Dim report As New C1FlexReport()
C#
C1Report report = new C1Report();
//変更後
C1FlexReport report = new C1FlexReport();
10. コードビハインドで、名前空間の名前を C1.C1Report から C1.Win.FlexReport に変更します。
11. C1Report とその依存関係(C1.C1Report、C1.Win.C1Report、C1.Win.C1Barcode、C1.Win.C1RibbonPreview)の dll
へのすべての参照を削除します。
12. 名前空間 C1.Win.C1Preview を削除します。
13. licenses.licx から、C1Report と参照先ビューア(C1Preview または C1RibbonPreview)のライセンスエントリを削除し
ます。
14. C1FlexReport と C1FlexViewer を連結するには、次のようにコードを変更する必要があります。
Visual Basic
6
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Dim c1r As C1.C1Report.C1Report = New C1Report()
c1r.Load(filepath, reportname)
C1PrintPreviewControl1.Document = clr
' 変更後
Dim report As New C1FlexReport()
report.Load(filepath, reportname)
C1FlexViewer1.DocumentSource = report
C#
C1.C1Report.C1Report c1r = new C1Report();
c1r.Load(filepath, reportname);
c1PrintPreviewControl1.Document=clr;
//変更後
C1FlexReport report = new C1FlexReport();
report.Load(filepath, reportname);
c1FlexViewer1.DocumentSource = report;
FlexReport は、実行時に C1FlexViewer コントロールを使用してのみプレビューできることに注意してください。
C1FlexViewer コントロールは、C1PrintPreviewControl または C1RibbonPreviewControl と互換性がありません。
FlexReport と C1Report
FlexReport は、C1Report を新しく機能強化した製品です。主に次の相違点があります。
レポートフィールドタイプの階層
FlexReport の Field オブジェクトの構造は階層的であり、基本クラス FieldBase と他のさまざまなクラスタイプを使用して、さまざまなフィールドを表しま
す。テキスト、画像、形状、サブレポートなどの各種データを表すために、さまざまなタイプのレポートフィールドがあります。FlexReport の Field オブ
ジェクト階層の利点として、フィールドの操作がたいへん容易かつ柔軟になることがあります。
一方、C1Report のフィールドオブジェクトは複雑で、C1.C1Report.Field.Text プロパティを定義し、Calculated を True に設定する必要があります。
この場合は、各フィールドがレコードごとに個別に評価される式として解釈されるため、C1Report のフィールドはデータのレンダリングプロセスが低速
になります。
これらの事情にもかかわらず、FlexReport のフィールドタイプは C1Report のフィールドタイプと完全に互換性があり、FlexReport で C1Report の定義
をロードおよびレンダリングすることができます。
複数のデータソース
FlexReport 定義は、それぞれが一意の名前で識別される複数のデータソースを持つことができます。レポートに複数のデータソースが含まれる場合
は、データソースの 1 つがレポートのメインデータソースになります。他のデータソースから取得した値は、レポートパラメータを追加したり、チャート
フィールドを作成するために使用できます。詳細については、「FlexReport のデータソース」を参照してください。
データソートの強化
FlexReport は、データソースソート機能が強化されています。DataSource.SortDefinitions プロパティを使用して、データに対していくつかのソート式
を定義し、ソートの条件と方向を指定できます。
さらに、データのソートとグループ化は独立しています。つまり、レコードのセットにグループ化を適用し、同時にソートを使用してレコードの順序を制御
できます。単純な例として、データを都市でソートし、同時に国別にグループ化できます。これにより、Crystal Report との互換性が向上します。詳細に
ついては、「データのソート」を参照してください。
データフィルタの強化
FlexReport は、データフィルタ機能が強化されており、これを通常の VBScript(C1Report や FlexReport の他のすべての式も同様)や DataView(デー
タをフィルタ処理するための条件を指定するいくつかの式)の中で指定できます。FlexReport でデータをフィルタ処理するための構文タイプを指定する
には、FilterExpressionSyntax 列挙を DataView(デフォルト)または VBScript に設定します。
一方、C1Report のフィルタ処理は、C1Report.Filter プロパティによって指定され、これには DataView.Filter プロパティの制限された構文が使用さ
れます。これらの事情にもかかわらず、FlexReport のフィルタ処理は、C1Report のフィルタ処理と完全に互換性があります。詳細については、「データ
のフィルタ処理」を参照してください。
7
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
データソースの計算フィールド
FlexReport では、データソースが計算フィールドをサポートしています。つまり、データソースで計算フィールドを定義して、計算されたデータをフェッチ
できます。計算フィールドの式は、DataSource.CalculatedFields コレクションで VBScript 式を使用して指定します。これらの式で、他のデータソース
フィールド、レポートパラメータなどを使用できます。詳細については、「計算フィールドの定義」を参照してください。
レポートパラメータ
レポート内のレポートパラメータは、データのデフォルト値を変更して、レポートのレンダリング時にこれらの値を更新するために使用されます。
FlexReport では、C1FlexReport.Parameters コレクションでレポートパラメータを定義し、さらにいくつかのプロパティを使用します。Parameters コレク
ションの各要素は ReportParameter クラスのインスタンスです。詳細については、「パラメータの追加」を参照してください。
C1Report では、DataSource.RecordSource または DataSource のいずれかでパラメータを指定できます。次のように、接続文字列で
PARAMETERS "キーワード" を使用します。
C1Report.DataSource.RecordSource = “PARAMETERS param1 int 0; select * from Customers where id < param1”.
C1Report レポート定義が FlexReport にロードされると、DataSource.RecordSource および DataSource.Filter を使用して指定されたパラメータが
C1FlexReport.Parameters コレクションに正しくインポートされます。
複数のサブセクション
C1FlexReport では、各セクションに少なくとも 1 つのサブセクションが含まれます。セクションと同様に、サブセクションにもいくつかのレポートフィールド
が含まれます。サブセクションを追加する利点は、親セクションにあるデータを補完できることです。サブセクションには、Section.SubSections コレク
ションプロパティを使用してアクセスできます。詳細については、「複数のサブセクションの追加」を参照してください。
ビジュアルプロパティ
境界線
FlexReport では、VisualReportObject.Border プロパティを使用して、フィールド、サブセクション、およびセクションに境界線を指定できます。
また、境界線の各辺に独自のスタイルを設定し、各角にはさまざまな半径の丸みを設定できます。詳細については、「境界線」を参照してくださ
い。
C1Report では、境界線はフィールドに対してのみ定義できます。
背景
FlexReport では、フィールド、サブセクション、およびセクションに背景を指定できます。背景色は、VisualReportObject.Background プロパ
ティを使用して、単色またはグラデーションを設定できます。詳細については、「背景
背景」を参照してください。
C1Report では、フィールドやセクションの背景色を設定するために BackColor プロパティが使用されます。
C1Report から FlexReport への重要な変更点
FlexReport のコードはゼロから作成されています。したがって、C1Report から FlexReport への API の移行には、次のように重要な変更点が
含まれています。
C1Report では、DataSource.RecordSource 内でしかパラメータを直接指定できません(SQL 文の直前のキーワード PARAMETERS の
後)。
FlexReport では、レポートレベルの専用コレクション C1FlexReport.Parameters が別途用意されています。このコレクションで、レポー
トパラメータを指定できます。.xml ファイルから C1Report レポート定義をインポートすると、PARAMETERS キーワードを使用して従来の
方法で指定されたパラメータは、C1FlexReport.Parameters コレクションに自動的に追加されます。
FlexReport では、データソースが開かれた後に OnOpen スクリプトが実行されます。したがって、そのスクリプトでメインデータソースに
行われた変更は、レポートに影響しません。レポートを生成する前にデータソースの一部を変更するには、GlobalScripts を使用しま
す。GlobalScripts には、関数定義、プロシージャ定義、およびこれらの定義内にないコードを含めることができます。これらの定義とコー
ドは、レポートのレンダリングが開始されてデータソースが開かれる前に、すべて実行されるようになりました。
C1Report では、Field から派生されたカスタムフィールドは、GetRenderContent() メソッドをオーバーライドします。C1FlexReport で
は、このメソッドのシグネチャが次のように変更されました。
public virtual void GetDesignerRenderContent(
ref string text,
ref Image image,
ref bool disposeImage);
このオーバーライドメソッドの disposeImage を true に設定すると、画像の使用後に、C1FlexReport がその画像に対して Dispose() を
呼び出します。
C1Report.OutlineRootLevel プロパティは削除されています。アウトライン構造を制御するには、OutlineLabel プロパティと
8
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
OutlineParent プロパティを使用します。サブレポートによって生成されたアウトラインをオフにするに
は、SubreportField.OutlinesVisible プロパティを使用します。
C1Report には、テキストを生成/レイアウトするためのメソッドが 2 つあり(デフォルトおよび「gdi+」)、それらは少し異なっています(
C1Report.UseGdiPlusTextRendering を true に設定した場合は非デフォルト)。これらのメソッドは、多少異なるテキストレイアウトを
行う場合があります(改行が異なる場所に配置されるなど)。FlexReport は常に、UseGdiPlusTextRendering が設定された C1Report と
同様にテキストを生成/レイアウトします。ただし、それでも、UseGdiPlusTextRendering が設定された C1Report と FlexReport の間では
改行に違いが発生する場合があります。
AddOutlineEntry イベントは削除されています。フィールド/セクション/サブセクションによって生成されるアウトラインエントリのテキスト
を変更するには、OutlineLabel プロパティを使用します。
C1FlexReport.ReportError イベントのために特殊な新しいイベントタイプ(ReportErrorEventArgs イベント引数を受け取る
ReportErrorEventHandler)が追加されました。ReportEventArgs タイプが変更されました。イベント引数から Exception と Handled
が削除されました。
レポートにマップカスタムフィールドが含まれる場合は、レポートを同期して生成する必要があります(RenderAsync() ではなく
Render() を呼び出す)。そうしないと、C1FlexViewer コントロールにマップフィールドが表示されませ
ん。C1FlexViewer.UseAsyncRendering プロパティを False に設定する必要があります。
C1Report では、エラーが発生した場合、EndReport イベントが呼び出されません。FlexReport では、レンダリング中に致命的エラーが
発生した場合でも、EndReport イベントが呼び出されます。
次の C1Report メソッド/プロパティは、C1FlexReport から削除されました。
C1Report.Document.Generate()
C1Report.Document.Export()
C1Report.Document.CreationDpi
C1Report.DocumentInternal
C1Report.Document.DoEvents
C1Report.Document.HasEditableTags
C1Report.CreationDevice
StartReport()、StartSection()、EndSection()、RenderField()
C1Report.DataSource.DataObject:C1FlexReport では、DataSource.Recordset プロパティから同じプロパティにアクセスでき
ます。
C1Report.EmfType:C1FlexReport では、代わりに EMF+ を使用します。
C1Report.GetReportInfo():C1FlexReport では、代わりに C1FlexReport.ReportInfo を使用します。
C1Report.PageRenderingMode:C1FlexReport では、C1FlexReport.GetPageImage を使用してページのメタファイルを取得し
ます。
C1FlexReport では、コードビハインドで C1Report Render<X> メソッドにアクセスできません。これらのメソッドは内部的に使用されま
す。
次のコードでは、C1Report Render<X> オブジェクトを使用できません。
c1Report1.Document.Body.Children.Add(RenderGraphic obj)
このメソッドは、FlexReport ではサポートされていません。
C1FlexReport.Document は System.Drawing.Printing.PrintDocument に変換できません。PrintDocument の
C1Report.Document プロパティは存在しないため、FlexReport で PrintDocument を使用してはなりません。
FlexReport では、IC1FlexReportRecordset に ApplyFilter() メソッドと ApplySort() メソッドがありません。代わりに、FlexReport の
DataSource にあるフィルタ定義とソート定義を使用してください。IC1FlexReportRecordset を DataSource.Recordset に割り当てても、
DataSource でフィルタ/ソートを定義できます。
FlexReport では、C1Report の FieldBase オブジェクトを使用できなくなりました。
C1FlexReport では、フィールドは「レガシー」タイプです。特殊なタイプは、C1FlexReport の FieldBase から派生されるようになりました。
次のフィールドオブジェクトは、コードビハインドで直接作成する必要があります。
TextField text = new TextField();
BarCodeField barcode = new BarCodeField();
SubreportField subreport = new SubreportField();
ChartField chart = new ChartField();
RTFField rtf=new RTFField();
CheckBoxField checkbox = new CheckBoxField();
CalculatedField calField=new CalculatedField();
9
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ImageField img = new ImageField();
ShapeField shape = new ShapeField();
対応するプロパティは、C1Report FieldBase オブジェクトの設定に使用されるプロパティと同じプロパティを使用します。
C1FlexReport では、C1Report の CanGrow プロパティと CanShrink プロパティの名前が変更されました。代わり
に、C1FlexReport.AutoHeight、C1FlexReport.AutoWidth、および C1FlexReport.AutoSizeBehavior を使用します。
CanGrow=True および CanShrink=True は、C1FlexReport.AutoSizeBehavior.GrowAndShrink として使用できます。
FlexReport では、AddScriptObject イベントの代わりに、GetScriptObject イベントがあります。したがって、次のコードは
private void c1flxr_StartReport(object sender, System.EventArgs e)
{
c1flxr.AddScriptObject("LookUp", new LookUpObject());
}
次のように変更します。
c1flxr.GetScriptObject += c1flxr_GetScriptObject;
...
void c1flxr_GetScriptObject(object sender, C1.Win.FlexReport.ReportGetScriptObjectEventArgs e)
{
if (e.Name.ToLower() == "lookup")
e.Object = new LookUpObject();
}
レポートテンプレートが変更されない場合、C1FlexReport は、レンダリングされたコンテンツをキャッシュし、レポートを再生成しません。
レポートを必ず再生成するには、C1FlexReport.SetDirty() メソッドを呼び出します。
10
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
主要な機能
FlexReport for WinForms の主要な機能は次のとおりです。
軽量、高速
FlexReport は、特に小さなレポートで軽量かつ高速です。FlexReport は C1Report と比べて 2 倍高速にレンダリング
されます。また、PDF、HTML などの主要なエクスポートは C1Report より大幅に高速化されています。
高品質なレンダリング
FlexReport は、DirectWrite/Direct2D を使用することで、プリンタや画面などの測定コンテキストに依存しない、高パ
フォーマンスで高品質なレポートコンテンツを描画および生成できます。
1 つのビューアですべてのドキュメントタイプを表示 FlexViewer は、FlexReport の 2015 v3 で導入された新しいコント
ロールです。このコントロールを使用して、C1Report、C1FlexReport、SSRS、C1Document などの複数のドキュメントタ
イプを表示することができます。パラメータの使用/リセット、レポートレンダリングをリフレッシュおよびキャンセルするオ
プション、レポート内のさまざまな場所にジャンプするためのブックマークなどの機能が提供されています。
より正確な Crystal Report の移行
FlexReport は、Crystal Reports との互換性を向上させる機能を備えています。以下の機能に関して適切な移行がサ
ポートされています。
サブセクション
複雑な式
指定された順序でのグループ化
強化された境界線スタイル
詳細については、「Crystal Reports のインポート」を参照してください。
モダン UI
レポート設計アプリケーション(FlexReportDesigner)とプレビューツール(FlexViewer)はリボンベースの UI インタ
フェースを備えており、デザイナやビューアのオプションがアクセスしやすく配置されて、直感的でリッチなユーザー使
用環境が提供されています。
リッチなユーザー使用環境を備えた新しいデザイナアプリケーション
FlexReportDesigner アプリケーションには、レポート設計を従来より格段に容易にする機能が追加されています。次の
新機能があります。
コントロールからの距離を表示および配置するスナップライン。
折りたたみ/展開が可能なセクションとサブセクション。
オプションでセクションとサブセクションのヘッダーストリップを表示するためのキャプション表示設定。
設計時にチャートフィールドのプロパティ、データソース、視覚効果を設定するためのチャートエディタ。
データソース、パラメータ、ソート式、計算フィールドを追加、編集、削除するためのデータタブ。
コンテキストメニューの[式の編集]を使用して式を編集する機能。
デザイナで[標準の配置]ボタンを使用して、数値を左詰め、その他の値を右詰めに揃える機能。
詳細については、「FlexReportDesigner について」を参照してください。
新しいさまざまなチャート
FlexReport では 70 種類以上のチャートタイプが提供されており、そこから自由に選択できます。FlexReportDesigner
アプリケーションの設計時エディタを使用して、チャートへのデータの連結、プロパティの設定、視覚効果の追加、その
他関連タスクを容易に実行できます。
SQLiteデータベースへのサポートの追加
他のデータベースと同様に、SQLiteへの接続をFlexReportDesignerにて指定してデータを取得することが可能です。
そのために、 <br />SQLiteのADO.NETプロバイダがシステムにインストールされている必要があります。 詳細につ
いては、「https://system.data.sqlite.org」をご参考ください。
11
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport の詳細情報
FlexReport の使用を開始する前に、FlexReport に付属しているコンポーネントとコントロール、FlexReport のオブジェクトモデ
ル、FlexReport で使用できるセクションまたはテーブル領域について理解しておく必要があります。以下のセクションでは、こ
れらに関する詳細な情報を提供します。
コンポーネントとコントロール
FlexReport for WinForms は、以下のアセンブリで構成されています。
C1.Win.FlexReport dll
以下のコンポーネントを通して、すべてのレポートレンダリング機能とドキュメント生成機能を提供します。
C1FlexReport:
C1FlexReport コンポーネントは、水平区切りデータベースレポートを生成するレポート生成コンポーネントです。レ
ポートを直接プリンタまたはプレビューコントロールにレンダリングすることも、さまざまな移植可能な形式(XLS、PDF、
HTML、テキスト、画像など)にエクスポートすることもできます。FlexReport コンポーネントは、レポート定義を作成、カ
スタマイズ、ロード、および保存するための機能豊富なオブジェクトモデルも公開しています。
C1.Win.FlexViewer dll
以下のコントロールまたはコンポーネントを通して、すべての表示機能を提供します。
C1FlexViewer:
C1FlexViewerコントロールは、複数ドキュメントプレビューコントロールです。リボンベースの UI を備えており、すべて
のプレビュー関連オプション(ビューアペインおよびステータスバー)に簡単にアクセスできます。
C1FlexViewerPane:
C1FlexViewerPane コントロールは、プレビュー中のドキュメントのページを表示し、パン、ズームなどのプレビュー操
作を処理できます。フォームデザイナでは、コンテキストメニュー項目を使用して、現在のフォーム内に標準のツール
バーとステータスバーを作成できます。
C1FlexViewerDialog:
C1FlexViewerDialog は、ネストされた C1FlexViewer コントロールを使用して表示されるフォームです。
含まれるアプリケーション
レポート作成用のコンポーネントとコントロールに加えて、FlexReport には以下のスタンドアロンアプリケーションも含まれま
す。
C1FlexReportDesigner exe
C1FlexReport レポート定義ファイルを作成および編集するための組み込みアプリケーションです。このデザイナを使用
して、C1FlexReport コンポーネントで読み込めるファイル(XML)を作成、編集、ロード、および保存できます。
オブジェクトモデルの概要
C1FlexReport は優れたオブジェクトモデルを備え、その大部分は Microsoft Access モデルに基づいています。これらのオブジェクト、コレクション、関連するプロパティやメソッドなどにより、FlexReport を柔軟かつ容易に
生成することが可能です。次の表に、オブジェクトおよびそのプロパティとメソッドを一覧します。
C1FlexReport オブジェクト
ReportName、Load、GetReportList、Save、Clear、Render、Parameters、Document、DoEvents、Cancel、Page、MaxPages、Font、OnOpen、OnClose、OnNoData、OnPage、OnError、Evaluate、Execute
Layout オブジェクト
Width、MarginLeft、MarginTop、MarginRight、MarginBottom、PaperSize、Orientation、Columns、ColumnLayout、PageHeader、PageFooter
DataSource オブジェクト
CalculatedFields、ConnectionString、Filter、RecordSource、SortDefinitions
DataSourceCollection
Report、Add、RemoveAt
SortDefinition オブジェクト
Direction、Expression
SortDefinitionCollection
Owner、Report
12
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
CalculatedField オブジェクト
DataSource、Expression、Type
CalculatedFieldCollection
Owner、Report
グループ
GroupBy、KeepTogether、SectionHeader、SectionFooter、Sort、SortExpression
GroupCollection
Add、Clear、RemoveAt、Report
ReportParameter オブジェクト
AllowedValuesDefinition、DisplayText、ParentReport、SetName
ReportParameterCollection
InsertItem、RemoveItem、SetItem、Report
AllowedValuesDefinition オブジェクト
AssignFrom、Binding、Values
Section オブジェクト
Calculated、Fields、Height、KeepTogether、SplitBehavior、SubSections
SectionCollection
Detail、Footer、Header、PageFooter、PageHeader
SubSection オブジェクト
Calculated、Fields、Height、ParentReport、ParentSection、SplitBehavior、Visible
SubSectionCollection
Add、Remove、RemoveAt、Report
FieldBase オブジェクト
Anchor、Height、KeepTogether、ForcePageBreak、MarginBottom、MarginLeft、MarginRight、MarginTop、Section、SplitHorzBehavior、SplitVertBehavior
FieldCollection
Add、Remove、RemoveAt
BarCodeField オブジェクト
BarCode、BarCodeOptions、Font、Text
CheckBoxField オブジェクト
CheckAlign、CheckMark、Text、ThreeState、Value
DataField オブジェクト
Calculated、Name、Type、Value
ImageField オブジェクト
AssignFrom、PictureAlign、PictureScale
RtfField オブジェクト
AssignFrom、DetectUrls、Text
ShapeField オブジェクト
Line、Shape、ShapeBackColor、ShapeBackground、ShapeType
SubreportField オブジェクト
ParameterValues、Subreport、SubreportFilter
TextField オブジェクト
Format、Text
ExportFilter オブジェクト
ExportFilter
GraphicsFilter オブジェクト
GraphicsFilter
HtmlFilter オブジェクト
ExportProvider、Paged
PdfFilter オブジェクト
EmbedFonts、ExportProvider、UseOutlines、PdfACompatible、PdfSecurityOptions
RtfFilter オブジェクト
ExportProvider、OpenXml、Paged
XlsFilter オブジェクト
ExportProvider、OpenXml、PictureLayer、SheetName、Tolerance
VisualReportObject
Background、Border、BordersSplitHorzMode、BordersSplitVertMode、OutlineLabel
BehaviorOptions
AssignFrom、Reset、IgnoreInvisibleFieldsInGrowShrinkSections
13
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport のセクション
すべてのレポートは、次の 5 つの基本セクションで構成されます。
セクション
説明
詳細
詳細セクションには、ソースレコードセット内の各レコードごとに一度ずつレンダリングされるフィール
ドが含まれます。
ヘッダー
レポートのヘッダーセクションは、レポートの最初にレンダリングされます。
フッター
レポートのフッターセクションは、レポートの最後にレンダリングされます。
ページヘッダー
ページヘッダーセクションは、各ページの上部にレンダリングされます(オプションで、レポートヘッ
ダーを含むページを除外することもできます)。
ページフッター
ページフッターセクションは、各ページの下部にレンダリングされます。
さらに、グループごとに、グループヘッダー
グループヘッダーとグループフッター
グループフッターという 2 つの追加セクションがあります。たとえば、3 つのグルー
プレベルを持つレポートには 11 のセクションがあることになります。
サブセクション
サブセクションという追加セクションをレポートの任意のセクションに追加することもできます。
これらのセクションを非表示にすることはできますが、グループを追加または削除しない限り、セクションを追加または削
除することはできません。
次の図に、一般的なレポートで各セクションがどのようにレンダリングされるかを示します。図では、詳細セクションに置かれた
サブセクションがレポートでどのようにレンダリングされるかも示しています。
レポートヘッダー
最初にレンダリングされるセクションは、レポートヘッダーです。このセクションには、通常、レポートを識別する情報が含まれま
す。
ページヘッダー
レポートヘッダーの次に、ページヘッダーがレンダリングされます。レポート内にグループがない場合、このセクションには、通
常、詳細セクション内のフィールドについて説明するラベルが含まれます。
14
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
グループヘッダーとグループフッター
次に、グループヘッダー、詳細、グループフッターの各セクションがレンダリングされます。これらが、実際のレポートデータを含
むセクションです。グループヘッダーとグループフッターには、多くの場合、グループの合計、パーセント値、最大値、最小値な
どの集計関数が含まれます。グループヘッダーとグループフッターは、GroupBy プロパティによって指定された式の値が、あ
るレコードから次のレコードへ変わるたびに挿入されます。
詳細
詳細セクションには、各レコードのデータが含まれます。Visible プロパティを False に設定してこのセクションを非表示にし、グ
ループヘッダーとグループフッターだけを表示することもできます。これは、サマリーレポートの作成に便利な方法です。
ページフッター
各ページの下部には、ページフッターセクションがレンダリングされます。このセクションには、通常、ページ番号、レポートの総
ページ数、レポートの印刷日などの情報が含まれます。
レポートフッター
最後に、レポートフッターセクションが最後のページフッターの前に出力されます。このセクションは、多くの場合、レポート全体
に関するサマリー情報を表示するために使用されます。
サブセクション
サブセクションは、レポートの任意のセクションに追加できます。デフォルトでは、現在選択されているセクションの下部に追加
されます。このセクションには、親セクションにあるデータを補完する付加的なデータが含まれます。セクションの高さは、サブ
セクションの高さの合計によって決まります。
カスタムセクション
セクションを表示するかどうかは、Visible プロパティを True または False に設定することで決定できます。グループヘッダー
は、Repeat プロパティを True に設定することで、(ページがグループの最初のページかどうかにかかわらず)各ページの上
部に繰り返し表示できます。ページヘッダーとページフッターは、Layout オブジェクトの PageHeader プロパティと PageFooter
プロパティを設定することで、レポートヘッダーおよびレポートフッターセクションを含むページから削除できます。
15
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport クイックスタート
C1FlexReport は、デスクトップ上のさまざまな状況で使用できますが、どの場合でも主な手順は同じです。
1. レポート定義を作成する
レポート定義は、FlexReportDesigner アプリケーションを使用して直接作成するか、Microsoft Access のレポートデ
ザイナや Crystal Report を使用して作成した後で、FlexReportDesigner にインポートできます。コードを使用して作
成することもできます。この場合は、オブジェクトモデルを使用してグループおよびフィールドを追加するか、カスタム
XML ファイルを記述します。
2. C1FlexReport コンポーネントにレポートをロードする
レポートをロードするには、設計時に[レポートのロード]
[レポートのロード]コンテキストメニューを使用するか、プログラムで
C1FlexReport.Load メソッドを使用します。設計時にレポートをロードした場合、レポートはコントロールに保持(保存)
されるため、レポート定義ファイルを配布する必要はありません。
3. レポートをレンダリングする
レポートは、C1FlexViewer.DocumentSource プロパティを使用して FlexViewer コントロールにレンダリングできま
す。プレビューコントロールによってレポートが画面に表示され、ユーザーは、全画面表示やパンなどの機能を使用し
てレポートをプレビューできます。レポートのレンダリングは、デスクトップアプリケーションでのみサポートされます。
以下の手順は、レポート定義を作成し、レポートを C1FlexReport コンポーネントにロードし、レポートをレンダリングする方法を
示します。
手順 1:レポート定義の作成
:レポート定義の作成
次のトピックでは、FlexReportDesigner アプリケーションとコード
コードを使用してレポート定義を作成する方法について説明します。レポート定義の作成は、レポートのレンダリン
グとは異なることに注意してください。レポートのレンダリングは、既存のレポート定義をロードし、C1FlexReport.Render メソッドを呼び出すだけで行うことができます。レ
ポート定義を作成する最も簡単な方法は、C1FlexReportDesigner を使用することです。これは、Microsoft Access のレポートデザイナや Crystal Report に似たスタンドア
ロンアプリケーションです。
FlexReportDesigner を使用したレポート定義の作成
C1FlexReport ウィザード
ウィザードは、新しいレポートの作成手順を最初から最後までガイドします。次の手順に従います。
1. まず、.NET プロジェクトを作成し、C1FlexReport コンポーネントをツールボックスに追加します。
2. ツールボックスで、C1FlexReport アイコンをダブルクリックして、このコンポーネントをプロジェクトに追加します。コンポーネントは、コンポーネントトレイ内でフォーム
の下に表示されます。
3. C1FlexReport コンポーネントのスマートタグをクリックし、そのタスク
タスクメニューから[レポートの編集]
[レポートの編集]を選択します。
C1FlexReportDesigner が開き、C1FlexReport ウィザード
ウィザードによる 5 つの簡単な手順のガイドが開始されます。
C1FlexReport ウィザード
ウィザードで、次の 5 つの手順を実行してレポートを作成します。
1. 新しいレポートのデータソースを選択します。
このページを使用して、レポートデータの取得に使用される DataSource.ConnectionString と DataSource.RecordSource を選択します。
DataSource.ConnectionString は、次の 3 つの方法で指定できます。
文字列をエディタに直接入力します。
ドロップダウンリストを使用して、最近使用した接続文字列を選択します(デザイナには、最近使用された接続文字列が 8 個まで保持されます)。
省略符
省略符((...))ボタンをクリックして、標準の接続文字列ビルダを起動します。
DataSource.RecordSource の文字列は、次の 2 つの方法で指定できます。
[テーブル]
[テーブル]オプションをクリックし、リストからテーブルを選択します。
[SQL]]オプションをクリックし、エディタに SQL 文を入力(または貼り付け)します。
手順 1 の実行
16
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次の手順を実行します。
1.
2.
3.
4.
省略符
省略符ボタンをクリックして、標準の接続文字列ビルダを起動します。[データリンクプロパティ]
[データリンクプロパティ]ダイアログボックスが開きます。
[プロバイダ]
[プロバイダ]タブを選択し、リストからデータプロバイダを選択します。この例では、Microsoft Jet 4.0 OLE DB Provider を選択します。
[次へ]
[次へ]ボタンをクリックするか、[接続]
[接続]タブを選択します。ここで、データソースを選択する必要があります。
省略符
省略符ボタンをクリックしてデータベースを選択します。[[Access データベースの選択]
データベースの選択]ダイアログボックスが表示されます。この例では、(デフォルトでは
Documents フォルダにインストールされる)ComponentOne Samples ディレクトリの Common フォルダにある C1NWind.mdb を選択します。このディレク
トリはデフォルトのインストールパスに基づいていますが、インストールパスを変更した場合は、パスが異なる場合があります。
5. [開く]
[開く]をクリックします。接続をテストし、[[OK]]をクリックします。
6. [OK]]をクリックして、[データリンクプロパティ]
[データリンクプロパティ]ダイアログボックスを閉じます。
7. データソースを選択したら、テーブル、ビュー、またはストアドプロシージャを選択して実際のデータを提供できます。DataSource.RecordSource の文字列
は、次の 2 つの方法で指定できます。
[データソース]
[データソース]タブを選択し、[テーブル]
[テーブル]リストから Products テーブルを選択します。
[SQL]]タブを選択し、エディタに SQL 文を入力(または貼り付け)します。
次に例を示します。
select * from products
8. [次へ]
[次へ]をクリックします。ウィザードに従って残りの手順を実行します。
2. レポートに含めるフィールドを選択します。
このページには、手順 1 で選択したレコードセットにあるフィールドのリスト、およびレポートのグループフィールドと詳細フィールドを定義する 2 つのリストが表示され
ます。グループフィールドはデータのソート方法と集計方法を定義し、詳細フィールドはレポートに表示する情報を定義します。
マウスポインタを使用してドラッグすることで、リスト間でフィールドを移動することができます。フィールドを[詳細]
[詳細]リストにドラッグしてレポートに入れたり、リスト内で
フィールドをドラッグして順序を変更することができます。レポートからフィールドを削除する場合は、フィールドをドラッグして[利用可能なフィールド]
[利用可能なフィールド]リストに戻します。
手順 2 の実行
次の手順を実行します。
1. マウスポインタを使用して CategoryID フィールドを選択し、[グループ]
[グループ]リストにドラッグします。
2. [>>]ボタンをクリックして、残りのフィールドを[詳細]
[詳細]リストに移動します。
17
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
3. [次へ]
[次へ]をクリックします。ウィザードに従って残りの手順を実行します。
3. 新しいレポートのレイアウトを選択します。
このページには、ページ内でのデータの構成方法を定義するいくつかのオプションが用意されています。レイアウトを選択すると、左側にサムネイルプレビューが表示
され、ページ内でレイアウトがどのように表示されるかを確認できます。2 つのレイアウトグループがあります。1 つは、グループなしのレポート用のレイアウトグルー
プ、もう 1 つはグループありのレポート用のレイアウトとグループです。目的とするレポートの最終的な外観に最も近いレイアウトを選択してください。
また、このページでは、用紙の方向と、フィールドをページ幅に合わせて調整するかどうかを選択できます。
[ラベル]
[ラベル]レイアウトオプションを使用して、Avery スタイルのラベルを印刷します。このオプションを選択すると、印刷するラベルの種類を指定するためのページが表示
されます。
手順 3 の実行
次の手順を実行します。
1. [アウトライン]
[アウトライン]レイアウトのままにします。
2. [次へ]
[次へ]をクリックします。ウィザードに従って残りの手順を実行します。
4. 新しいレポートのスタイルを選択します。
このページでは、新しいレポートで使用するフォントと色を選択できます。前のページと同様に、プレビューが表示され、各スタイルがどのように表示されるかを確認で
きます。最適なスタイルを選択します(スタイルは後で変更したり、詳細に調整することができます)。
18
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
手順 4 の実行
1. Verdana スタイルを選択します。
2. [次へ]
[次へ]をクリックします。ウィザードに従って残りの手順を実行します。
5. 新しいレポートのタイトルを選択します。
この最後の手順のページでは、新しいページのタイトルを選択します。また、新しいレポートをすぐにプレビューするか、プレビューする前に編集モードに移動してデザ
インに手を加えるかを指定します。
手順 5 の実行
1. 新しいレポートのタイトルを入力します。たとえば、「Products Report」とします。
2. [レポートのプレビュー]
[レポートのプレビュー]を選択し、[完了]
[完了]をクリックします。
デザイナ
デザイナのプレビューペインにレポートが直ちに表示されます。
レポートに何らかの調整が必要なことに気づくことがあります。レポートの修正方法については、次の手順で説明します。
コードを使用したレポート定義の作成
以下の手順では、FlexReportDesigner アプリケーションまたはコードを使用してレポート定義を作成する方法について説明します。独自のレポートデザイナを記述したり、ア
ドホックなレポートジェネレータを作成することもできます。
19
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
この例では、コードを使用して、C1NWind データベースに基づく単純な表形式のレポート定義を作成します。コードにはコメントが付けられ、C1FlexReport オブジェクトモデル
の最も重要な要素が例示されています。次の手順を実行します。
1. 最初に、ボタンコントロール、C1FlexReport コンポーネント、および C1FlexViewer コントロールをフォームに追加します。次のプロパティを設定します。
Button.Name = btnEmployees
C1FlexReport.Name = c1FlexReport1 (C# でのデフォルト名)
C1FlexViewer.Name = c1FlexViewer1 (C# でのデフォルト名)
2. c1FlexReport1 という名前のコントロールを初期化します。それには、Clear メソッドを使用してコンテンツを消去し、コントロールのフォントを設定します(このフォントが
新しいフィールドに割り当てられます)。
Visual Basic
Private Sub RenderEmployees()
C1FlexReport1.DataSource.RecordSourceType = RecordSourceType.Auto
' 既存のフィールドをすべて消去します
C1FlexReport1.Clear()
' すべてのコントロールのデフォルトのフォントを設定します
C1FlexReport1.Font.Name = "Tahoma"
C1FlexReport1.Font.Size = 8
End Sub
C#
private void RenderEmployees()
{
c1FlexReport1.DataSource.RecordSourceType = RecordSourceType.Auto;
// 既存のフィールドをすべて消去します
c1FlexReport1.Clear();
// すべてのコントロールのデフォルトのフォントを設定します
c1FlexReport1.Font.Name = "Tahoma";
c1FlexReport1.Font.Size = 8;
}
3. 次に、C1NWind.mdb データベースから必要なデータを取得するように DataSource オブジェクトを設定します。それには、ConnectionString プロパティと
RecordSource プロパティを使用します。
Visual Basic
' DataSource を初期化します
Dim ds As DataSource = C1FlexReport1.DataSource
ds.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\...\ComponentOne
Samples\Common\C1NWind.mdb;"
ds.RecordSource = "Employees"
C#
//DataSource を初期化します
DataSource ds = c1FlexReport1.DataSource;
ds.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=C:\...\ComponentOne Samples\Common\C1NWind.mdb;";
ds.RecordSource = "Employees";
4. 次に、ページ内のレポートのレイアウト方法を定義する Layout オブジェクトを初期化します。ここでは、レポートを Portrait(縦)モードでレンダリングし、Width を 6.5
インチ(ページ幅 8.5 インチから、両側のマージン各 1 インチを引いた値)に設定します。
Visual Basic
'Layout を初期化します
Dim l As Layout = C1FlexReport1.Layout
l.Orientation = OrientationEnum.Portrait
l.Width = 6.5 * 1440 ' 8.5 からマージンを引いた値(ツイップ単位)
C#
//Layout を初期化します
Layout l = c1FlexReport1.Layout;
l.Orientation = OrientationEnum.Portrait;
l.Width = 6.5 * 1440; // 8.5 からマージンを引いた値(ツイップ単位)
5. 次の手順は、興味深いものです。すべてのレポートには、5 つの基本セクション(詳細
詳細、レポートヘッダー
レポートヘッダー、レポートフッター
レポートフッター、ページヘッダー
ページヘッダー、ページフッター
ページフッター)がありま
す。次のコードを使用して、レポートヘッダーを設定します。ここでは、いくつかのプロパティを設定し、タイトルフィールドを追加します。
Visual Basic
20
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
' レポートヘッダーを作成します
Dim s As Section = C1FlexReport1.Sections(SectionTypeEnum.Header)
s.Height = 1440
s.Visible = True
s.BackColor = Color.FromArgb(200, 200, 200)
Dim textFld1 As New TextField()
textFld1.Name = "FldTitle"
textFld1.Text = "Employees Report"
textFld1.Left = 0
textFld1.Top = 0
textFld1.Width = 8000
textFld1.Height = 1440
textFld1.Font.Size = 24
textFld1.Font.Bold = True
textFld1.ForeColor = Color.FromArgb(0, 0, 100)
C1FlexReport1.Sections.Header.Fields.Add(textFld1)
C#
// レポートヘッダーを作成します
Section s = c1FlexReport1.Sections[SectionTypeEnum.Header];
s.Height = 1440;
s.Visible = true;
s.BackColor = Color.FromArgb(200, 200, 200);
TextField textFld1 = new TextField();
textFld1.Name = "FldTitle";
textFld1.Text= "Employees Report";
textFld1.Left = 0;
textFld1.Top = 0;
textFld1.Width = 8000;
textFld1.Height = 1440;
textFld1.Font.Size = 24;
textFld1.Font.Bold = true;
textFld1.ForeColor = Color.FromArgb(0, 0, 100);
c1FlexReport1.Sections.Header.Fields.Add(textFld1);
上記のセクションオブジェクトには、Fields コレクションがあります。このコレクションの Add メソッドは、新しいフィールドを作成し、それをセクションに割り当てます。パ
ラメータで、新しいフィールドの Name、Text、Left、Top、Width、Height の各プロパティを指定しています。デフォルトでは、フィールドのフォントはコントロールと同じ
です。このフィールドはタイトルなので、フォントを変更してサイズを大きくしています。フォントサイズに合わせてフィールドの高さを十分大きくしてください。そうしない
と、何も表示されなくなります。
6. 次に、ページフッターセクションを設定します。このセクションは、テキストフィールドに式が含まれており、さらに興味深くなっています。テキストフィールド内の式を評価
するには、TextField.Text.Expression プロパティに式を設定するだけです。テキストフィールド内の式は、レポートのレンダリング時に評価されます。C1Report で
は、フィールドの Calculated プロパティを True に設定することで、同じことを実現できます。ページフッターを作成するには、次のコードを追加します。
VB
' ページフッターを作成します
s = C1FlexReport1.Sections(SectionTypeEnum.PageFooter)
s.Height = 500
s.Visible = True
Dim textFld2 As New TextField()
textFld2.Name = "FldFtrLeft"
textFld2.Text.Expression = """Employees: Printed on "" & Now"
textFld2.Left = 0
textFld2.Top = 0
textFld2.Width = 4000
textFld2.Height = 300
textFld2.Font.Size = 8
textFld2.Font.Bold = False
C1FlexReport1.Sections.PageFooter.Fields.Add(textFld2)
Dim textFld3 As New TextField()
textFld3.Name = "FldFtrRight"
textFld3.Text.Expression = """Page "" + Page + "" of "" & Pages"
textFld3.Left = 4000
textFld3.Top = 0
textFld3.Width = 4000
textFld3.Height = 300
textFld3.Align = FieldAlignEnum.RightTop
textFld3.Width = C1FlexReport1.Layout.Width - textFld3.Left
C1FlexReport1.Sections.PageFooter.Fields.Add(textFld3)
'ページフッターの前に直線を追加します
Dim shpfld As New ShapeField()
21
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
shpfld.Name = "FldLine"
shpfld.ShapeType = ShapeType.Line
shpfld.Left = 0
shpfld.Top = 0
shpfld.Width = C1FlexReport1.Layout.Width
shpfld.Height = 20
C1FlexReport1.Sections.PageFooter.Fields.Add(shpfld)
C#
// ページフッターを作成します
s = c1FlexReport1.Sections[SectionTypeEnum.PageFooter];
s.Height = 500;
s.Visible = true;
TextField textFld2 = new TextField();
textFld2.Name = "FldFtrLeft";
textFld2.Text.Expression = @"""Employees: Printed on "" & Now";
textFld2.Left = 0;
textFld2.Top = 0;
textFld2.Width = 4000;
textFld2.Height = 300;
textFld2.Font.Size = 8;
textFld2.Font.Bold = false;
c1FlexReport1.Sections.PageFooter.Fields.Add(textFld2);
TextField textFld3 = new TextField();
textFld3.Name = "FldFtrRight";
textFld3.Text.Expression = @"""Page "" + Page + "" of "" & Pages";
textFld3.Left = 4000;
textFld3.Top = 0;
textFld3.Width = 4000;
textFld3.Height = 300;
textFld3.Align = FieldAlignEnum.RightTop;
textFld3.Width = c1FlexReport1.Layout.Width - textFld3.Left;
c1FlexReport1.Sections.PageFooter.Fields.Add(textFld3);
//ページフッターの前に直線を追加します
ShapeField shpfld = new ShapeField();
shpfld.Name = "FldLine";
shpfld.ShapeType = ShapeType.Line;
shpfld.Left = 0;
shpfld.Top = 0;
shpfld.Width = c1FlexReport1.Layout.Width;
shpfld.Height = 20;
c1FlexReport1.Sections.PageFooter.Fields.Add(shpfld);
このページフッターセクションの式では、VBScript 固有の変数ではなく、C1FlexReport で定義されている変数を使用しています。Page と Pages は、現在のページ番
号と総ページ数が格納される変数です。このセクションでは、直線として表示されるように設定されたフィールドも使用されています。
7. 次に、ページヘッダーセクションを設定します。このセクションは、各ページの上部にレンダリングされ、フィールドラベルが表示されます。ページヘッダーセクションを使
用してフィールドラベルを表示するテクニックは、表形式のレポートでよく使用されます。コードは単純ですが、すべてのフィールドのサイズを指定しているため、見た目
は多少煩雑です。実際のアプリケーションでは、これらの値はプログラムに組み込まれません。フィールドラベルを含むページヘッダーを作成するには、次のコードを
追加します。
Visual Basic
'フィールドラベルを含むページヘッダーを作成します
s = C1FlexReport1.Sections(SectionTypeEnum.PageHeader)
s.Height = 500
s.Visible = True
C1FlexReport1.Font.Bold = True
Dim textFld4 As New TextField()
textFld4.Name = "LblID"
textFld4.Text = "ID"
textFld4.Left = 0
textFld4.Top = 50
textFld4.Width = 400
textFld4.Height = 300
textFld4.Align = FieldAlignEnum.RightTop
C1FlexReport1.Sections.PageHeader.Fields.Add(textFld4)
Dim textFld5 As New TextField()
textFld5.Name = "LblFirstName"
textFld5.Text = "First"
textFld5.Left = 500
22
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
textFld5.Top = 50
textFld5.Width = 900
textFld5.Height = 300
C1FlexReport1.Sections.PageHeader.Fields.Add(textFld5)
Dim textFld6 As New TextField()
textFld6.Name = "LblLastName"
textFld6.Text = "Last"
textFld6.Left = 1500
textFld6.Top = 50
textFld6.Width = 900
textFld6.Height = 300
C1FlexReport1.Sections.PageHeader.Fields.Add(textFld6)
Dim textFld7 As New TextField()
textFld7.Name = "LblTitle"
textFld7.Text = "Title"
textFld7.Left = 2500
textFld7.Top = 50
textFld7.Width = 2400
textFld7.Height = 300
C1FlexReport1.Sections.PageHeader.Fields.Add(textFld7)
Dim textFld8 As New TextField()
textFld8.Name = "LblTitle"
textFld8.Text = "Notes"
textFld8.Left = 5000
textFld8.Top = 50
textFld8.Width = 8000
textFld8.Height = 300
C1FlexReport1.Sections.PageHeader.Fields.Add(textFld8)
C1FlexReport1.Font.Bold = False
Dim shpfld2 As New ShapeField()
shpfld2.Name = "FldLine"
shpfld2.ShapeType = ShapeType.Line
shpfld2.Left = 0
shpfld2.Top = 400
shpfld2.Width = C1FlexReport1.Layout.Width
shpfld2.Height = 20
C1FlexReport1.Sections.PageHeader.Fields.Add(shpfld2)
C#
//フィールドラベルを含むページヘッダーを作成します
s = c1FlexReport1.Sections[SectionTypeEnum.PageHeader];
s.Height = 500;
s.Visible = true;
c1FlexReport1.Font.Bold = true;
TextField textFld4 = new TextField();
textFld4.Name = "LblID";
textFld4.Text = "ID";
textFld4.Left = 0;
textFld4.Top = 50;
textFld4.Width = 400;
textFld4.Height = 300;
textFld4.Align = FieldAlignEnum.RightTop;
c1FlexReport1.Sections.PageHeader.Fields.Add(textFld4);
TextField textFld5 = new TextField();
textFld5.Name = "LblFirstName";
textFld5.Text = "First";
textFld5.Left = 500;
textFld5.Top = 50;
textFld5.Width = 900;
textFld5.Height = 300;
c1FlexReport1.Sections.PageHeader.Fields.Add(textFld5);
TextField textFld6 = new TextField();
textFld6.Name = "LblLastName";
textFld6.Text = "Last";
textFld6.Left = 1500;
textFld6.Top = 50;
textFld6.Width = 900;
textFld6.Height = 300;
c1FlexReport1.Sections.PageHeader.Fields.Add(textFld6);
TextField textFld7 = new TextField();
textFld7.Name = "LblTitle";
textFld7.Text = "Title";
23
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
textFld7.Left = 2500;
textFld7.Top = 50;
textFld7.Width = 2400;
textFld7.Height = 300;
c1FlexReport1.Sections.PageHeader.Fields.Add(textFld7);
TextField textFld8 = new TextField();
textFld8.Name = "LblTitle";
textFld8.Text = "Notes";
textFld8.Left = 5000;
textFld8.Top = 50;
textFld8.Width = 8000;
textFld8.Height = 300;
c1FlexReport1.Sections.PageHeader.Fields.Add(textFld8);
c1FlexReport1.Font.Bold = false;
ShapeField shpfld2 = new ShapeField();
shpfld2.Name = "FldLine";
shpfld2.ShapeType = ShapeType.Line;
shpfld2.Left = 0;
shpfld2.Top = 400;
shpfld2.Width = c1FlexReport1.Layout.Width;
shpfld2.Height = 20;
c1FlexReport1.Sections.PageHeader.Fields.Add(shpfld2);
このコードは、フォントを処理するための強力なテクニックを示しています。すべてのフィールドは、作成時にコントロールのフォントを継承するため、フィールドを作成す
る前にコントロールの Font.Bold プロパティを True に設定し、後で False に戻します。これで、ページヘッダーセクション内のすべてのコントロールのフォントが太字
になります。
8. 詳細セクションを追加して、レポートを完成させます。このセクションが、実際のデータを表示するセクションです。詳細セクションでは、ページヘッダーセクションの各ラ
ベルの下のテキストフィールドに式を設定します。詳細セクションを作成するには、次のコードを追加します。
Visual Basic
' 詳細セクションを作成します
s = C1FlexReport1.Sections(SectionTypeEnum.Detail)
s.Height = 330
s.Visible = True
Dim textField As New TextField()
textField.Name = "FldID"
textField.Text.Expression = "EmployeeID"
textField.Left = 0
textField.Top = 0
textField.Width = 400
textField.Height = 300
C1FlexReport1.Sections.Detail.Fields.Add(textField)
Dim textField1 As New TextField()
textField1.Name = "FldFirstName"
textField1.Text.Expression = "FirstName"
textField1.Left = 500
textField1.Top = 0
textField1.Width = 900
textField1.Height = 300
C1FlexReport1.Sections.Detail.Fields.Add(textField1)
Dim textField2 As New TextField()
textField2.Name = "FldLastName"
textField2.Text.Expression = "LastName"
textField2.Left = 1500
textField2.Top = 0
textField2.Width = 900
textField2.Height = 300
C1FlexReport1.Sections.Detail.Fields.Add(textField2)
Dim textField3 As New TextField()
textField3.Name = "FldTitle"
textField3.Text.Expression = "Title"
textField3.Left = 2500
textField3.Top = 0
textField3.Width = 2400
textField3.Height = 300
C1FlexReport1.Sections.Detail.Fields.Add(textField3)
Dim textField4 As New TextField()
textField4.Name = "FldNotes"
textField4.Text.Expression = "Notes"
textField4.Left = 5000
textField4.Top = 0
24
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
textField4.Width = 8000
textField4.Height = 300
C1FlexReport1.Sections.Detail.Fields.Add(textField4)
textField4.Width = C1FlexReport1.Layout.Width - textField4.Left
textField4.AutoHeight = AutoSizeBehavior.CanGrow
textField4.Font.Size = 6
textField4.Align = FieldAlignEnum.JustTop
'詳細セクションの各フィールドの後に直線を追加します
Dim shpfld3 As New ShapeField()
shpfld3.Name = "FldLine"
shpfld3.ShapeType = ShapeType.Line
shpfld3.Left = 0
shpfld3.Top = 310
shpfld3.Width = C1FlexReport1.Layout.Width
shpfld3.Height = 20
C1FlexReport1.Sections.Detail.Fields.Add(shpfld3)
C#
// 詳細セクションを作成します
s = c1FlexReport1.Sections[SectionTypeEnum.Detail];
s.Height = 330;
s.Visible = true;
TextField textField = new TextField();
textField.Name = "FldID";
textField.Text.Expression = "EmployeeID";
textField.Left = 0;
textField.Top = 0;
textField.Width = 400;
textField.Height = 300;
c1FlexReport1.Sections.Detail.Fields.Add(textField);
TextField textField1 = new TextField();
textField1.Name = "FldFirstName";
textField1.Text.Expression = "FirstName";
textField1.Left = 500;
textField1.Top = 0;
textField1.Width = 900;
textField1.Height = 300;
c1FlexReport1.Sections.Detail.Fields.Add(textField1);
TextField textField2 = new TextField();
textField2.Name = "FldLastName";
textField2.Text.Expression = "LastName";
textField2.Left = 1500;
textField2.Top = 0;
textField2.Width = 900;
textField2.Height = 300;
c1FlexReport1.Sections.Detail.Fields.Add(textField2);
TextField textField3 = new TextField();
textField3.Name = "FldTitle";
textField3.Text.Expression = "Title";
textField3.Left = 2500;
textField3.Top = 0;
textField3.Width = 2400;
textField3.Height = 300;
c1FlexReport1.Sections.Detail.Fields.Add(textField3);
TextField textField4 = new TextField();
textField4.Name = "FldNotes";
textField4.Text.Expression = "Notes";
textField4.Left = 5000;
textField4.Top = 0;
textField4.Width = 8000;
textField4.Height = 300;
c1FlexReport1.Sections.Detail.Fields.Add(textField4);
textField4.Width = c1FlexReport1.Layout.Width - textField4.Left;
textField4.AutoHeight = AutoSizeBehavior.CanGrow;
textField4.Font.Size = 6;
textField4.Align = FieldAlignEnum.JustTop;
//詳細セクションの各フィールドの後に直線を追加します
ShapeField shpfld3 = new ShapeField();
25
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
shpfld3.Name = "FldLine";
shpfld3.ShapeType = ShapeType.Line;
shpfld3.Left = 0;
shpfld3.Top = 310;
shpfld3.Width = c1FlexReport1.Layout.Width;
shpfld3.Height = 20;
c1FlexReport1.Sections.Detail.Fields.Add(shpfld3);
すべてのテキストフィールドに式が含まれており、各テキストフィールドはソースレコードソース内のフィールド名に対応しています。TextField.Text.Expression プロパ
ティに式を設定することで、Text プロパティは、リテラルとしてレンダリングされるのではなく、データベースのフィールド名として解釈されます。レポートのフィールド名
がレコードセットのフィールド名とは異なる一意の名前となるような命名規則を採用することが重要です。たとえば、「LastName」という名前のフィールドが 2 つあると、
「Left(LastName,1)」のような式はあいまいになります。この例では、レポートのフィールド名はすべて「Fld」で始まるという命名規則を採用しました。
「FldNotes」フィールドは、AutoHeight プロパティが CanGrow に設定され、他のフィールドより小さいフォントが設定されています。これは、データベースの「Notes」
フィールドに長いテキストが含まれていても、レポートに表示されるようにするためです。フィールドの高さを大きく設定して無駄なスペースを作るのではな
く、AutoHeight プロパティを CanGrow に設定して、コンテンツに合わせて必要に応じてフィールドが拡大するようにしています。また、このフィールドを含むセクション
の AutoHeight プロパティも True に設定して、フィールドがセクションからはみ出さないようにしています。
9. これで、レポート定義は完了です。レポートを C1FlexViewer コントロールにレンダリングするには、Employees ボタンをダブルクリックして、btnEmployees_Click イ
ベントにイベントハンドラを追加します。コードエディタが表示され、イベントハンドラ内に挿入ポイントが配置されます。次のコードを入力します。
Visual Basic
RenderEmployees()
C1FlexViewer1.DocumentSource = C1FlexReport1
C#
RenderEmployees();
c1FlexViewer1.DocumentSource = c1FlexReport1;
基本レポートの外観は次のようになります。
手順 2:レポートの修正
:レポートの修正
プレビューモードの FlexReportDesigner では、レポートを調整することはできません。[設計]
[設計]ボタンをクリックしてデザインモードに
切り替え、修正を開始します。メインウィンドウの右ペインがプレビューモードから設計モードに切り替わり、レポートを構成するコント
26
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ロールとフィールドが表示されます。
レポートの修正
この例では、グループヘッダーセクションのサイズ変更、およびフィールド値の書式設定を行います。それには、次の手順に従いま
す。
1. グループヘッダーセクションのサイズを変更するには、境界線を選択し、マウスポインタを使用して目的の位置までドラッグしま
す。
2. マウスポインタでフィールドの角にあるハンドルをドラッグして、フィールドのサイズを変更します。
ヒント
ヒント:テキストがフィールドに収まらない場合は、プロパティペインでフィールドの Appearance.WordWrap プロパティ
を True に設定します。
3. プロパティペインで、Unit Price 列の下にある詳細セクションの UnitPriceCtl フィールドを選択します。
4. フィールドの Appearance.Format プロパティを Currency に設定します。
27
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
5. [プレビュー]
[プレビュー]ボタンをクリックしてプレビューモードに切り替え、修正を確認します。
6. [設計]
[設計]ボタンをクリックして、プレビューモードから設計モードに切り替えます。
7. [ファイル]
[ファイル]メニューをクリックして、表示されるメニューから[名前を付けて保存]
[名前を付けて保存]を選択します。
28
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
8. [レポート定義ファイルの保存]
[レポート定義ファイルの保存]ダイアログボックスで、[ファイル名]
[ファイル名]ボックスに「ProductsReport.flxr」と入力します。後で使
用するために、覚えやすい場所にファイルを保存します。
9. デザイナ
デザイナを閉じて、Visual Studio プロジェクトに戻ります。
これで、レポート定義ファイルを作成できました。次の手順では、C1FlexReport コンポーネントにレポートをロードします。
手順 3::C1FlexReport コンポーネントでのレポートのロード
設計時にファイルからレポート定義をロードするには、次のいずれかのタスクを実行します。
C1FlexReport コンポーネントを右クリックし、[レポートのロード]
[レポートのロード]メニューオプションを選択します。
または
C1FlexReport コンポーネントの上のスマートタグ( )をクリックし、[[C1FlexReport のタスク]
のタスク]メニューから[レポートの
[レポートの
読み込み]
読み込み]を選択します。
[レポートのロード]
[レポートのロード]ダイアログボックスを使用して、必要なレポートを選択するには、次のタスクを実行します。
1. 省略符
省略符ボタンをクリックします。[開く]
[開く]ダイアログボックスが表示されます。
2. ProductsReport.flxr ファイルを保存した場所を参照し、そのファイルを選択して、[開く]
[開く]をクリックします。
3. [レポート]
[レポート]ドロップダウンボックスに有効なレポート定義がリストされます。ロードする[[Products Report]]定義を選択
します。
4. [ロード]
[ロード]をクリックし、[[OK]]をクリックして、ダイアログボックスを閉じます。
29
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次の手順では、レポートをプレビューコントロールにレンダリングします。
手順 4:レポートのレンダリング
:レポートのレンダリング
レポート定義を作成し、データソースを定義して C1FlexReport コンポーネントにロードしたら、レポートをプリンタやプレビュー
コントロール C1FlexViewer にレンダリングしたり、別のファイル形式にエクスポートすることができます。
C1FlexViewer コントロールでレポートをプレビューするには、次の手順に従います。
1.
2.
3.
4.
ツールボックス
ツールボックスから、C1FlexViewer コントロールをダブルクリックしてプロジェクトに追加します。
プロパティウィンドウで、C1FlexViewer.Dock プロパティを Fill に設定します。
マウスで Windows フォームを選択し、ドラッグしてサイズ変更します。
フォームをダブルクリックし、Form_Load イベントハンドラに次のコードを入力します。
Visual Basic
'レポート定義をロードします
C1FlexReport1.Load("..\..\Products Report.flxr", "14a: サブレポート")
'レポートをプレビュー表示します
C1FlexViewer1.DocumentSource = C1FlexReport1
C#
// レポート定義をロードします
c1FlexReport1.Load(@"..\..\Products Report.flxr", "14a: サブレポート");
// レポートをプレビュー表示します
c1FlexViewer1.DocumentSource = c1FlexReport1;
30
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
31
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
設計時サポート
FlexReport for WinForms は、Visual Studio のプロパティグリッド、メニュー、およびデザイナを使用して設計時に簡単に設
定できます。以下のセクションでは、設計時環境を使用して FlexReport と FlexViewer を設定する方法について説明しま
す。
[C1FlexReport のタスク]メニュー
Visual Studio では、C1FlexReport コンポーネントにスマートタグが含まれます。スマートタグは、最もよく使用されるプロパ
ティを提供するショートカットタスクメニューです。
C1FlexReport コンポーネントから、FlexReport ウィザード
ウィザード(まだ作成されていないレポートを定義する)または
FlexReportDesigner(プロジェクトに既に存在するレポートを定義する)にすばやく簡単にアクセスしたり、スマートタグからレ
ポートをロードすることができます。
[C1FlexReport のタスク]
のタスク]メニューにアクセスするには、C1FlexReport コンポーネントの右上隅にあるスマートタグ
クします。
をクリッ
[C1FlexReport のタスク]
のタスク]メニューの機能は次のとおりです。
現在のレポート
ReportName プロパティで指定された現在のレポートの名前を表示します。
レポートのロード
[レポートのロード]
[レポートのロード]をクリックすると、[レポートのロード]
[レポートのロード]ダイアログボックスが表示されます。レポートのロードの詳細
については、「設計時の FlexReport のロード」を参照してください。
レポートの編集
[レポートの編集]
[レポートの編集]をクリックすると、レポート定義がまだ作成されていない場合は FlexReport ウィザード
ウィザードが表示され、
既にレポートが作成されている場合は C1FlexReportDesigner が表示されます。
FlexReport ウィザード
ウィザードの使用方法については、「手順 1/4:レポート定義の作成」を参照してくださ
い。C1FlexReportDesigner の使用方法については、「FlexReportDesigner の操作」を参照してください。
レポートのクリア
C1FlexReport にロードされたレポートをクリアします。[レポートのクリア]をクリックすると、「レポート[レポート名]を本
当にクリアしますか?」と尋ねられます。
バージョン情報
[バージョン情報]
[バージョン情報]をクリックすると、[バージョン情報]
[バージョン情報]ダイアログボックスが表示されます。ここに、C1.Win.FlexReport
のバージョン番号、ライセンス、オンラインリソースに関する情報が表示されます。
32
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
[C1FlexViewer のタスク]メニュー
[C1FlexViewer のタスク]
のタスク]メニューでは、C1FlexViewer コントロールを親コンテナにすばやく簡単にドッキングしたり、[ローカ
[ローカ
ライズ]
ライズ]ダイアログボックスにアクセスすることができます。
[C1FlexViewer のタスク]
のタスク]メニューにアクセスするには、コントロールの右上隅にあるスマートタグ
をクリックします。
[C1FlexViewer のタスク]
のタスク]メニューの機能は次のとおりです。
ローカライズ
[ローカライズ]
[ローカライズ]ボタンをクリックすると、[ローカライズ]
[ローカライズ]ダイアログボックスが表示されます。[ローカライズ]
[ローカライズ]ダイアログ
ボックスで、ローカライズ設定をカスタマイズできます。
C1FlexViewer について
[バージョン情報]
[バージョン情報]をクリックすると、コントロールの[バージョン情報]
[バージョン情報]ダイアログボックスにコントロールのビルドバージョ
ンが表示されます。
親コンテナにドッキングする/親コンテナでドッキングを解除する
[親コンテナにドッキングする]
[親コンテナにドッキングする]をクリックすると、C1FlexViewer の Dock プロパティが Fill に設定されます。
C1FlexViewer が親コンテナにドッキングされている場合は、親コンテナから C1FlexViewer をドッキング解除するオプ
ションを使用できるようになります。[親コンテナでドッキングを解除する]
[親コンテナでドッキングを解除する]をクリックすると、C1FlexViewer の Dock プ
ロパティが None に設定されます。
33
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport の操作
C1FlexReport の主な操作手順は次のとおりです。
1. レポートを作成するには、最初に、FlexReportDesigner アプリケーションを使用してレポート定義を作成します。レ
ポート定義は、.flxr ファイルとして保存されます。レポート定義は、最初から設計することも、既存の Microsoft Access
レポートや Crystal Reports からインポートすることもできます。インポートしたら、デザイナを使用して基本レポートを変
更できます。
2. C1FlexReport コンポーネントは、レポート定義を読み込み、任意の標準 .NET データソースから取得したデータを使
用してレポートをレンダリングします。
3. レポート定義は、設計時にロードしてアプリケーションに埋め込むことも、実行時に読み込んで変更することもできま
す。(C1FlexReport オブジェクトモデルを使用して、最初からレポート定義を作成することもできます。)
4. レポートは、プリンタや C1FlexViewer コントロールに直接レンダリングしたり、さまざまな書式にエクスポートすること
ができます。
次の図は、FlexReport for WinForms パッケージ内のコンポーネント間の関係を示します。
メモ: 太線で囲まれた四角形は、コードコンポーネント(コントロールとアプリケーション)を表します。細線で囲まれた四
角形は、情報を含むファイル(レポート定義、データ、完成したレポート)を表します。
次の各番号は、コンポーネント間の関係を示す図中の矢印の番号を指しています。
1. C1FlexReportDesigner アプリケーションを使用して、FLXR レポート定義ファイルを作成、編集、および保存します。
2. C1FlexReport コンポーネントは、デザイナで作成された FLXR ファイルからレポート定義をロードします。これは、設計
時に行うことも(この場合、FLXR ファイルはコントロールに保持されるため、実行時には不要になります)、実行時に
Load メソッドを使用して行うこともできます。
3. C1FlexReport コンポーネントは、レポート定義ファイルで指定されたデータソースからデータをロードします。または、
独自のカスタムデータソースを提供することもできます。
34
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
4. C1FlexReport コンポーネントは、レポート定義に従ってデータを書式設定し、レポートを (a) プリンタ、(b) プレビューコ
ントロール、(c) またはいくつかのファイル形式の 1 つにレンダリングします。
5. カスタムアプリケーションは、さまざまな機能を持つオブジェクトモデルを使用して C1FlexReport コンポーネントと通信
できるため、レポートを簡単にカスタマイズできます。また、まったく新しいレポートを生成することもできま
す。C1FlexReportDesigner は、このようなアプリケーションの一例です。
メモ
メモ:FlexReport を使用するには、オペレーティングシステムが NT 6.1 コアをサポートする必要があります。した
がって、FlexReport に必要な最小限のサーバー構成は、Windows Server 2008 R2 です。
C1FlexReport と C1Document
C1FlexReport は、C1FlexReport と C1SsrsDocumentSource の基本クラスを公開する C1.Win.C1Document アセンブリ
を使用します。
C1Document::ComponentOne ドキュメントを表します。主な機能は次のとおりです。
ドキュメントを RenderObjects ツリーとして保存します。
ドキュメントのコンテンツをレンダリングします。
テキスト選択範囲を強調表示します。
HitTest などのメソッドを通して、他の要素に対する特定のオブジェクトの位置をチェックします。
C1Document は、WinForms の C1Framework ライブラリに似ています。これは、他のコンポーネントによって使用さ
れるかなり低レベルのユーティリティクラスセットです。現在は、C1SsrsDocumentSource、C1SsrsViewer、および
C1FlexReport によって使用されます。
C1DocumentSource::さまざまなドキュメントタイプとレポートタイプを操作する機能を提供します。これは、
C1Document オブジェクトを構築するための基本クラスです。主な機能は次のとおりです。
ドキュメントを非同期にレンダリングするためのインフラストラクチャを提供します。
ドキュメントの生成時にパラメータをサポートします。
生成されたドキュメント内のテキスト検索をサポートします。
C1FlexReport は、C1DocumentSource から派生しています。C1DocumentSource を使用して、非同期レンダリン
グ、パラメータサポート、およびテキスト検索を提供します。これは、C1FlexReport を他のプラットフォーム(XAML)に移
植しやすいということも意味します。
C1Document の重要な変更点
FlexReport の開発では、C1.Win.C1Document.C1DocumentSource と
C1.Win.C1Document.C1SSRSDocumentSource に重要な変更が行われまし
た。C1.Win.C1Document.C1DocumentSource と C1.Win.C1Document.C1SSRSDocumentSource を使用する際は、
次の重要な変更点に注意してください。
OpenXXX メソッドはすべて削除されました。
public void Open(C1DocumentLocation documentLocation);
public IAsyncActionWithProgress<double> OpenAsyncEx(C1DocumentLocation documentLocation);
public IAsyncActionWithProgress<double> OpenAsyncEx();
public void Open();
public Task OpenAsync();
public Task OpenAsync(C1DocumentLocation documentLocation);
DocumentLocation、ConnectionOptions などの必要なプロパティをすべて定義したら、すぐに
C1SSRSDocumentSource.Generate() を使用できるようになりました。
すべての GenerateXXX メソッドは C1SSRSDocumentSource でしかアクセスできなくなりました。C1DocumentSource
35
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
では、これらは内部的に使用されます。
public void Generate();
public IAsyncActionWithProgress<double> GenerateAsyncEx();
public Task GenerateAsync();
ApplyParameterValuesXXX メソッドと CheckParameterValuesXXX メソッドはすべて削除されました。
public List<ParameterValueError> ApplyParameterValues();
public IAsyncOperationWithProgress<List<ParameterValueError>, double>
ApplyParameterValuesAsyncEx();
public Task<List<ParameterValueError>> ApplyParameterValuesAsync();
public List<ParameterValueError> CheckParameterValues();
public Task<List<ParameterValueError>> CheckParameterValuesAsync();
public IAsyncOperationWithProgress<List<ParameterValueError>, double>
CheckParameterValuesAsyncEx();
代わりに、C1SSRSDocumentSource.ValidateParameters(...) を使用します。パラメータの値は、生成前に自動的
に適用されます。
ExecuteCustomActionXXX、GetPageXXX、GetBookmarkPositionXXX() の各メソッドは、内部的に使用されるようにな
り、アクセスできなくなりました。
public IAsyncOperationWithProgress<C1BookmarkPosition, double>
ExecuteCustomActionAsyncEx(CustomAction action);
public Task<C1BookmarkPosition> ExecuteCustomActionAsync(CustomAction action);
public C1Page GetPage(int pageIndex);
public Task<C1Page> GetPageAsync(int pageIndex);
public IAsyncOperationWithProgress<C1Page, double> GetPageAsyncEx(int pageIndex);
public virtual C1Page GetLoadedPage(int pageIndex);
public bool IsPageLoading(int pageIndex);
public C1BookmarkPosition GetBookmarkPosition(string bookmark);
public IAsyncOperationWithProgress<C1BookmarkPosition, double>
GetBookmarkPositionAsyncEx(string bookmark);
public Task<C1BookmarkPosition> GetBookmarkPositionAsync(string bookmark);
テキスト検索に関連する機能はすべて C1FlexViewer に移行されました。さらに、次のメソッドとプロパティが削除され
ました。
public C1FoundPosition FindTextStart(int startPageIndex, bool wholeDocument, C1FindTextParams
findParams);
public IAsyncOperationWithProgress<C1FoundPosition, double> FindTextStartAsyncEx(int
startPageIndex, bool wholeDocument, C1FindTextParams findParams);
public Task<C1FoundPosition> FindTextStartAsync(int startPageIndex, bool wholeDocument,
C1FindTextParams findParams);
public C1FoundPosition FindTextNext(C1FoundPosition foundPosition);
public IAsyncOperationWithProgress<C1FoundPosition, double>
FindTextNextAsyncEx(C1FoundPosition foundPosition);
public Task<C1FoundPosition> FindTextNextAsync(C1FoundPosition foundPosition);
public C1FoundPosition FindTextPrevious(C1FoundPosition foundPosition);
public IAsyncOperationWithProgress<C1FoundPosition, double>
FindTextPreviousAsyncEx(C1FoundPosition foundPosition);
public Task<C1FoundPosition> FindTextPreviousAsync(C1FoundPosition foundPosition);
public void FindTextReset();
public C1HighlightAttrs FindMatchHighlight { get; set; }
public C1HighlightAttrs ActiveFindMatchHighlight { get; set; }
public IList<C1FoundPosition> FoundPositions { get; }
public C1FoundPosition ActiveFoundPosition { get; set; }
次のプロパティは削除されました(テキスト選択機能はビューアに移行されました)。
public C1DocumentRange SelectedRange { get; set; }
public C1HighlightAttrs SelectionHighlight { get; set; }
プロパティ C1DocumentSource.State { get; set; } と列挙 C1DocumentSourceState は削除されました。
代わりに C1DocumentSource.BusyState プロパティを次のように使用します。
public C1DocumentSourceBusyState BusyState { get; }
36
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
// 概要:
// C1DocumentSource オブジェクトのビジー状態を記述します。
public enum C1DocumentSourceBusyState
{
// 概要:
// ドキュメントは準備できています(ビジー状態ではない)。
Ready,
// 概要:
// ドキュメントを生成中です。
Generating,
// 概要:
// ドキュメントをエクスポート中です。
Exporting,
// 概要:
// ドキュメントを印刷中です。
Printing
}
C1DocumentSource の現在の状態を特定するには、次のプロパティを使用できます。
// 概要:
// 現在の C1DocumentSource がビジーかどうかを示す値を取得します。
public bool IsBusy { get; }
// 概要:
// この C1DocumentSource が破棄されて使用できない状態かどうかを示す値を取得します。
public bool IsDisposed { get; }
次のイベントは削除されました。
event EventHandler<ExecuteCustomActionCompletedEventArgs> ExecuteCustomActionCompleted;
event EventHandler<GetPageCompletedEventArgs> GetPageCompleted;
event EventHandler<GetLinkTargetPositionCompletedEventArgs> GetLinkTargetPositionCompleted;
event EventHandler PagesClear;
次のイベントは C1SSRSDocumentSource に移行されました。
event EventHandler<AsyncCompletedEventArgs> GenerateCompleted;
event EventHandler<ValidateParametersCompletedEventArgs> ValidateParametersCompleted;
event EventHandler<ExportCompletedEventArgs> ExportCompleted;
次のメソッドは、C1SSRSDocumentSource() からのみアクセスできます。
public void Clear();
public void Cancel();
ApplyParameterValues と CheckParameterValues に代わり、ValidateParameterXXX メソッドが追加されました。
public List<ParameterValidationError> ValidateParameters();
非同期バージョン
public new IAsyncOperationWithProgress<List<ParameterValidationError>, double>
ValidateParametersAsyncEx();
public Task<List<ParameterValidationError>> ValidateParametersAsync();
これらのメソッドは現在のパラメータ値を検証し、値が有効な場合は、有効な値のリストを更新します。レポートの生成
が開始されると、これらのパラメータ値が自動的に適用されるようになりました。
FlexReport のデータ連結
FlexReport でレポートを作成するには、レポート定義の他に実際のデータが必要です。通常は、データベースからデータを取
得しますが、他の場所から取得することもできます。以下のトピックでは、他のソースからデータを取得する方法を確認します。
37
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
データベースからのデータの取得
FlexReport でレポートデータを取得またはロードするには、C1FlexReport の以下の DataSource プロパティを設定する必要
があります。
ConnectionString
RecordSource
データソースを設定するには
Visual Basic
'データソースを初期化します
Dim ds As DataSource = C1FlexReport1.DataSource
ds.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\...\ComponentOne Samples\Common\C1Nwind.mdb;"
ds.RecordSource = "Employees"
C#
//データソースを初期化します
DataSource ds = c1FlexReport1.DataSource;
ds.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=C:\...\ComponentOne Samples\Common\C1NWind.mdb;";
ds.RecordSource = "Employees";
これらのプロパティを設定すると、C1FlexReport はデータソースを初期化し、これを使用してデータベースから自動的にデータ
をロードします。これは、「手順 1/4:レポート定義の作成」で説明するコードまたはデザイナを使用したデータソースの初期化
と同じです。
ストアドプロシージャからのデータの取得
ストアドプロシージャ(sproc)は、複数のアプリケーションにまたがるロジックの一貫した実装に役立つほか、パフォーマンスを
向上させ、ユーザーがデータベース内のテーブルの詳細を知る必要をなくします。ストアドプロシージャの大きな利点の 1 つ
は、データベースがレコードセットをフィルタ処理するためのパラメータを渡すことができることです。これにより、返されるデー
タセットが少量になるので、レポートをより速くより簡単に操作できます。
C1FlexReport ウィザード
ウィザードでは、ストアドプロシージャからレポートにデータを挿入できます。C1FlexReport ウィザード
ウィザードを開くに
は、次のいずれかを実行します。
Visual Studio で、C1FlexReport コンテキストメニューの[レポートの編集]
[レポートの編集]を選択します。
Visual Studio で、[[C1FlexReport のタスク]
のタスク]メニューの[レポートの編集]
[レポートの編集]を選択します。
C1FlexReportDesigner アプリケーションで、[レポート]
[レポート]タブの[新しいレポート]
[新しいレポート]ボタンをクリックします。
ストアドプロシージャによるレポートへのデータの挿入は、SQL 文や直接テーブルを使用する方法と違いがありませ
ん。C1FlexReport ウィザード
ウィザードの最初の画面で、省略符
省略符ボタンをクリックしてデータソースを選択します。次に、有効なデータ
ソースのリストから[ストアドプロシージャ]
[ストアドプロシージャ]を選択します。
38
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
[次へ]
[次へ]を選択し、ウィザードを続行します。
他の形式のデータのロードと同様に、次の 2 つのオプションがあります。
DataSource の ConnectionString プロパティと RecordSource プロパティを使用してデータソースを選択できます。
デザイナで、(省略符[...]ボタンをクリックして)DataSource ダイアログボックスを使用して接続文字列を選択し、使用
するテーブルまたは sproc をリストから選択します。次に例を示します。
connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Windows
8.1\Documents\ComponentOne Samples\Common\C1NWind.mdb;Persist Security
Info=False;" RecordSource = "[Products by Category]"
(この例では、ストアドプロシージャ名にスペースが含まれているため、それが角かっこで囲まれています。)
任意の方法でデータソースを作成し、それを DataSource の Recordset プロパティに割り当てることができます。
この方法では、コードを記述する必要がありますが、どこかにデータがキャッシュされており、それを使用して複数のレ
ポートを作成する場合に役立ちます。これは、上記の方法より優先されます
(ConnectionString、RecordSource、Recordset をすべて指定した場合、C1FlexReport は Recordset を使用しま
す)。
使用する接続/アダプタのタイプ(OleDb、SQL、Oracle など)によって構文は異なります。簡単に正しい構文を使用する
には、Visual Studio のサーバーエクスプローラーからフォームにテーブルまたは sproc をドラッグします。これで、すべ
ての必要な要素が正しく追加されるので、コードを調べて重要な部分を確認できます。
ストアドプロシージャは、その名前を指定することでデータソースとして使用できます。sproc にパラメータがある場合
は、名前をパラメータとして渡します。たとえば、MSSQL と ADVENTURE_WORKS.mdf データベースに基づいて構築さ
れたレポート定義において、C1FlexReportDesigner で指定された SQL 要求は次のとおりです
39
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
(ADVENTUREWORKS_DATA.MDF のパスは適宜調整が必要)。
PARAMETERS Employee Int 290;
DECLARE @RC int
DECLARE @EmployeeID int
set @EmployeeID = [Empoyee]
EXECUTE @RC = [C:\ADVENTUREWORKS_DATA.MDF].[dbo].[uspGetEmployeeManagers]
@EmployeeID
データテーブルオブジェクトをデータソースとして使用
C1FlexReport の外部にあるデータを操作し、それを DataTable オブジェクトにロードしなければならないアプリケーションは
よくあります。このような場合は、DataTable オブジェクトをレポートデータソースとして使用して、レポートのレンダリング時に
データを再ロードする無駄を省くことができます。
この方法は、次のようなアプリケーションでも役立ちます。
セキュリティ制限により、接続文字列を非公開にする必要があり、データだけ(ソースではなく)を公開できる場合。
データベースが OleDb(C1FlexReport で内部的に使用されるプロバイダ)によってサポートされていない場合。
データをデータベース以外から取得する場合。代わりに、DataTable を作成し、カスタムコードを使用してデータを挿入
します。
DataTable オブジェクトを C1FlexReport のデータソースとして使用するには、レポート定義をロードし、DataTable を
C1FlexReport.DataSource.Recordset プロパティに割り当てるだけです。次に例を示します。
Visual Basic
' キャッシュまたはセキュリティで保護されたカスタムプロバイダから DataTable をロードします
Dim dt As DataTable = GetMyDataTable()
' レポート定義をロードします(データソースを設定する前)
C1FlexReport1.Load(@"reportFile", "reportName")
' DataTable をデータソースとして使用します
C1FlexReport1.DataSource.Recordset = dt
C#
// キャッシュまたはセキュリティで保護されたカスタムプロバイダから DataTable をロードします
DataTable dt = GetMyDataTable();
// レポート定義をロードします(データソースを設定する前)
c1FlexReport1.Load(@"reportFile", "reportName");
// DataTable をデータソースとして使用します
c1FlexReport1.DataSource.Recordset = dt;
カスタムデータソースオブジェクトの使用
カスタムオブジェクトをデータソースとして使用できます。必要な条件は、カスタムオブジェクトが IC1FlexReportRecordset イ
ンタフェースを実装することだけです。
IC1FlexReportRecordset は、事実上どのようなデータの集合にも簡単に追加できる簡潔で実装しやすいインタフェースで
す。これは、DataTable オブジェクトを作成し、それにすべてのデータをコピーする方法より効率的であることが多くあります。
たとえば、カスタムデータソースオブジェクトを使用して、ファイルシステムやカスタム .xml ファイルまたはカスタム .flxr ファイ
40
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ルをラップできます。
カスタムデータソースオブジェクトを使用するには、レポート定義をロードし、そのオブジェクトを C1FlexReport の Recordset
プロパティに割り当てます。次に例を示します。
Visual Basic
' カスタムデータソースオブジェクトを取得します
Dim rs As IC1FlexReportRecordset = CType(GetMyCustomDataSource(),
IC1FlexReportRecordset)
' レポート定義をロードします(データソースを設定する前)
C1FlexReport1.Load(@"reportFile", "reportName")
' C1FlexReport コンポーネントでカスタムデータソースオブジェクトを使用します
C1FlexReport1.DataSource.Recordset = rs
C#
// カスタムデータソースオブジェクトを取得します
IC1FlexReportRecordset rs =
(IC1FlexReportRecordset)GetMyCustomDataSource();
// レポート定義をロードします(データソースを設定する前)
c1FlexReport1.Load(@"reportFile", "reportName");
// C1FlexReport コンポーネントでカスタムデータソースオブジェクトを使用します
c1FlexReport1.DataSource.Recordset = rs;
FlexReport のデータソース
FlexReport 定義には複数のデータソースを設定でき、これらのデータソースには C1FlexReport.DataSources コレクション
からアクセスできます。このコレクション内のデータソースは、一意の名前で識別されます。これらのデータソースは次のように
使用できます。
メインデータソース:
メインデータソース:これはレポートのメインデータソースです。メインデータソースは、レポートの
C1FlexReport.DataSourceName プロパティを使用して指定します。メインデータソースが指定されていない場合
(DataSourceName が空、または DataSources コレクションにない名前が指定されている)、C1FlexReport は非連結
モードでレンダリングされ、詳細セクションが 1 つだけ含まれます。
パラメータ用のデータソース:
パラメータ用のデータソース:これは、レポートパラメータ(C1FlexReport.Parameters コレクション内の要素)として有
効な値のソースです。パラメータ用のデータソース
は、ReportParameter.AllowedValuesDefinition.Binding.DataSourceName プロパティを使用して指定します。
チャート用のデータソース:
チャート用のデータソース:これは、チャートフィールド用のデータソースです。チャート用のデータソース
は、ChartField.DataSource プロパティを使用して指定します。
C1Report との下位互換性のため、C1FlexReport には DataSources[DataSourceName] を指す DataSource プロパティがあ
ります。新しい C1FlexReport を作成すると、「Main」という名前の 1 つの要素が C1FlexReport.DataSources コレクションに
追加され、「Main」が C1FlexReport.DataSourceName プロパティに割り当てられます。
C1Report では、メインデータソースがレポートの唯一のデータソースです。
コードを使用した複数のデータソースへの接続
「FlexReport クイックスタート」では、メインデータソースに連結されるレポートの作成方法を学習しました。1 つのレポートが複
41
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
数のデータソースを持つことができるため、チャートやパラメータを使用しながら、これらのデータソースへの接続方法につい
て学習する必要があります。
以下のセクションでは、複数のデータソースを使用するレポートで、チャートやパラメータにデータを連結する方法について説
明します。
複数データソースレポートでのチャートへのデータの連結
レポートにチャート
チャートフィールドを追加する際は、最初の手順としてチャートをデータソースに連結します。
たとえば、レポートに「Employees」と「Products」という 2 つのデータソースがあるとします。Employees データソースの
FullName と Age を表示するチャートと、Products データソースの CategoryName と Sum(UnitsInStock) を表示するチャート
の 2 つを作成します。
次の手順で、このシナリオを実現できます。
1.
2.
3.
4.
レポートで 2 つのデータソース「Employees」と「Products」を作成します。
Employees データソースで 2 つの計算フィールド「FullName」と「Age」を定義します。
Products データソースで 2 つの計算フィールド「CategoryName」と「Sum(UnitsInStock)」を定義します。
Employees データソースと Products データソースに個別に連結する 2 つのチャートフィールドを作成します。
そのためのコード例を次に示します。
Visual Basic
Private report As C1FlexReport
Private Function CreateChartSampleReport() As C1FlexReport
report = New C1FlexReport() With { _
.ReportName = "ChartSample" _
}
' データソース Employees を追加します
Dim dsEmployees = New DataSource() With { _
.Name = "Employees", _
.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=..\..\Reports\C1Nwind.mdb;Persist Security Info=False", _
.RecordSource = "Select * from Employees" _
}
report.DataSources.Add(dsEmployees)
' 計算フィールド FullName を追加します。
Dim calcFullName = New CalculatedField("FullName",
GetType(String), "=LastName & "" "" & FirstName")
dsEmployees.CalculatedFields.Add(calcFullName)
' 計算フィールド Age を追加します。
Dim calcAge = New CalculatedField("Age", GetType(Integer),
"=Year(Now())-Year(BirthDate) + 1")
dsEmployees.CalculatedFields.Add(calcAge)
' データソース Products を追加します
Dim dsProducts = New DataSource() With { _
.Name = "Products", _
.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=..\..\Reports\C1Nwind.mdb;Persist Security Info=False", _
.RecordSource = "Select Products.CategoryID as
CategoryID, Categories.CategoryName as CategoryName,
42
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Products.UnitsInStock as UnitsInStock from Products inner join
Categories on Products.CategoryID = Categories.CategoryID" _
}
report.DataSources.Add(dsProducts)
report.Sections.Header.Visible = True
' Employees データソースを使用するチャートフィールドを追加します。
Dim sectionEmployees =
report.Sections.Header.SubSections.Add()
sectionEmployees.Name = "ChartWithEmployees"
sectionEmployees.Height = 5200
sectionEmployees.Visible = True
sectionEmployees.Fields.Add(CreateChartForEmployees())
' Products データソースを使用するチャートフィールドを追加します。
Dim sectionProducts =
report.Sections.Header.SubSections.Add()
sectionProducts.Name = "ChartWithProducts"
sectionProducts.Height = 5200
sectionProducts.Visible = True
sectionProducts.Fields.Add(CreateChartForProducts())
Return report
End Function
Private Function CreateChartForEmployees() As ChartField
Dim chart = CreateChartField("Chart1", "Employees")
chart.Header.Text = "Employees Age"
chart.ChartArea2D.Inverted = True
chart.ChartArea2D.AxisX.OnTop = True
Dim group = chart.ChartGroups2D.Group0
group.ChartType = Chart2DType.Bar
Dim data = group.ChartData
data.IsForEachRecord = True
' データソースの各レコードの値を
表示します
data.CategoryGroups.AddNewGroup("=FullName")
'
FullName でグループ化します
Dim seriesTemplate = data.SeriesValues.AddNewSeries()
seriesTemplate.DataValues.AddNewValue("=Age")
' Y 軸
に Age を表示します
Return chart
End Function
Private Function CreateChartForProducts() As ChartField
Dim chart = CreateChartField("Chart2", "Products")
chart.Header.Text = "Sum of UnitsInStock by Category"
chart.ChartArea2D.Inverted = True
chart.ChartArea2D.AxisX.OnTop = True
Dim group = chart.ChartGroups2D.Group0
group.ChartType = Chart2DType.Bar
Dim data = group.ChartData
Dim categoryGroup =
data.CategoryGroups.AddNewGroup("=CategoryID")
' CategoryID でグループ化します
categoryGroup.LabelExpression = "=CategoryName" ' X 軸に
CategoryName を表示します
Dim seriesTemplate = data.SeriesValues.AddNewSeries()
43
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
seriesTemplate.DataValues.AddNewValue("=Sum(UnitsInStock)")
' X 軸に UnitsInStock の合計を表示します
Return chart
End Function
Private Function CreateChartField(name As String, datasource As
String) As ChartField
Dim chart = New ChartField() With { _
.Name = name, _
.Width = 7500, _
.Height = 5000, _
.Top = 100, _
.Left = 100, _
.DataSource = datasource _
}
chart.Border.Color = Color.Black
chart.Border.Width = 15
chart.Border.Style = DashStyle.Solid
chart.Border.CornerRadius = New CornerRadius(200.0)
chart.ChartArea2D.AxisY.AutoMin = False
Return chart
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs)
Handles Button1.Click
CreateChartSampleReport()
C1FlexViewer1.DocumentSource = report
End Sub
C#
private C1FlexReport CreateChartSampleReport()
{
var report = new C1FlexReport { ReportName =
"ChartSample" };
// データソース Employees を追加します
var dsEmployees = new DataSource
{
Name = "Employees",
ConnectionString =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=..\..\Reports\C1Nwind.mdb;Persist Security Info=False",
RecordSource = "Select * from Employees",
};
report.DataSources.Add(dsEmployees);
// 計算フィールド FullName を追加します。
var calcFullName = new CalculatedField("FullName",
typeof(string), "=LastName & \" \" & FirstName");
dsEmployees.CalculatedFields.Add(calcFullName);
// 計算フィールド Age を追加します。
var calcAge = new CalculatedField("Age", typeof(int),
"=Year(Now())-Year(BirthDate) + 1");
dsEmployees.CalculatedFields.Add(calcAge);
44
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
// データソース Products を追加します
var dsProducts = new DataSource
{
Name = "Products",
ConnectionString =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=..\..\Reports\C1Nwind.mdb;Persist Security Info=False",
RecordSource =
"Select Products.CategoryID as CategoryID,
Categories.CategoryName as CategoryName, Products.UnitsInStock as
UnitsInStock from Products inner join Categories on
Products.CategoryID = Categories.CategoryID"
};
report.DataSources.Add(dsProducts);
report.Sections.Header.Visible = true;
// Employees データソースを使用するチャートフィールドを追加します。
var sectionEmployees =
report.Sections.Header.SubSections.Add();
sectionEmployees.Name = "ChartWithEmployees";
sectionEmployees.Height = 5200;
sectionEmployees.Visible = true;
sectionEmployees.Fields.Add(CreateChartForEmployees());
// Products データソースを使用するチャートフィールドを追加します。
var sectionProducts =
report.Sections.Header.SubSections.Add();
sectionProducts.Name = "ChartWithProducts";
sectionProducts.Height = 5200;
sectionProducts.Visible = true;
sectionProducts.Fields.Add(CreateChartForProducts());
return report;
}
private ChartField CreateChartForEmployees()
{
var chart = CreateChartField("Chart1", "Employees");
chart.Header.Text = "Employees Age";
chart.ChartArea2D.Inverted = true;
chart.ChartArea2D.AxisX.OnTop = true;
var group = chart.ChartGroups2D.Group0;
group.ChartType = Chart2DType.Bar;
var data = group.ChartData;
data.IsForEachRecord = true; // データソースの各レコードの値を
表示します
data.CategoryGroups.AddNewGroup("=FullName"); //
FullName でグループ化します
var seriesTemplate = data.SeriesValues.AddNewSeries();
seriesTemplate.DataValues.AddNewValue("=Age"); // X 軸に
Age を表示します
return chart;
}
private ChartField CreateChartForProducts()
45
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
{
var chart = CreateChartField("Chart2", "Products");
chart.Header.Text = "Sum of UnitsInStock by Category";
chart.ChartArea2D.Inverted = true;
chart.ChartArea2D.AxisX.OnTop = true;
var group = chart.ChartGroups2D.Group0;
group.ChartType = Chart2DType.Bar;
var data = group.ChartData;
var categoryGroup =
data.CategoryGroups.AddNewGroup("=CategoryID"); // CategoryID でグ
ループ化します
categoryGroup.LabelExpression = "=CategoryName"; // X 軸
に CategoryName を表示します。
var seriesTemplate = data.SeriesValues.AddNewSeries();
seriesTemplate.DataValues.AddNewValue("=Sum(UnitsInStock)"); // X 軸
に UnitsInStock の合計を表示します。
return chart;
}
private ChartField CreateChartField(string name, string
datasource)
{
var chart = new ChartField
{
Name = name,
Width = 7500,
Height = 5000,
Top = 100,
Left = 100,
DataSource = datasource,
};
chart.Border.Color = Color.Black;
chart.Border.Width = 15;
chart.Border.Style = DashStyle.Solid;
chart.Border.CornerRadius = new CornerRadius(200d);
chart.ChartArea2D.AxisY.AutoMin = false;
return chart;
}
private void button1_Click(object sender, EventArgs e)
{
CreateChartSampleReport();
c1FlexViewer1.DocumentSource = report;
}
46
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
複数データソースレポートでのパラメータへのデータの連結
パラメータにデータを連結することで、レポートパラメータ(C1FlexReport.Parameters コレクション内の要素)に対して有効な
値が定義できます。ReportParameter.AllowedValuesDefinition.Binding.DataSourceName プロパティは、有効なパラ
メータ値のリストを作成するために使用されるデータソースを示します。次のコード例は、複数のデータソースを含むレポートの
パラメータにデータを連結する方法を示します。
Visual Basic
' データソースおよびこのデータソースを使用するパラメータを追加します
Dim mds As DataSource = C1FlexReport.DataSource
Dim ds As New DataSource()
47
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ds.Name = "CategoriesDS"
ds.ConnectionString = mds.ConnectionString
ds.RecordSource = "select * from categories"
ds.DataProvider = DataProvider.OLEDB
C1FlexReport.DataSources.Add(ds)
mds.RecordSource = "select * from products where categoryid =
[CategoryParam]"
Dim rp As New ReportParameter()
rp.DataType = Doc.ParameterType.[Integer]
rp.Prompt = "Category"
rp.Name = "CategoryParam"
rp.AllowedValuesDefinition.Binding.DataSourceName = "CategoriesDS"
rp.AllowedValuesDefinition.Binding.ValueExpression = "CategoryID"
rp.AllowedValuesDefinition.Binding.LabelExpression = "CategoryName"
C1FlexReport.Parameters.Add(rp)
C#
// データソースおよびこのデータソースを使用するパラメータを追加します
DataSource mds = c1FlexReport.DataSource;
DataSource ds = new DataSource();
ds.Name = "CategoriesDS";
ds.ConnectionString = mds.ConnectionString;
ds.RecordSource = "select * from categories";
ds.DataProvider = DataProvider.OLEDB;
c1FlexReport.DataSources.Add(ds);
mds.RecordSource = "select * from products where categoryid =
[CategoryParam]";
ReportParameter rp = new ReportParameter();
rp.DataType = Doc.ParameterType.Integer;
rp.Prompt = "Category";
rp.Name = "CategoryParam";
rp.AllowedValuesDefinition.Binding.DataSourceName = "CategoriesDS";
rp.AllowedValuesDefinition.Binding.ValueExpression = "CategoryID";
rp.AllowedValuesDefinition.Binding.LabelExpression = "CategoryName";
c1FlexReport.Parameters.Add(rp);
計算フィールドの定義
計算
計算フィールドには、実行時に評価される式が設定されます。計算フィールドは、DataSource.CalculatedFields.Add メソッド
を使用してデータソースに追加できます。
たとえば、「CategoryID * 2」を計算する整数型の計算フィールド「Calc1」を追加するコードは、次のようになります。
Visual Basic
Dim ds As DataSource = C1FlexReport1.DataSources(0)
ds.CalculatedFields.Add(New CalculatedField("Calc1", GetType(Integer),
"CategoryID * 2"))
C#
DataSource ds = c1FlexReport1.DataSources[0];
48
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ds.CalculatedFields.Add(new CalculatedField("Calc1", typeof(int),
"CategoryID * 2"));
複数の計算フィールドがある場合、それらは一意の名前を持つ必要があります。
デスクトップ用 FlexReport の開発
一般的なデスクトップ環境では、レポートを生成および表示するコンピュータと同じコンピュータで C1FlexReport を実行しま
す。その場合でも、レポートのデータ自体は、リモートサーバーから取得されることがあります。次のセクションでは、
FlexReport が Visual Studio 環境でホストされているとします。
設計時の FlexReport のロード
この例では、アプリケーションに組み込まれている所定のレポート定義セットを使用してレポートを生成します。このようなアプ
リケーションは、外部のレポート定義ファイルに依存しません。また、エンドユーザーはこのようなレポートを変更できません。
このようなアプリケーションの主な長所は、レポート定義ファイルを配布する必要がないことと、レポートの形式を変更されない
ようにできることです。短所は、アプリケーションを再コンパイルしないとレポートを変更できないことです。
既存のレポート定義を変更することなく使用する場合は、次の手順に従います。
1. 配布するレポート定義ごとに C1FlexReport コンポーネントを 1 つ追加します。各コントロールに、レンダリングするレ
ポートに応じた名前を付けると、コードの保守が容易になります。
2. 各 C1FlexReport コンポーネントを右クリックし、[レポートのロード]
[レポートのロード]メニューオプションを選択して、各コントロールにレ
ポート定義をロードします。コンポーネントの上にあるスマートタグ( )をクリックして[[C1FlexReport のタスク]
のタスク]メニュー
を開き、[レポートのロード]
[レポートのロード]オプションを選択することもできます。
[レポートのロード]
[レポートのロード]ダイアログボックスが表示されるので、レポート定義ファイルを選択し、さらにそのファイル内のレ
ポートを選択します。
レポートをロードするには、省略符
省略符ボタンをクリックし、手順 1 で作成したレポート定義ファイルを選択します。次に、ド
ロップダウンリストからレポートを選択し、[[OK]]をクリックします。[レポートのロード]
[レポートのロード]ダイアログボックスに、選択したレ
ポート名、グループ数、セクション数、およびフィールド数が表示されます。ダイアログボックスは、次のように表示され
ます。
3. フォームに C1FlexViewer コントロールを追加します。また、ユーザーがレポートを選択できるようにするためのコント
ロール(メニュー、リストボックス、ボタングループなど)も追加します。
4. ユーザーが選択したレポートをレンダリングするためのコードを追加します。たとえば、前の手順で
btnProductsReport という名前のボタンを追加した場合は、次のようなコードを追加します。
Visual Basic
Private Sub btnProductsReport_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnProductsReport.Click
49
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
c1FlexViewer1.DocumentSource =rptProducts
End Sub
C#
private void btnProductsReport_Click(object sender, System.EventArgs
e)
{
c1FlexViewer1.DocumentSource =rptProducts;
}
rptProducts は、ユーザーが選択したレポートを含む C1FlexReport コンポーネントの名前、c1FlexViewer1
は、C1FlexViewer コントロールの名前です。
設計時の FlexReport の作成
「設計時の FlexReport のロード」で説明されている[レポートのロード]
[レポートのロード]を使用すると、既存のレポートを簡単にアプリケーショ
ンに埋め込むことができます。ただし、レポートをカスタマイズする場合や、接続文字列とレコードソースを使用する代わりに、
Visual Studio アプリケーションでデータソースオブジェクトを定義して使用する場合もあります。このような場合は、代わり
に[レポートの編集]
[レポートの編集]コマンドを使用します。
設計時にレポートを作成または編集するには、C1FlexReport コンポーネントを右クリックし、[レポートの編集]
[レポートの編集]メニューオプショ
ンを選択して、C1FlexReportDesigner アプリケーションを呼び出します。コンポーネントの上にあるスマートタグ( )をクリッ
クして[[C1FlexReport のタスク]
のタスク]メニューを開き、[レポートの編集]
[レポートの編集]オプションを選択することもできます。
メモ: コンテキストメニューやプロパティウィンドウに[レポートの編集]
[レポートの編集]コマンドが表示されていない場合は、コントロール
が C1FlexReportDesigner アプリケーションを見つけることができなかった可能性があります。この場合
は、C1FlexReportDesigner アプリケーションをスタンドアロンモードで一度実行します。Designer の場所がレジストリ
に保存されるため、これで C1FlexReport コンポーネントが Designer を検出できるようになります。
C1FlexReportDesigner アプリケーションは、C1FlexReport コンポーネントに現在ロードされているレポートを表示します。
C1FlexReport コンポーネントが空の場合は、C1FlexReport ウィザード
ウィザードが表示され、ここで新しいレポートを作成できます。
これは、スタンドアロンモードで使用される C1FlexReportDesigner アプリケーションと同じです。C1FlexReportDesigner ア
プリケーションをこのモードで開始した場合は、次の点だけが異なります。
現在のアプリケーションで定義したデータソースオブジェクトを新しいレポートのデータソースとして使用できます。
デザイナを閉じると、行った変更がフォームの C1FlexReport コンポーネントに保存されます(変更を破棄するには、デ
ザイナのメニューから[ファイル]
[ファイル]→[終了]
[終了]を選択し、変更の保存に対して[いいえ]
[いいえ]を選択します)。
現在のアプリケーションで定義したデータソースオブジェクトを使用するには、デザイナの[データソース]
[データソース]ボタンをクリック
し、[データソースの選択]
[データソースの選択]ダイアログボックスで[テーブル]
[テーブル]オプションを選択します。
フォームに現在定義されているデータオブジェクトのリストが[テーブル]
[テーブル]ページに表示されます(フォームに有効なデータソー
スがない場合、このページは表示されません)。または、通常どおり、[[Connection string]]を使用して、接続文字列とレコー
ドソースを作成して選択できます。
たとえば、メインフォームに DataSet オブジェクトとこれにアタッチされた複数の DataTable が含まれる場合、データソース選
択ダイアログボックスは次のように表示されます。
50
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
レポートの作成または編集が完了したら、メニューから[ファイル]
[ファイル]→[保存]
[保存]または[ファイル]
[ファイル]→[終了]
[終了]を選択してデザイナを閉
じることができます。これにより、レポート定義が直接コンポーネントに保存されます([レポートのロード]
[レポートのロード]コマンドを使用して
ファイルからレポート定義をロードした場合と同様)。
変更をキャンセルする場合は、メニューから[ファイル]
[ファイル]→[終了]
[終了]を選択し、[いいえ]
[いいえ]を選択して、変更を保存しないでデザイナ
を終了します。
実行時の FlexReport のロード
実行時にレポートをロードするには、レポート定義ファイルとビューアが必要です。このようなアプリケーションの主な長所は、レポート
形式を変更しても、アプリケーションを更新する必要がないことです。新しいレポート定義ファイルをユーザーに送るだけで済みます。
実行時にロードされるレポートを備えたアプリケーションを作成するには、次の手順に従います。
1. C1FlexReportDesigner アプリケーションで、必要なレポートをすべて作成します。詳細については、「C1FlexReportDesigner
の操作」を参照してください。
2. 次のコントロールをアプリケーションに追加します。
c1FlexReport1 という名前の C1FlexReport コンポーネント
fv という名前の C1FlexViewer コントロール
cmbReport という名前の ComboBox コントロール
button1 という名前の Button コントロール
3. 次の Import 文をファイルの先頭に追加します。
Visual Basic
Imports C1.Win.FlexReport
Imports System.IO
C#
using C1.Win.FlexReport;
using System.IO;
51
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
これにより、完全名前空間を指定しなくても、C1FlexReport と System.IO のクラスとオブジェクトを参照できます。
4. レポート定義ファイルを読み取り、すべてのレポートのリストを構築するために、次のコードをボタンクリックイベントに追加しま
す。
Visual Basic
Private Sub button1_Click(sender As Object, e As EventArgs)
' アプリケーションパスを取得します
Dim appPath As String
appPath =
Path.GetDirectoryName(Application.ExecutablePath).ToLower()
Dim i As Integer = appPath.IndexOf("/bin")
If (i < 0) Then
i = appPath.IndexOf(vbBack & "in")
End If
If (i > 0) Then
appPath = appPath.Remove(i, appPath.Length - i)
End If
' レポート定義ファイルからレポートの名前を取得します
m_ReportDefinitionFile = appPath & "\Data\Nwind.xml"
Dim reports As String() =
C1FlexReport.GetReportList(m_ReportDefinitionFile)
' コンボボックスにデータを設定します
cmbReport.Items.Clear()
For Each report As String In reports
cmbReport.Items.Add(report)
Next
End Sub
C#
private void button1_Click(object sender, EventArgs e)
{
// アプリケーションパスを取得します
string appPath;
appPath =
Path.GetDirectoryName(Application.ExecutablePath).ToLower();
int i = appPath.IndexOf("/bin");
if ((i < 0)) { i = appPath.IndexOf("\bin"); }
if ((i > 0)) { appPath = appPath.Remove(i, appPath.Length i); }
// レポート定義ファイルからレポートの名前を取得します
m_ReportDefinitionFile = appPath + @"\Data\Nwind.xml";
string[] reports =
C1FlexReport.GetReportList(m_ReportDefinitionFile);
// コンボボックスにデータを設定します
cmbReport.Items.Clear();
foreach (string report in reports)
{
cmbReport.Items.Add(report);
}
52
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
}
このコードは、最初に、レポート定義が格納されているファイルの場所を取得します。それには、システム定義の Path クラスと
Application クラスの静的メソッドを使用します。レポート定義ファイルの場所と名前に合わせてコードを調整してください。
次に、GetReportList メソッドを使用してレポート定義ファイル(手順 1 で作成)内のすべてのレポート名を含む配列を取得し、
ユーザーがレポートを選択するためのコンボボックスにレポート名を挿入します。
5. ユーザーが選択したレポートをレンダリングするためのコードを追加します。次に例を示します。
Visual Basic
Private Sub cmbReport_SelectedIndexChanged(ByVal sender As Object, ByVal
e As EventArgs) Handles cmbReport.SelectedIndexChanged
Try
Cursor = Cursors.WaitCursor
' レポートをロードします
fv.StatusText = "Loading " & cmbReport.Text
c1FlexReport1.Load(m_ReportDefinitionFile, cmbReport.Text)
' flexviewer コントロールにレンダリングします
fv.StatusText = "Rendering " & cmbReport.Text
fv.DocumentSource = c1FlexReport1
' flexviewer コントロールにフォーカスを設定します
fv.StartPage = 0
fv.Focus()
Finally
Cursor = Cursors.Default
End Try
End Sub
C#
private void cmbReport_SelectedIndexChanged(object sender,
System.EventArgs e)
{
try
{
Cursor = Cursors.WaitCursor;
// レポートをロードします
fv.StatusText = "Loading " + cmbReport.Text;
c1FlexReport1.Load(m_ReportDefinitionFile,
cmbReport.Text);
// flexviewer コントロールにレンダリングします
fv.StatusText = "Rendering " + cmbReport.Text;
fv.DocumentSource = c1FlexReport1;
// flexviewer コントロールにフォーカスを設定します
fv.Focus();
}
finally
{
Cursor = Cursors.Default;
}
}
6. プロジェクトを実行します。
53
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
パラメータの追加
パラメータは、どのようなレポートでも重要な要素です。パラメータは、レポートに渡されたデータを操作することで、挿入される
データに影響を及ぼします。パラメータを使用して、データのデフォルト値を変更したり、データにフィルタを適用することができ
ます。また、複数値パラメータを使用して、複数の値を選択することもできます。
FlexReport のパラメータコレクション C1FlexReport.Parameters でパラメータを定義して、タイプ、キャプション、デフォルト
値、有効な値などを指定できます。
C1FlexReport.Parameters コレクションでパラメータとして定義される各要素は、ReportParameter クラスのインスタンスで
す。これは次のプロパティを持ちます。
Nullable
このパラメータの値を Null にできるかどうかを示す値を取得または設定します。複数値パラ
メータの場合は、true にできません。
AllowBlank
このパラメータの値を空の文字列にできるかどうかを示す値を取得または設定します。
DataType が String でない場合は無視されます。
54
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
MultiValue
これが複数値パラメータ(値のセットを受け取ることができるパラメータ)であるかどうかを示す
値を取得または設定します。
Hidden
このパラメータをユーザーに非表示にする(ただし、サブレポート、ドリルスルーレポートなどで
プログラミングによって使用することは可能)かどうかを示す値を取得または設定します。
Prompt
パラメータ値の入力を求める際にエンドユーザーに表示されるプロンプトを取得または設定し
ます。
Value
パラメータ値を取得または設定します。MultiValue が true の場合は、Value に配列を指定で
きます(この場合は、すべての項目が同じ項目タイプを持つ必要があります)。
DataType
パラメータのデータタイプを取得または設定します。
AllowedValuesDefinition このパラメータの許容値のリストを定義する AllowedValuesDefinition を取得します。許容値
は、AllowedValuesDefinition.Values プロパティを使用して静的リストとして指定するか、
AllowedValuesDefinition.Binding プロパティを使用してレポートのデータソースの 1 つに連
結された動的リストとして指定できます。
レポートパラメータは、FlexReportDesigner アプリケーションを使用して簡単に追加できます。詳細については、「パラメータの
操作」および「複数データソースレポートでのパラメータへのデータの連結」を参照してください。
データのグループ化
グループ化は、整理された方法でデータを表示するために最もよく使用される方法です。基本レイアウトの設計が完了したら、特
定のフィールドなどの基準に基づいてレコードを区切ることで、読みやすいレポートを作成できます。データをグループ化すること
で、レコードをグループに分け、グループごとに概要やサマリーデータを表示することができます。グループの区切りは、グループ
化式に基づいて行われます。この式は、1 つ以上のレコードセットフィールドに基づいて作成されることが普通ですが、必要に応じ
てさらに複雑な式にすることもできます。
FlexReport でグループ化を実行するには、C1FlexReport.Groups を使用します。
たとえば、特定の肩書きや役職に該当する従業員の名前をリストすることにします。この場合は、Title(肩書き)でリストをグループ
化します。以下の手順は、従業員リストを Title でグループ化する方法を示します。この例では、「FlexReport クイックスタート」で作
成したサンプルを使用します。
1.
2.
3.
4.
FlexReport クイックスタートプロジェクトの Form に、C1CheckBox を追加します。
C1CheckBox Name を「groupC1CheckBox」に、Text を「Group Report by Title」に設定します。
CheckedChanged イベントを c1CheckBox1_CheckedChanged という名前で作成します。
次のコードを追加します。
Visual Basic
Private grp As Group
Private s As Section
Private Sub c1CheckBox1_CheckedChanged(sender As Object, e As
EventArgs)
If groupC1CheckBox.Checked Then
' 従業員を役職でグループ化し、役職を昇順にソートします
grp = C1FlexReport1.Groups.Add("GrpTitle", "Title",
SortEnum.Ascending)
' 新しいグループのヘッダーセクションを書式設定します
s = grp.SectionHeader
s.Height = 1000
s.Visible = True
Dim f As New TextField()
f.Name = "Title"
55
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
f.Text.Expression = "Title"
f.Left = 0
f.Top = 0
f.Width = C1FlexReport1.Layout.Width
f.Height = 500
f.Align = FieldAlignEnum.LeftMiddle
f.Font.Bold = True
f.Font.Size = 12
f.Border = New Border(2, Color.Black, DashStyle.Solid)
f.BackColor = Color.FromArgb(150, 150, 220)
f.MarginLeft = 100
s.Fields.Add(f)
C1FlexReport1.Render()
Else
btnEmployees.PerformClick()
End If
End Sub
C#
Group grp;
Section s;
private void c1CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (groupC1CheckBox.Checked)
{
// 従業員を役職でグループ化し、役職を昇順にソートします
grp = c1FlexReport1.Groups.Add("GrpTitle", "Title",
SortEnum.Ascending);
// 新しいグループのヘッダーセクションを書式設定します
s = grp.SectionHeader;
s.Height = 1000;
s.Visible = true;
TextField f = new TextField();
f.Name = "Title";
f.Text.Expression = "Title";
f.Left = 0;
f.Top = 0;
f.Width = c1FlexReport1.Layout.Width;
f.Height = 500;
f.Align = FieldAlignEnum.LeftMiddle;
f.Font.Bold = true;
f.Font.Size = 12;
f.Border = new Border(2, Color.Black,
DashStyle.Solid);
f.BackColor = Color.FromArgb(150, 150, 220);
f.MarginLeft = 100;
s.Fields.Add(f);
c1FlexReport1.Render();
}
else
{
btnEmployees.PerformClick();
}
56
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
}
5. プロジェクトを実行します。[Employees]ボタンをクリックして、レポートをレンダリングします。
6. [Title でレポートをグループ化]チェックボックスをクリックして、レポートにグループを表示します。役職が昇順にソートされ
ていることを確認します。
小計などの集計の追加
C1FlexReport は、すべての計算フィールドで集計式をサポートします。集計式には、Sum、Min、Max、Avg、Count、Range、
Var などがあります。
すべての集計関数は引数として式を受け取り、レポート内の位置によって特定される範囲内でその式を評価します。たとえ
ば、グループヘッダーまたはグループフッター内の集計は、そのグループを対象範囲にします。レポートヘッダーまたはレポー
トフッター内の集計は、レポート全体を対象範囲にします。
たとえば、次の集計式は、集計の範囲(グループまたはレポート)内で Sales フィールドのすべての値の合計を返しま
す。Sum(Sales)
次の集計式は、レポート内のすべての値に対して消費税の合計を返します(消費税を 8.5% と仮定)。Sum(Sales *
57
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
0.085)
次の例は、Count 集計を使用して、特定の役職に該当する従業員のレコードの数を計算します。
1. サンプル「データのグループ化」で作成したチェックボックスイベント(c1CheckBox1_CheckedChanged)に次のコードを
追加します。
Visual Basic
Dim f1 As New Field()
f1.Name = "CountRecords"
f1.Text = "Count(GrpTitle)"
f1.Left = 2000
f1.Top = 500
f1.Width = C1FlexReport1.Layout.Width - 2000
f1.Height = 400
f1.Align = FieldAlignEnum.LeftMiddle
f1.MarginLeft = 100
f1.Calculated = True
f1.Visible = True
f1.BackColor = Color.Yellow
f1.Font.Bold = True
f1.Font.Size = 10
s.Fields.Add(f1)
Dim tf As New TextField()
tf.Name = "Text"
tf.Text = "Number Of Records: "
tf.Left = 0
tf.Top = 500
tf.Width = C1FlexReport1.Layout.Width - f1.Width
tf.Height = 400
tf.Align = FieldAlignEnum.LeftMiddle
tf.Font.Bold = True
tf.Font.Size = 10
tf.BackColor = Color.Transparent
tf.BackColor = Color.Yellow
tf.MarginLeft = 100
tf.Visible = True
s.Fields.Add(tf)
C#
Field f1 = new Field();
f1.Name = "CountRecords";
f1.Text = "Count(GrpTitle)";
f1.Left = 2000;
f1.Top = 500;
f1.Width = c1FlexReport1.Layout.Width - 2000;
f1.Height = 400;
f1.Align = FieldAlignEnum.LeftMiddle;
f1.MarginLeft = 100;
f1.Calculated = true;
f1.Visible = true;
f1.BackColor = Color.Yellow;
f1.Font.Bold = true;
58
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
f1.Font.Size = 10;
s.Fields.Add(f1);
TextField tf = new TextField();
tf.Name = "Text";
tf.Text = "Number Of Records: ";
tf.Left = 0;
tf.Top = 500;
tf.Width = c1FlexReport1.Layout.Width - f1.Width;
tf.Height = 400;
tf.Align = FieldAlignEnum.LeftMiddle;
tf.Font.Bold = true;
tf.Font.Size = 10;
tf.BackColor = Color.Transparent;
tf.BackColor = Color.Yellow;
tf.MarginLeft = 100;
tf.Visible = true;
s.Fields.Add(tf);
2. プロジェクトを実行します。[Employees]ボタンをクリックして、レポートをレンダリングします。
3. [Title でレポートをグループ化]チェックボックスをクリックして、レポートにグループを表示します。各グループのレコー
ド数が計算されることを確認します。
59
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
クロス集計レポートの作成
クロス集計レポートは、データを 2 次元(下方向と横方向)にグループ化します。クロス集計レポートは、情報を相互参照する形式で
大量のデータをまとめる場合に便利です。
次の手順に従って、「FlexReport クイックスタート」で作成したレポートにクロス集計レポートを作成します。
1.
2.
3.
4.
FlexReport クイックスタートプロジェクトの Form に、Button を追加します。
ボタンの Name を「crossC1Button」に、Text を「View Cross Tab-Report」に設定します。
Click イベントを crossC1Button_Click という名前で作成します。
次のコードを記述します。
Visual Basic
Private grp2 As Group
Private Sub crossC1Button_Click(sender As Object, e As EventArgs)
btnEmployees.PerformClick()
c1FlexReport1.Sections.Detail.Visible = False
grp2 = c1FlexReport1.Groups.Add("GrpCountry", "Country",
SortEnum.Ascending)
' 新しいグループのヘッダーセクションを書式設定します
c1FlexReport1.Sections.PageHeader.Height = 600
60
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
shpfld2.Top = 600
s = grp2.SectionHeader
s.Height = 400
s.AutoHeight = AutoSizeBehavior.GrowAndShrink
s.Visible = True
textFld4.Text = "Country"
textFld4.Width = 1000
textFld4.Align = FieldAlignEnum.CenterMiddle
textFld4.Height = 400
textFld4.Font.Bold = True
textFld4.Font.Size = 10
textFld5.Text = "Total"
textFld5.Width = 1000
textFld5.Left = 1000
textFld5.Align = FieldAlignEnum.CenterMiddle
textFld5.Height = 400
textFld5.Font.Bold = True
textFld5.Font.Size = 10
textFld6.Text = "Sales Representative"
textFld6.Width = 2000
textFld6.Left = 2000
textFld6.Align = FieldAlignEnum.CenterMiddle
textFld6.Height = 500
textFld6.Font.Bold = True
textFld6.Font.Size = 10
textFld7.Text = "Vice President"
textFld7.Width = 1500
textFld7.Left = 4000
textFld7.Align = FieldAlignEnum.CenterMiddle
textFld7.Height = 400
textFld7.Font.Bold = True
textFld7.Font.Size = 10
textFld8.Text = "Sales Manager"
textFld8.Width = 1500
textFld8.Left = 5800
textFld8.Align = FieldAlignEnum.CenterMiddle
textFld8.Height = 400
textFld8.Font.Bold = True
textFld8.Font.Size = 10
Dim isc As New TextField()
isc.Text = "Inside Sales Coordinator"
isc.Width = 1500
isc.Left = 7500
isc.Align = FieldAlignEnum.CenterMiddle
isc.Height = 400
isc.Font.Bold = True
isc.Font.Size = 10
isc.Visible = True
c1FlexReport1.Sections.PageHeader.Fields.Add(isc)
Dim f1 As New Field()
f1.Name = "Country"
f1.Text = "Country"
f1.Left = 80
f1.Top = 0
f1.Width = 1000
f1.Height = 400
61
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
f1.Align = FieldAlignEnum.CenterMiddle
f1.MarginLeft = 100
f1.Calculated = True
f1.Visible = True
f1.BackColor = Color.Transparent
f1.Font.Bold = True
f1.Font.Size = 10
s.Fields.Add(f1)
Dim f7 As New TextField()
f7.Name = "RunCount"
f7.Text = "=Count(Title)"
f7.Left = 1080
f7.Top = 0
f7.Width = 1000
f7.Height = 400
f7.Align = FieldAlignEnum.CenterMiddle
f7.MarginLeft = 100
f7.Visible = True
f7.Font.Bold = True
f7.Font.Size = 10
s.Fields.Add(f7)
Dim f8 As New TextField()
f8.Name = "SRCount"
f8.Text = "=Count(Title, Title = ""Sales Representative"")"
f8.Left = 2080
f8.Top = 0
f8.Width = 1000
f8.Height = 400
f8.Align = FieldAlignEnum.CenterMiddle
f8.MarginLeft = 100
f8.Visible = True
f8.Font.Bold = True
f8.Font.Size = 10
s.Fields.Add(f8)
Dim f9 As New TextField()
f9.Name = "VPCount"
f9.Text = "=Count(Title, Title = ""Vice President, Sales"")"
f9.Left = 4000
f9.Top = 0
f9.Width = 1000
f9.Height = 400
f9.Align = FieldAlignEnum.CenterMiddle
f9.MarginLeft = 100
f9.Visible = True
f9.Font.Bold = True
f9.Font.Size = 10
s.Fields.Add(f9)
Dim f10 As New TextField()
f10.Name = "SMCount"
f10.Text = "=Count(Title, Title = ""Sales Manager"")"
f10.Left = 5800
f10.Top = 0
f10.Width = 1000
f10.Height = 400
f10.Align = FieldAlignEnum.CenterMiddle
f10.MarginLeft = 100
62
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
f10.Visible = True
f10.Font.Bold = True
f10.Font.Size = 10
s.Fields.Add(f10)
Dim f11 As New TextField()
f11.Name = "ISCCount"
f11.Text = "=Count(Title, Title = ""Inside Sales Coordinator"")"
f11.Left = 7500
f11.Top = 0
f11.Width = 1000
f11.Height = 400
f11.Align = FieldAlignEnum.CenterMiddle
f11.MarginLeft = 100
f11.Visible = True
f11.Font.Bold = True
f11.Font.Size = 10
s.Fields.Add(f11)
c1FlexReport1.Render()
End Sub
C#
Group grp2;
private void crossC1Button_Click(object sender, EventArgs e)
{
btnEmployees.PerformClick();
c1FlexReport1.Sections.Detail.Visible = false;
grp2 = c1FlexReport1.Groups.Add("GrpCountry", "Country",
SortEnum.Ascending);
// 新しいグループのヘッダーセクションを書式設定します
c1FlexReport1.Sections.PageHeader.Height = 600;
shpfld2.Top = 600;
s = grp2.SectionHeader;
s.Height = 400;
s.AutoHeight = AutoSizeBehavior.GrowAndShrink;
s.Visible = true;
textFld4.Text = "Country";
textFld4.Width = 1000;
textFld4.Align = FieldAlignEnum.CenterMiddle;
textFld4.Height = 400;
textFld4.Font.Bold = true;
textFld4.Font.Size = 10;
textFld5.Text = "Total";
textFld5.Width = 1000;
textFld5.Left = 1000;
textFld5.Align = FieldAlignEnum.CenterMiddle;
textFld5.Height = 400;
textFld5.Font.Bold = true;
textFld5.Font.Size = 10;
textFld6.Text = "Sales Representative";
textFld6.Width = 2000;
textFld6.Left = 2000;
textFld6.Align = FieldAlignEnum.CenterMiddle;
textFld6.Height = 500;
63
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
textFld6.Font.Bold = true;
textFld6.Font.Size = 10;
textFld7.Text = "Vice President";
textFld7.Width = 1500;
textFld7.Left = 4000;
textFld7.Align = FieldAlignEnum.CenterMiddle;
textFld7.Height = 400;
textFld7.Font.Bold = true;
textFld7.Font.Size = 10;
textFld8.Text = "Sales Manager";
textFld8.Width = 1500;
textFld8.Left = 5800;
textFld8.Align = FieldAlignEnum.CenterMiddle;
textFld8.Height = 400;
textFld8.Font.Bold = true;
textFld8.Font.Size = 10;
TextField isc = new TextField();
isc.Text = "Inside Sales Coordinator";
isc.Width = 1500;
isc.Left = 7500;
isc.Align = FieldAlignEnum.CenterMiddle;
isc.Height = 400;
isc.Font.Bold = true;
isc.Font.Size = 10;
isc.Visible = true;
c1FlexReport1.Sections.PageHeader.Fields.Add(isc);
Field f1 = new Field();
f1.Name = "Country";
f1.Text = "Country";
f1.Left = 80;
f1.Top = 0;
f1.Width = 1000;
f1.Height = 400;
f1.Align = FieldAlignEnum.CenterMiddle;
f1.MarginLeft = 100;
f1.Calculated = true;
f1.Visible = true;
f1.BackColor = Color.Transparent;
f1.Font.Bold = true;
f1.Font.Size = 10;
s.Fields.Add(f1);
TextField f7 = new TextField();
f7.Name = "RunCount";
f7.Text = "=Count(Title)";
f7.Left = 1080;
f7.Top = 0;
f7.Width = 1000;
f7.Height = 400;
f7.Align = FieldAlignEnum.CenterMiddle;
f7.MarginLeft = 100;
f7.Visible = true;
f7.Font.Bold = true;
f7.Font.Size = 10;
s.Fields.Add(f7);
TextField f8 = new TextField();
f8.Name = "SRCount";
64
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
f8.Text = "=Count(Title, Title = \"Sales Representative\")";
f8.Left = 2080;
f8.Top = 0;
f8.Width = 1000;
f8.Height = 400;
f8.Align = FieldAlignEnum.CenterMiddle;
f8.MarginLeft = 100;
f8.Visible = true;
f8.Font.Bold = true;
f8.Font.Size = 10;
s.Fields.Add(f8);
TextField f9 = new TextField();
f9.Name = "VPCount";
f9.Text = "=Count(Title, Title = \"Vice President, Sales\")";
f9.Left = 4000;
f9.Top = 0;
f9.Width = 1000;
f9.Height = 400;
f9.Align = FieldAlignEnum.CenterMiddle;
f9.MarginLeft = 100;
f9.Visible = true;
f9.Font.Bold = true;
f9.Font.Size = 10;
s.Fields.Add(f9);
TextField f10 = new TextField();
f10.Name = "SMCount";
f10.Text = "=Count(Title, Title = \"Sales Manager\")";
f10.Left = 5800;
f10.Top = 0;
f10.Width = 1000;
f10.Height = 400;
f10.Align = FieldAlignEnum.CenterMiddle;
f10.MarginLeft = 100;
f10.Visible = true;
f10.Font.Bold = true;
f10.Font.Size = 10;
s.Fields.Add(f10);
TextField f11 = new TextField();
f11.Name = "ISCCount";
f11.Text = "=Count(Title, Title = \"Inside Sales Coordinator\")";
f11.Left = 7500;
f11.Top = 0;
f11.Width = 1000;
f11.Height = 400;
f11.Align = FieldAlignEnum.CenterMiddle;
f11.MarginLeft = 100;
f11.Visible = true;
f11.Font.Bold = true;
f11.Font.Size = 10;
s.Fields.Add(f11);
c1FlexReport1.Render();
}
5. プロジェクトを実行します。[View Cross Tab-Report]ボタンをクリックしてクロス集計レポートを表示します。2 か国の従業員
の役職の内訳が表示されることを確認します。
65
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
データのソート
ソートは、データを昇順または降順に整理する方法です。
FlexReport でソートを実行するには、DataSource.SortDefinitions を使用します。
たとえば、従業員の名前のリストを昇順に表示することにします。この場合は、リストを「名(First Name)」でソートする必要がありま
す。以下の手順は、従業員リストの名前をアルファベット順にソートする方法を示します。この例では、「FlexReport クイックスタート」
で作成したサンプルを使用します。
1.
2.
3.
4.
FlexReport クイックスタートプロジェクトのフォームに、C1Button を追加します。
C1Button の Name を「sortC1Button」に設定し、Text を「Sort Report by Employee First Name」に設定します。
Click イベントを sortC1Button_Click という名前で作成します。
次のコードを追加します。
Visual Studio
Private asc As Boolean = True
Private Sub sortC1Button_Click(sender As Object, e As EventArgs)
Handles Button2.Click
If asc Then
Dim sd As New SortDefinition("[FirstName]",
SortDirection.Ascending)
C1FlexReport1.DataSource.SortDefinitions.Add(sd)
asc = False
Else
btnEmployees.PerformClick()
asc = True
End If
C1FlexReport1.Render()
End Sub
C#
bool asc = true;
private void sortC1Button_Click(object sender, EventArgs e)
{
66
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
if (asc)
{
SortDefinition sd = new SortDefinition("[FirstName]",
SortDirection.Ascending);
c1FlexReport1.DataSource.SortDefinitions.Add(sd);
asc = false;
}
else
{
btnEmployees.PerformClick();
asc = true;
}
c1FlexReport1.Render();
}
5. レポートをプレビュー表示します。[Employees]ボタンをクリックして、レポートをレンダリングします。
6. [Sort Report by Employee First Name]ボタンをクリックして、レポートのソート結果を表示します。
データのフィルタ処理
特定の条件に基づいてデータの一部だけを表示する場合は、データのフィルタ処理が重要となります。FlexReport で
は、DataSource.Filter を使用してデータがフィルタ処理されます。
たとえば、「FlexReport クイックスタート」で作成したレポートで、1 つの Employee ID に対応する従業員詳細を表示することに
します。Detail セクションで EmployeeID フィールドが追加されている場所に、次のコードを追加して、'EmployeeID = 2' に対
応する従業員詳細をフィルタ処理します。
Visual Basic
C1FlexReport1.DataSource.Filter = "EmployeeID = 2"
C#
c1FlexReport1.DataSource.Filter = "EmployeeID = 2";
67
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
プロジェクトを実行します。EmployeeID = 2 の従業員の名前(First name)、姓(Last name)、役職(Title)、およびメモ
(Notes)が表示されます。
さまざまな形式へのレポートのエクスポート
FlexViewer を使用したエクスポート
C1FlexViewer コントロールを使用して、レポートのプレビューやエクスポートを実行できます。レポートは、.pdf、.html、.rtf、
.docx、.xls、.xlsx、.zip、.tiff、.bmp、.png、.jpg、.gif などのファイル形式にエクスポートできます。次のコードは、C1FlexViewer
のExport メソッドを使用して、FlexReport をエクスポートする方法を示します。
Visual Basic
' レポート定義をロードします
C1FlexReport1.Load(@"reportFile", "reportName")
' ビューアに表示するレポートを指定します
C1FlexViewer1.DocumentSource = C1FlexReport1
' エクスポートします
C1FlexViewer1.Export()
C#
//レポート定義をロードします
c1FlexReport1.Load(@"reportFile", "reportName");
//ビューアに表示するレポートを指定します
c1FlexViewer1.DocumentSource = c1FlexReport1;
//エクスポートします
c1FlexViewer1.Export();
FlexReport を使用した PDF へのエクスポート
次のコードは、PdfFilter クラス を使用して、FlexReport をPDFへエクスポートする方法を示します。同様に、レポートを上記の
形式へエクスポートすることもできます。
Visual Basic
68
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
' レポートオブジェクトを作成します
Dim C1FlexReport1 As New C1FlexReport()
' レポートをロードします
C1FlexReport1.Load("..\..\Report\Report.flxr", "Products Report")
C1FlexReport1.Render()
' PdfFilter オブジェクトを作成します
Dim filter As New C1.Win.FlexReport.PdfFilter()
filter.ShowOptions = False
' エクスポートするファイルのファイル名と保存先のパスを指定します
filter.FileName = "Products Report" + "..\..\ProductsReport.pdf" ' レ
ポートは ProductsReport.pdf という名前で bin\debug フォルダにエクスポートされます
' エクスポートします
C1FlexReport1.RenderToFilter(filter)
C#
//レポートオブジェクトを作成します
C1FlexReport c1FlexReport1 = new C1FlexReport();
//レポートをロードします
c1FlexReport1.Load(@"..\..\Report\Report.flxr", "Products Report");
c1FlexReport1.Render();
//PdfFilter オブジェクトを作成します
C1.Win.FlexReport.PdfFilter filter = new
C1.Win.FlexReport.PdfFilter();
filter.ShowOptions = false;
//エクスポートするファイルのファイル名と保存先のパスを指定します
filter.FileName = "Products Report" + @"..\..\ProductsReport.pdf"; //
レポートは ProductsReport.pdf という名前で bin\debug フォルダにエクスポートされます
//エクスポートします
c1FlexReport1.RenderToFilter(filter);
VBScript の操作
VBScript 式は、レポートのコンテンツを取得、計算、表示、グループ化、ソート、フィルタ、パラメータ化、および書式設定する
ためにレポート定義内で広く使用されます。いくつかの式は自動的に作成されます。たとえば、ツールボックスからフィールドを
レポートのセクションにドラッグすると、テキストボックスにそのフィールドの値を取得する式が表示されます。ただし、ほとんど
の場合、レポートに機能を追加するには独自に式を作成する必要があります。
VBScript の式と文には次の違いがあります。
式は値を返します。これを Field.Text プロパティなどに割り当てることができます。
Field1.Text.Expression = "iif( 1=1, 1+2, 1+3 )"
文は値を返しません。OnFormat などのイベントプロパティに割り当てることができます。次に例を示します。
c1FlexReport.OnOpen = "if 1=1 then msgbox("OK!!!") else msgbox("ooops")"
C1FlexReport は VBScript を使用して、計算フィールドの式を評価したり、レポートイベントを処理します。
VBScript は完全な機能を備えた言語で、C1FlexReport の式を記述する際は、VBScript のすべてのメソッドと関数にアクセス
できます。VBScript 言語の組み込みの機能については、Microsoft Developer's Network(MSDN)を参照してください。
新しい VBScript エディタでグローバルスクリプトを記述できます。このエディタを使用して、レポート全体からアクセス可能な
VBScript の関数やサブルーチンを定義できます。VBScript エディタに直接アクセスするには、F7 を押します。エディタを閉じ
69
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
て変更を保存するには、ショートカット Ctrl+W を使用します。エディタ内で、スクリプトを切り替えたり、フォントや色などのオプ
ションを変更することができます。また、構文チェック、定義済み VBScript 関数、再編成されたスクリプト関数などの高度な機
能を使用して、直感的なスクリプティングを簡単に行うことができます。
[VBScript エディタ]
エディタ]オプションを使用してグローバルスクリプトを記述するには
1. C1FlexReportDesigner の[ホーム]タブに移動します。
2. [VBScript エディタ]
エディタ]をクリックし、次の例のようなグローバルスクリプトを記述します。
function Backcolor()
Detail.Backcolor=rgb(255,0,0)
end function
次のように、C1FlexReportDesigner の GlobalScripts プロパティを使用してグローバルスクリプトを記述することもできま
す。
1. グローバルスクリプトを記述するレポートを選択します。
2. レポートの GlobalScripts プロパティに移動し、省略符をクリックします。これで、[[VBScript エディタ]
エディタ]ダイアログボック
スが開きます。
3. 上のように、VBScript エディタ
エディタでグローバルスクリプトを記述します。
これで、レポート全体から使用できるグローバル関数 'Backcolor()' が定義されます。
70
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
VBScript エディタには、次の追加機能があります。
IntelliSense:VBScript エディタがサポートするスクリプトの自動コード補完プロンプトを提供します。VBScript エディタ
の IntelliSense には、次の機能があります。
IntelliSense ウィンドウには、使用可能な語の状況依存リストと共に、VBScript 関数およびキーワードに関する
詳細なヘルプが小さなツールチップまたはヘルプウィンドウに表示されます。詳細ヘルプ内の斜体フォントは、
基本的に、現在の項目が属するカテゴリを示します(VBScript 関数、C1FlexReport 集計スクリプト関数、.NET
オブジェクトプロパティなど)。
DataSource.Filter の編集時、エディタは「式エディタ
式エディタ - DataSource.Filter」として開かれ、IntelliSense には、エ
ディタで使用できるキーワードまたは関数と、対応するヘルプが表示されます。
IntelliSense エントリに関連付けられているアイコンは、エントリのタイプを示します。アイコンのカラーパレット
は、VBScript、レポート組み込み要素、DataSource.Filter によって異なります。
ユーザーがキー入力し、Intellisense ウィンドウが開くと、入力された文字に基づいてリストがフィルタ処理され
ます。たとえば、「t」と入力すると、文字「t」を含む語だけが表示され、「te」と入力すると、「te」を含む語にさらに
絞り込まれます。
IntelliSense ウィンドウでバックスペースキーを押すと、最後のフィルタを元に戻します。
角かっこ([)キーを押すと、使用可能なデータベースフィールドのリストが表示されます。
レポート、フィールド、セクションなどのオブジェクトの名前の後にピリオド(.)キーを押すと、そのオブジェクトで
使用できる .NET プロパティが表示されます。
[Ctrl]+[J]キー、[Ctrl]+[Space]キー、または文字以外のキーの後に文字キーを押すと、使用可能な
VBScript 関数、キーワードなどのリストが状況に応じて表示されます。
分割ウィンドウ
分割ウィンドウ:同じ VBScriptEditor 内で 2 つの同じまたは異なるスクリプトを表示または記述できます。デフォルトで
は、VBScript エディタは単一ウィンドウで開きます。
分割ウィンドウに切り替えるには
分割ウィンドウモードに切り替えるには、分割ウィンドウグリフをクリックして下へドラッグすると、上部にもう 1 つエディ
タが開きます。ウィンドウのサイズは、ウィンドウ間の分割線をドラッグして変更できます。
単一ウィンドウに戻るには
ウィンドウの右上隅にある[x]グリフをクリックすると、上側のウィンドウが閉じられ、分割モードがオフになり、下側の
ウィンドウがズームアウトします。リボンボタンの有効/無効の状態は、現在のウィンドウによって決まります。現在の
ウィンドウは、薄緑のキャプションバーで示されます。分割ウィンドウモードには、次の追加機能があります。
[F6]]キーを押すと、2 つのウィンドウを切り替えることができます。
分割ウィンドウグリフまたは分割線を上側のウィンドウの上部までドラッグすると、分割ウィンドウモードの上側
のウィンドウを非表示にできます。
VBScript エディタ
エディタの[グローバルスクリプト]
[グローバルスクリプト]ドロップダウンは、以前にレポートでグローバルスクリプトを定義した場合に
のみ有効になります。
C1FlexReport は、追加のオブジェクト、変数、および関数を公開することで、VBScript を拡張します。以下のセクションでは、
これらの拡張機能について説明します。
VBScript の要素、オブジェクト、変数
次の表に、VBScript の要素、オブジェクト、および変数を示します。
演算子
次の表に、VBScript の演算子を一覧します。
演算子
説明
And
2 つの式の論理積を実行します。
Or
2 つの式の論理和を実行します。
71
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
演算子
説明
Not
式の否定を求めます。
Mod
2 つの数値で割り算を実行し、余りだけを返します。
予約シンボル
次の表に、VBScript の予約シンボルとそれらの使用方法を一覧します。
キーワード
説明
True
True キーワードは、-1 と等しい値を持ちます。
False
False キーワードは、0 と等しい値を持ちます。
Nothing
実オブジェクトからオブジェクト変数の関連付けを解除します。オブジェクト変数に
Nothing を割り当てるには、Set 文を使用します。たとえば、Set MyObject =
Nothing とします。複数のオブジェクト変数が同じ実オブジェクトを参照している場
合があります。1 つのオブジェクト変数に Nothing を割り当てた場合、その変数は
実オブジェクトを参照しなくなります。複数のオブジェクト変数が同じオブジェクトを参
照している場合、それらの変数が参照するオブジェクトに関連付けられているメモリ
およびシステムリソースは、Set を使用することで明示的に、または最後のオブジェク
ト変数が Nothing に設定されることで暗黙的に、すべての変数が Nothing に設定
された後でのみ解放されます。
Null
Null キーワードは、変数に有効なデータが含まれていないことを示すために使用さ
れます。
vbCr
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbCrLf
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbLf
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbFormFeed
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbNewLine
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbNullChar
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbTab
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbVerticalTab
印刷および表示機能を呼び出す際に、コード内で実際の値の代わりに次の定数を使
用できます。
vbBlack
黒色。値 = 0x0
vbRed
赤色。値 = 0xFF
vbGreen
緑色。値 = 0xFF00
vbYellow
黄色。値 = 0xFFFF
vbBlue
青色。値 = 0xFF0000
72
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
キーワード
説明
vbMagenta
マゼンタ。値 = 0xFF00FF
vbCyan
シアン。値 = 0xFFFF00
vbWhite
白色。値 = 0xFFFFFF
組み込み関数
VBScript の組み込み関数を次の表に一覧します。
Abs
Date
Iif
Minute
Sign
Acos
DateAdd
InputBox
Month
スペース
Asc
DateDiff
InStr
MonthName
Sqr
Asin
DatePart
InStrRev
MsgBox
StrComp
Atn
DateSerial
Int
Now
String
CBool
DateValue
IsDate
Oct
Tan
CByte
Day
IsEmpty
Pi
Time
CCur
Exp
IsNull
Replace
Timer
CDate
Fix
IsNumeric
RGB
TimeSerial
CDbl
Format
IsObject
Right
TimeValue
Chr
FormatCurrency
LCase
Rnd
Trim
CInt
FormatDateTime
Left
Round
TypeName
CLng
FormatNumber
Len
RTrim
UCase
Cos
FormatPercent
Log
Second
WeekDay
CSng
Hex
LTrim
Sgn
WeekDayName
CStr
Hour
Mid
Sin
Year
VBScript 関数の詳細については、MSDN のドキュメントを参照してください。
C1FlexReport は、VBScript の次の主要機能をサポートしています。
集計関数(Sum、Average、StDev、Var、Count など)
レポートフィールド名とデータベースフィールド名
Page/Pages 変数
レポートオブジェクト
文字列関数(Chr、Format など)
データ変換(CBool、CByte など)
算術関数(cos、sin など)
日付/時刻関数(DateAdd、Hour など)
Function および Sub
条件文
組み込み関数(Like および In)
組み込みスクリプト関数 Like と In は、SQL 演算子 LIKE と IN と同様の機能を備え、True または False を返します。
Like(str, template):str を template と比較します。template にはワイルドカード「%」を使用できます。Like 関数の例を次にい
くつか示します。
73
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Like("abc", "%bc") は true を返します。
Like("abc", "%bcd") は false を返します。
Like("abc", "ab%") は true を返します。
Like("abc", "abd%") は false を返します。
Like("abc", "%b%") は true を返します。
Like("abc", "%d%") は false を返します。
Like("abc", "abc") は true を返します。
Like("abc", "abcd") は false を返します。
Like("Abc", "abc") は false を返します。
In(obj, obj1, ... objN):obj がオブジェクト obj1、...、objN の中にあるかどうかをテストします。In 関数の例を次にいくつか示し
ます。
In(1, 1, 2, 3) は true を返します。
In(1, 2, 3) は false を返します。
In("a", "a", "b", "c") は True を返します。
In("a", "b", "c") は False を返します。
In("A", "a", "b", "c") は False を返します。
このように、どちらの関数も大文字と小文字が区別されるので、abc と Abc は同じではありません。
C1FlexReport では、次の VBScript 関数がサポートされていません
サポートされていません。
Arrays
Select/Case 文
文のキーワード
VBScript 文のキーワードを次の表に一覧します。
If
ElseIf
To
While
Dim
Then
EndIf
Next
Wend
Redim
Else
For
Step
Const
レポートのフィールド名
Field オブジェクトの名前は、評価されると、オブジェクトの参照を返します。これにより、フィールドのプロパティにアクセスでき
ます。Field オブジェクトのデフォルトプロパティは Value なので、フィールド名自体はフィールドの現在の値を返します。次に例
を示します。
MyField.BackColor = RGB(200,250,100)
MyField.Font.Size = 14
MyField * 2 ' (MyField.Value * 2 と同じ)
メモ: レポートフィールドにデータベースフィールドと同じ名前を付けると、そのレポートフィールドにアクセスできなくなり
ます。
レポートのセクション名
Section オブジェクトの名前は、評価されると、オブジェクトの参照を返します。これにより、セクションのプロパティにアクセスで
きます。Section オブジェクトのデフォルトのプロパティは Name です。次に例を示します。
If Page = 1 Then [Page Footer].Visible = False
データベースフィールド名
レポートのデータセットソース内のフィールド名は、評価されると、現在のフィールドの値を返します。フィールド名にスペースま
たはピリオドが含まれる場合は、フィールド名を角かっこで囲む必要があります。次に例を示します。
74
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
OrderID
UnitsInStock
[Customer.FirstName]
[Name With Spaces]
レポート変数
Page
Page 変数は、Page プロパティの値を取得または設定します。このプロパティは、レポートのレンダリングの開始時にコント
ロールによって初期化され、ページ区切りごとに 1 ずつ増加します。コードを使用してこの値をリセットできます。次に例を示し
ます。
If Country <> LastCountry Then Page = 1
LastCountry = Country
Pages
Pages 変数は、レポートのレンダリングの終了時に総ページ数に置き換えられるトークンを返します。読み取り専用のプロパ
ティで、通常は、ページのヘッダーフィールドまたはフッターフィールドで使用されます。次に例を示します。
"ページ " & Page & " / " & Pages
レポートオブジェクト
レポートオブジェクトは、コントロールオブジェクトへの参照を返します。これにより、スクリプトや式から C1FlexReport オブジェ
クトモデル全体にアクセスできます。次に例を示します。
"フィールド:" & Report.Fields.Count
Cancel
Cancel を True に設定すると、レポートのレンダリング処理をキャンセルできます。次に例を示します。
If Page > 100 Then Cancel = true
互換性のための関数:
互換性のための関数:Iif および Format
Visual Basic や Microsoft Access(VBA)で記述されたコードとの互換性を高めるために、C1FlexReport は、VBScript にはな
い Iif および Format という 2 つの関数を公開しています。
Iif は、ブール式を評価し、その結果に基づいて 2 つの値のうちの 1 つを返します。次に例を示します。
Iif(SalesAmount > 1000, "Yes", "No")
Format は、書式設定式に含まれる指定に従って、値を書式設定された文字列に変換します。この値には、数字、ブール値、
日付、または文字列を使用できます。書式は、Visual Basic または VBA で使用される書式文字列に似た構文で、文字列とし
て構築されます。
次の表で、書式文字列に使用される構文について説明します。
値の型
書式文字列
説明
Number
Percent、%
数値をパーセント値として書式設定します(小数点以下は 0 または 2 桁)。
例:Format(0.33, "Percent") = "33%"
Format(0.3333333, "Percent") = "33.33%"
#,###.##0
マスクを使用して数値を書式設定します。認識される記号は、#(桁のプレー
スホルダ)、0(常に表示される桁のプレースホルダ)、,(桁区切り)、()(負の値
を囲む)、%(パーセント値として書式設定)です。例:Format(1234.1234,
"#,###.##") = "1,234.12"
75
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
値の型
書式文字列
説明
Format(-1234, "#.00")
Format(.1234, "#.##")
Format(.1234, "0.##")
Format(.3, "#.##%") =
= "(1234.12)"
= ".12"
= "0.12"
"30.00%"
Currency
Currency、$
数値を通貨値として書式設定します。必要に応じて桁区切りを付けて数値を
表示します。小数点以下を 2 桁で表示します。例:Format(1234, "$")
= "$1,234.00"
Boolean
Yes/No
Yes または No を返します。
Date
Long Date
Format(#12/5/1#, "long date") = "December 5, 2001"
Short Date
Format(#12/5/1#, "short date") = "12/5/2001"
Medium Date
Format(#12/5/1#, "medium date") = "05-Dec-01"
q,m,d,w,yyyy
日付の一部(四半期、月、月通算日、年通算週、年)を返します。
例:Format(#12/5/1#, "q") = "4"
@@-@@/@@
マスクを使用して文字列を書式設定します。@ 文字は、1 文字(@ が 1 つだ
けの場合は、値文字列全体)のプレースホルダです。その他の文字はリテラ
ルとして扱われます。例:Format("AC55512", "@@-@@@/@@") =
"AC-555/12"
Format("AC55512", "@") = "AC55512"
@;Missing
値が null または空文字列ではない場合は、セミコロン(;)の左側の書式文字
列を使用します。null または空文字列の場合は、セミコロン(;)の右側の部分
を返します。例:Format("@;Missing", "UK") = "UK"
Format("@;Missing", "") = "Missing"
String
VBScript には、独自の組み込み書式設定関数(FormatNumber、FormatCurrency、FormatPercent、FormatDateTime
など)があります。ここで説明した VBA スタイルの Format 関数の代わりに、これらの関数を使用することもできます。
集計関数
集計関数は、レンダリングされるグループのデータをまとめるために使用されます。レポートヘッダーフィールドで使用すされた
集計関数は、データセット全体の集計値を返します。グループのヘッダーまたはフッターで使用された集計関数は、そのグ
ループの集計値を返します。
FlexReport の集計関数はすべて、次の 2 つの引数を受け取ります。
グループ全体で集計される VBScript 式を含む文字列。
フィルタ(ドメイン集計)として使用される VBScript 式を含む文字列(オプション)。フィルタ式は、各値が集計される前に
評価されます。フィルタが False を返すと、その値はスキップされて、集計結果に含まれません。
FlexReport では、次の集計関数が定義されています。
関数
説明
Avg
現在のグループ内の式の平均値。たとえば、次の式は、グループ全
体の平均売上高と特定の製品の平均売上高を計算しま
す。Avg(SalesAmount)
Avg(SalesAmount, ProductType = 3)
Sum
グループ内のすべての値の合計。
76
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
関数
説明
Count
グループ内で null 以外の値を持つレコードの数。式にアスタリスク
(*)を使用すると、すべてのレコードを数えることができます。たとえ
ば、次の式は、住所の値が有効な(null ではない)従業員の数と従
業員の総数をカウントします。Count(Employees.Address)
Count(*)
CountDistinct
グループ内で null 以外の値を持つレコードの数(重複する値は数
えない)。
Min、Max
式の最小値および最大値。例:"Max Sale = " &
Max(SaleAmount)
Range
式の最小値と最大値の範囲。
StDev、Var
現在のグループ内の式の標準偏差および分散。SQL や Microsoft
Excel と同様に、標本(n-1)の式を使用して値が計算されます。
StDevP、VarP
現在のグループ内の式の標準偏差および分散。SQL や Microsoft
Excel と同様に、母集団(n)の式を使用して値が計算されます。
Median
グループ内の値のメジアン(中央値)を返します。
Mode
グループ内の値のモード(最頻値)を返します。
集計関数を使用するには、ヘッダーセクションまたはフッターセクションに計算フィールドを追加し、フィールドの Text プロパ
ティに式を割り当てます。
たとえば、NWind.xml サンプルファイルの "Employee Sales by Country" レポートには、複数の集計フィールドが含まれま
す。このレポートは、レコードを国別および従業員別にグループ化します。
Employee グループのフッターセクションにある SalespersonTotal フィールドには、次の式が含まれています。
=Sum([SaleAmount])
このフィールドは Employee グループのフッターにあるため、この式は、従業員別の総売上高を返します。
CountryTotal フィールドと GrandTotal フィールドにも、まったく同じ式が含まれます。しかし、これらのフィールドはそれぞ
れ、Country グループのフッターおよびレポートフッターにあるため、式は国別の総売上高およびレコードセット全体の売上高
を返します。
グループ内から上位レベルの集計値を参照する場合があります。たとえば、"Employee Sales by Country" レポートには、国
別の売上高を総売上高に対する割合(%)で表示するフィールドがあります。Country グループ内で計算されるすべての集計
値は、現在の国を参照するため、この割合を直接計算することはできません。その代わり、PercentOfGrandTotal フィールド
では次の式を使用します。
=[CountryTotal]/[GrandTotal]
CountryTotal と GrandTotal はそれぞれ、Country フッターセクションとレポートフッターセクションにあるフィールドです。し
たがって、CountryTotal は国別の合計値を、GrandTotal はレコードセット全体の合計値を保持します。
コントロールがレコードセット全体のデータを調べる必要があるため、集計関数の評価には時間がかかることをよく理解する必
要があります。そのため、集計関数は、できる限り少数の計算フィールドでのみ使用してください。これで他のフィールドでは、
集計式を再度評価するのではなく、集計関数を使用するフィールドから集計値を直接読み取ることができます。
たとえば、NorthWind データベースの "Employee Sales by Country" レポートには、各売上高を国別の総売上高に対する割
合(%)で表示する詳細フィールド PercentOfCountryTotal があります。このフィールドには、次の式が含まれています。
=[SaleAmount]/[CountryTotal]
SaleAmount は、レコードセットフィールドへの参照で、各詳細レコードごとに値が変化します。CountryTotal は、集計関数
を含むレポートフィールドへの参照です。コントロールは、この式を評価する際に、レポートフィールドから直接集計値を取得し
77
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ます。集計の再計算は行いません。
レポートの完全なサンプルについては、ComponentOne Samples フォルダにある Nwind.xml レポート定義ファイルの
「Employee Sales by Country」レポートを参照してください。
FlexReport オブジェクトの分割の管理
レポートの作成はデータの表示方法が鍵なので、各オブジェクトをその高さと幅に応じて体裁よく表示することが重要です。
FlexReports では、セクションやサブセクションをページ間で分割するかどうかを設定できます。それには、SplitBehavior プロ
パティを SplitIfNeeded または KeepTogether に設定します。同様に、フィールドや境界線の分割を SplitHorzBehavior
プロパティと SplitVertBehavior プロパティで制御します。
次のコードは、セクションとサブセクションの SplitBehavior を設定します。
Visual Studio
' 必要に応じてセクションを分割できるようにします
C1FlexReport1.Sections.Header.SplitBehavior =
SplitBehavior.SplitIfNeeded
' 必要に応じてサブセクションを分割できるようにします
C1FlexReport1.Sections.Header.SubSections(0).SplitBehavior =
SplitBehavior.SplitIfNeeded
C#
// 必要に応じてセクションを分割できるようにします
c1FlexReport1.Sections.Header.SplitBehavior =
SplitBehavior.SplitIfNeeded;
// 必要に応じてサブセクションを分割できるようにします
c1FlexReport1.Sections.Header.SubSections[0].SplitBehavior =
SplitBehavior.SplitIfNeeded;
フィールドの変更
VBScript は、計算フィールドで式を評価する場合にのみ使用できるわけではありません。レポートのレンダリング時に実行さ
れるスクリプトを指定することもできます。このようなスクリプトを使用して、レポートの書式設定を変更できます。これらのスク
リプトは、イベントプロパティに置かれます。イベントプロパティは Visual Basic のイベントハンドラに似ていますが、レポートを
表示するアプリケーションのスコープではなく、レポートのスコープ内でスクリプトが実行される点が異なります。
たとえば、イベントプロパティを使用すると、フィールドの Font プロパティや ForeColor プロパティをフィールドの値に基づい
て設定できます。この動作は、レポート自体に組み込まれ、レンダリングに使用されるアプリケーションに関係なく保持されま
す。
もちろん、従来のイベントも使用できます。従来のイベントは、レポートではなくアプリケーションに影響を及ぼす動作を実装す
るために使用します。たとえば、StartPage イベントのハンドラを記述して、レンダリングされているレポートに関係なく、アプリ
ケーションでページ数を更新できます。
次の表に、使用できるイベントプロパティと、その一般的な使用方法を示します。
78
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
オブジェクト
プロパティ
説明
C1FlexReport
OnOpen
レポートがレンダリングを開始すると実行されます。ConnectionString プロパティや
RecordSource プロパティを変更したり、VBScript の変数を初期化するために使用
できます。
OnClose
レポートがレンダリングを終了すると実行されます。クリーンアップ作業を実行するた
めに使用できます。
OnNoData
レポートのレンダリングが開始されたが、ソースレコードセットが空の場合に実行され
ます。Cancel プロパティを True に設定して、レポートの生成を中止できます。ダイ
アログボックスを表示して、レポートが表示されない理由をユーザーに知らせること
もできます。
OnPage
新しいページが開始されると実行されます。さまざまなフィールドのセクションの
Visible プロパティを状況に応じて設定するために使用できます。コントロールは、新
しいページが開始されるたびに自動的に 1 ずつ増える Page 変数を保持していま
す。
OnError
エラーが発生すると実行されます。
OnFormat
セクション内のフィールドが評価される前に実行されます。この時点で、ソースレコー
ドセット内のフィールドには、これからレンダリングされる値が反映されていますが、
レポートフィールドには反映されていません。
OnPrint
セクション内のフィールドが印刷される前に実行されます。この時点で、フィールドの
評価は終了しており、条件付き書式設定を実行できます。
Section
以下のトピックでは、これらのプロパティの一般的な使用例を示します。
値に応じたフィールドの書式設定
値に応じたフィールドの書式設定は、おそらく最も一般的な Section.OnPrint プロパティの使用方法です。製品別に注文数を
グループ化してリストするレポートを例にします。別のフィールドを使用して在庫数を表示する代わりに、追加注文レベルに満
たない製品の名前を赤色の太字で強調表示することにします。
コードを使用して、追加注文レベルに満たない製品を強調表示するには
追加注文レベルに満たない製品の名前を赤色の太字で強調表示するには、次のようなイベントスクリプトを使用します。
Visual Basic
Dim script As String = _
"If UnitsInStock < ReorderLevel Then" & vbCrLf & _
"ProductNameCtl.ForeColor = RGB(255,0,0)" & vbCrLf & _
"ProductNameCtl.Font.Bold = True" & vbCrLf & _
"Else" & vbCrLf & _
"ProductNameCtl.ForeColor = RGB(0,0,0)" & vbCrLf & _
"ProductNameCtl.Font.Bold = False" & vbCrLf & _
"End If"
C1Flexreport.Sections.Detail.OnPrint = script
C#
string script =
"if (UnitsInStock& ReorderLevel) then\r\n" +
79
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
"ProductNameCtl.ForeColor = rgb(255,0,0)\r\n" +
"ProductNameCtl.Font.Bold = true\r\n" +
"else\r\n" +
"ProductNameCtl.ForeColor = rgb(0,0,0)\r\n" +
"ProductNameCtl.Font.Bold = false\r\n" +
"end if\r\n";
c1FlexReport1.Sections.Detail.OnPrint = script;
FlexReportDesigner を使用して、追加注文レベルに満たない製品を強調表
示するには
コードを記述する代わりに、C1FlexReportDesigner アプリケーションを使用して、詳細セクションの Section.OnPrint プロパ
ティの VBScript エディタに、次のスクリプトコードを直接入力できます。次の手順を実行します。
1. Designer のプロパティペインのドロップダウンリストから、[詳細]
[詳細]を選択します。これで、セクションで使用できるプロパ
ティが表示されます。
2. Section.OnPrint プロパティの横にある空のボックスをクリックし、ドロップダウン矢印をクリックして、リストから[式エ
[式エ
ディタ]
ディタ]を選択します。VBScript エディタ
エディタウィンドウが表示されます。
3. VBScript エディタ
エディタウィンドウで、次のスクリプトを入力します。
If UnitsInStock < ReorderLevel Then
ProductNameCtl.ForeColor = RGB(255,0,0)
ProductNameCtl.Font.Bold = True
Else
ProductNameCtl.ForeColor = RGB(0,0,0)
ProductNameCtl.Font.Bold = False
End If
4. [OK]]をクリックして、エディタを閉じます。
コントロールは、このセクションを出力するたびに、この VBScript コードを実行します。スクリプトは、"ReorderLevel" データ
ベースフィールドの値を取得し、その値に基づいて、"ProductName" レポートフィールドの Field.Font.Bold プロパティと
Field.ForeColor プロパティを設定します。在庫が追加注文レベルに満たない製品は、製品名が赤色の太字になります。
次のスクリーンショットは、特別な効果が適用されたレポートのセクションです。
80
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
データがないセクションの非表示
詳細セクションの OnFormat プロパティに式を指定することで、データに基づいてレポートフィールドの書式を変更できます。
たとえば、詳細セクションに画像コントロールを含むフィールドがあるが、レコードに画像データが存在しない場合に、そのレ
コードを非表示にできます。データ(この例では、レコードの画像)が存在しない場合に詳細セクションを非表示にするには、詳
細セクションの OnFormat プロパティに次のスクリプトを追加します。
If isnull(PictureFieldName) Then
Detail.Visible = false
Else
Detail.Visible = true
End If
コードを使用して、データが存在しないセクションを非表示にするには
データが存在しないセクション(この例では、レコードの画像)を非表示にするには、次のようなイベントスクリプトを使用しま
す。
Visual Basic
81
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
C1FlexReport1.Sections.Detail.OnFormat = "Detail.Visible =
notisnull(PictureFieldName)"
C#
c1FlexReport1.Sections.Detail.OnFormat = "Detail.Visible =
notisnull(PictureFieldName)";
FlexReportDesigner を使用して、データが存在しないセクションを非表示に
するには
コードを記述する代わりに、C1FlexReportDesigner を使用して、詳細セクションの OnFormat プロパティの VBScript エディ
タに、次のスクリプトコードを直接入力できます。次の手順を実行します。
1. Designer のプロパティペインのドロップダウンリストから、[詳細]
[詳細]を選択します。これで、セクションで使用できるプロパ
ティが表示されます。
2. Section.OnFormat プロパティの横にある空のボックスをクリックし、ドロップダウン矢印をクリックして、リストから[式
[式
エディタ]
エディタ]を選択します。VBScript エディタ
エディタウィンドウが表示されます。
3. VBScript エディタ
エディタで、次の作業を実行します。
ウィンドウに次のスクリプトを入力します。
If isnull(PictureFieldName) Then
Detail.Visible = false
Else
Detail.Visible = true
End If
または、簡潔なスクリプトを使用することもできます。
Detail.Visible = not isnull(PictureFieldName)
値に基づいたフィールドの表示
値に基づいたフィールドの表示/非表示
非表示
フィールドの書式を変更してフィールドのコンテンツを強調表示する代わりに、別のフィールドの Visible プロパティを True ま
たは False に設定することで、特別な効果を生成することができます。たとえば、製品名を囲む「Shapefld」という名前の新し
い図形フィールドを挿入し、その Visible プロパティを True に設定する場合は、スクリプトを次のように記述します。
If UnitsInStock < ReorderLevel Then
Shapefld.Visible = True
Else
Shapefld.Visible = False
End If
コードを使用して、追加注文レベルに満たない製品を強調表示するには
追加注文レベルに満たない製品にボックスを表示して強調表示するには、次のようなイベントスクリプトを使用します。
Visual Basic
Dim script As String = _
"If UnitsInStock < ReorderLevel Then" & vbCrLf & _
" BoxCtl.Visible = True" & vbCrLf & _
82
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
"Else" & vbCrLf & _
" BoxCtl.Visible = False" & vbCrLf & _
"End If"
C1FlexReport1.Sections.Detail.OnPrint = script
C#
string script =
"if (UnitsInStock < ReorderLevel) then\r\n" +
"BoxCtl.Visible = true\r\n" +
"else\r\n" +
"BoxCtl.Visible = false\r\n" +
"end if\r\n";
c1FlexReport1.Sections.Detail.OnPrint = script;
このコードは、VBScript イベントハンドラを含む文字列を作成し、それをセクションの OnPrint プロパティに割り当てます。
FlexReportDesigner を使用して、追加注文レベルに満たない製品を強調表
示するには
コードを記述する代わりに、C1FlexReportDesigner アプリケーションを使用して、詳細セクションの OnPrint プロパティの
VBScript エディタに、次のスクリプトコードを直接入力できます。次の手順を実行します。
1. Designer のプロパティペインのドロップダウンリストから、[詳細]
[詳細]を選択します。これで、セクションで使用できるプロパ
ティが表示されます。
2. OnPrint プロパティの横にある省略符をクリックして、VBScript エディタ
エディタを開きます。
3. VBScript エディタ
エディタで、次のスクリプトを入力するだけです。
If UnitsInStock < ReorderLevel Then
Shapefld.Visible = True
Else
Shapefld.Visible = False
End If
次のスクリーンショットは、特別な効果が適用されたレポートのセクションです。
83
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ページカウンタのリセット
C1FlexReport.Page 変数は、コントロールによって作成されて自動的に更新されます。ページのヘッダーまたはフッターに
ページ数を追加する場合に便利です。新しいグループの先頭で、ページカウンタをリセットするとよい場合があります。たとえ
ば、レコードを国別にグループ化しているレポートがあるとします。コードを追加するか、デザイナを使用して、ページカウンタを
リセットできます。
コードを使用する場合
新しいグループ(新しい国など)の先頭でページカウンタをリセットするには、PageFooter フィールドの Text プロパティを設定
します。次のコードを入力します。
Visual Basic
C1FlexReport1.Fields("PageFooter").Text = "[ShipCountry] & "" "" &
[Page]"
C#
84
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
C#
c1FlexReport1.Fields["PageFooter"].Text = "[ShipCountry] + [Page]";
FlexReportDesigner を使用する場合
新しいグループ(新しい国など)の先頭でページカウンタをリセットするには、次の手順に従って、PageFooter フィールドの
Text プロパティを設定します。
1. PageFooter のページ番号フィールドをデザイナのプロパティペインのドロップダウンリストから選択するか、設計ペイン
で選択します。これで、このフィールドのプロパティが表示されます。
2. Text プロパティの横にあるボックスをクリックし、ドロップダウン矢印をクリックして、リストから[式エディタ]
[式エディタ]を選択しま
す。VBScript エディタ
エディタウィンドウが表示されます。
3. VBScript エディタ
エディタで、次のスクリプトを入力します。
="Page " & GroupPage(0) & " of " & GroupPages(0) & " for " & Country
4. [OK]]をクリックして、エディタを閉じます。
サブセクションの追加
サブセクションは、レポートの任意のセクションに挿入できる追加セクションです。「FlexReport のセクション」で説明するよう
に、通常、FlexReport には、詳細、ヘッダー、フッター、ページヘッダー、ページフッター、グループヘッダー、およびグループ
フッターセクションが含まれます。
これらのセクションには、それぞれ少なくとも 1 つのサブセクションが含まれますが、1 つのセクションに必要な数だけサブセク
ションを追加できます。
レポートのヘッダーセクションに 1 つのサブセクションを追加するには、次のコードを使用します。
Visual Studio
'ヘッダーセクションに 1 つのサブセクションを作成します
Dim ss As SubSection =
C1FlexReport1.Sections.Header.SubSections.Add()
'高さを 10 mm に設定します
ss.Height = 10 * 1440 / 25.4
C#
//ヘッダーセクションに 1 つのサブセクションを作成します
SubSection ss = rep.Sections.Header.SubSections.Add();
// 高さを 10 mm に設定します
ss.Height = 10 * 1440 / 25.4;
85
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReportDesigner の操作
FlexReportDesigner は、FlexReport を設計するためのスタンドアロンアプリケーションです。Microsoft Access のレポートデ
ザイナに似ています。このデザイナのデフォルトの場所は C:\Program Files
(x86)\ComponentOne\Apps\v4.0\C1FlexReportDesigner.exe です。この場所で次のような二つのデザイナーのアプリケー
ションがあります。
C1FlexReportDesigner.4.exe は「Any CPU」を対象で実装されていますので、アプリケーションは64ビットのシステム
の場合は64ビットモードと32ビットのシステムの場合は32ビットモードで実行します。このアプリケイションは、
Microsoft.Jet.OLEDB.4.0などのような32ビットのみのデータプロバイダをサポートしません。
C1FlexReportDesigner32.4.exe はx86 を対象し、Microsoft.Jet.OLEDB.4.0などのような32ビットのみのデータプロ
バイダを使用できます。
基本レポート定義ファイルを作成し、そのレポート定義を変更、印刷、およびエクスポートできます。以下のすべてのトピック
は、FlexReportDesigner アプリケーションについて説明しています。
FlexReportDesigner について
FlexReportDesigner アプリケーションは、C1FlexReport レポート定義ファイルを作成および編集するためのツールです。こ
のデザイナを使用して、C1Report コンポーネントで読み込めるファイル(FLXR)を作成、編集、ロード、および保存することがで
きます。Microsoft Access ファイル(.mdb)や Crystal Reports(.rpt)からレポート定義をインポートすることもできます。
デザイナを実行するには、64 ビットプラットフォームの場合はC1FlexReportDesigner.exe と32 ビットプラットフォームの場合
はC1FlexReportDesigner32.4.exe ファイルをダブルクリックします。このファイルは、デフォルトで次のパスに存在します。
C:\Program Files (x86)\ComponentOne\Apps\v4.0
このディレクトリはデフォルトのインストールパスに基づいていますが、インストールパスを変更した場合は、パスが異なる場合
があります。
FlexCommonTasks.flxr ファイルを開いたときに表示されるデザイナを次に示します。
86
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Designer のメインウィンドウには、次のコンポーネントがあります。
[ファイル]メニュー
[ファイル]メニュー:レポート定義ファイルを処理(ロード、保存、インポート、エクスポートなど)するための
情報が含まれます。
[ホーム]、[挿入]、[調整]、[ページ設定]の各タブ
[ホーム]、[挿入]、[調整]、[ページ設定]の各タブ:レポート定義に関連するすべての機能(編集、書式設
定、フィールド/セクションの挿入、配置/サイズ設定、ページレイアウト、プリンタ設定など)を提供します。
設計モード
設計モード:[編集]、[テキスト]、[データ]などのメニュー機能へのショートカットを提供します。デフォルトで
は、[ホーム]、[挿入]、[調整]、および[ページ設定]タブで構成される設計モードが選択されます。
プレビューモード
プレビューモード:レポートのプレビューを提供します。詳細については、「プレビューモード」を参照してくだ
さい。
[レポート]タブ
[レポート]タブ:現在のレポート定義ファイルに含まれるすべてのレポートを一覧します。レポート名をダブ
ルクリックして、レポートをプレビューまたは編集できます。このリストを使用してレポートを名前変更、コ
ピー、削除することもできます。
[データ]タブ
[データ]タブ:現在のレポート内のすべてのデータソースおよびパラメータを一覧します。このタブで、データ
ソースやパラメータの追加や編集を行うことができます。
[プロパティ]タブ
[プロパティ]タブ:デザイナで選択したオブジェクトのプロパティを編集できます。
「エラー」タブ
「エラー」タブ: レポートをインポートやプレビューするときに発生するエラーと警告を表示するエラータブ。
87
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ステータスバー
ステータスバー:デザイナで現在実行中の作業に関する情報が表示されます。フィールドが選択されている
場合、ステータスバーには、選択されているフィールドの名前、タイプ、およびデータ連結フィールド(計算
フィールド)/静的フィールドの別が表示されます。セクションが選択されている場合、ステータスバーには、
セクション名、セクションタイプ、およびセクションの表示状態(非表示かどうか)が表示されます。ロード、保
存、印刷、レンダリング、インポートなどの処理も表示されます。ステータスバーの右にあるズームスライダ
をドラッグして、選択したレポートをズームアウト/ズームインすることができます。
折りたたみ
折りたたみ/展開グリフ
展開グリフ:各セクションで、展開グリフ( )または折りたたみグリフ( )をクリックすることで、
セクション内に含まれているサブセクションを展開または折りたたむことができます。
データベースアイコン
データベースアイコン:フィールドの右上隅にデータベースアイコンが表示されている場合は、フィールドが
データソースに連結されている(計算フィールド)ことを示します。データベースアイコンが表示されていない
フィールドは、静的フィールドです。
スナップライン
スナップライン:フィールドの配置に役立ちます。フィールドのサイズが拡大または縮小されると、垂直およ
び水平方向のスナップラインが表示され、フィールドを相互に相対的に配置するために役立ちます。
サブセクション
サブセクション:サブセクションは、セクション内に含まれるセクションです。サブセクションは、デフォルトで
は、セクションの下部に表示され、「/<B>」、「/<C>」のように自動的に名前が付けられます。
ヘルプボタン
ヘルプボタン:オンラインヘルプファイルを開いたり、アプリケーションに関する情報を表示するバージョン情
バージョン情
報画面を表示するオプションを提供します。
以下のトピックでは、C1FlexReportDesigner アプリケーションを使用してレポート定義ファイルを作成、編集、使用、および保
存する方法について説明します。
[ファイル]メニュー
[ファイル]
[ファイル]メニューは、レポート定義ファイルのロードと保存、およびレポート定義のインポートとエクスポートを行うための
ショートカットを提供します。[ファイル]
[ファイル]メニューから、C1FlexReportDesigner アプリケーションのオプションにもアクセスでき
ます。
次の図に、[ファイル]
[ファイル]メニューを示します。
88
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
メニューには、次のオプションがあります。
新規作成
新規作成:新しいレポート定義ファイルを作成します。
開く
開く:[レポート定義ファイルを開く]
[レポート定義ファイルを開く]ダイアログボックスを表示します。ここで、既存のファイルを選択して開くことができ
ます。
閉じる
閉じる:現在のレポート定義ファイルを閉じます。
保存
保存:以前に保存した場所に、レポート定義ファイルを保存します。
名前を付けて保存
名前を付けて保存:[レポート定義の保存]
[レポート定義の保存]ダイアログボックスを開きます。ここで、レポート定義を .flxr ファイルとして保
存できます。
印刷
印刷:現在のレポートを印刷します。[印刷]
[印刷]ボタンは、C1FlexReportDesigner アプリケーションがプレビューモードの
場合にのみ有効になります。
インポート
インポート:[レポート定義のインポート]
[レポート定義のインポート]ダイアログボックスを表示します。ここで、Microsoft Access(.mdb および
.adp)ファイルや Crystal Reports(.rpt)ファイルをインポートできます。詳細については、「Microsoft Access レポートの
インポート」と「Crystal Reports のインポート」を参照してください。
エクスポート
エクスポート:現在のファイルを HTML、PDF /A、PDF、RTF、DOCX、XLS、XLSX、TIFF、BMP、PNG、JPG、ZIP、または
GIF としてエクスポートします。詳細については、「レポートのエクスポートと公開」を参照してください。
最近使用したファイル
最近使用したファイル:最近開いたレポート定義ファイルをリストします。ファイルを再度開くには、リストから選択しま
す。
オプション
オプション:[[C1FlexReportDesigner オプション]
オプション]ダイアログボックスを開きます。ここで、C1FlexReportDesigner ア
プリケーションのデフォルトの外観と動作をカスタマイズできます。詳細については、「FlexReportDesigner オプション
の設定」を参照してください。
終了
終了:C1FlexReportDesigner アプリケーションを閉じます。
設計モード
設計
設計モードでは、選択したレポートのセクションとフィールドが表示されます。これは、デザイナがレポートを作成または修正す
るための主要な作業領域です。設計
設計モードは、以下のタブで構成されています。
89
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
[ホーム]タブ
[ホーム]タブ:[編集]、[テキスト]、[境界線]、[書式]、[データ]、[表示]の各メニュー機能へのショートカットを提供し
ます。詳細については、「[ホーム]タブ」を参照してください。
[挿入]タブ
[挿入]タブ:矢印、計算、グラフなどのさまざまなフィールドへのショートカットを提供します。詳細については、「[挿入]
タブ」を参照してください。
[調整]タブ
[調整]タブ:[グリッド]、[配置]、[位置]、[サイズ]の各メニュー機能へのショートカットを提供します。詳細について
は、「[調整]タブ」を参照してください。
[ページ設定]タブ
[ページ設定]タブ:[ページレイアウト]メニュー機能へのショートカットを提供します。詳細については、「[ページ設定]
タブ」を参照してください。
[ホーム]タブ
[ホーム]タブ
[ホーム]タブは、以下のグループに分けられるいくつかのメニューで構成されています。
[編集]グループ
[編集]グループ:次のオプションがあります。
貼り付け
貼り付け:最後にコピーされた項目を貼り付けます。
切り取り
切り取り:選択項目を切り取り、レポートから除去して、任意の場所に貼り付けることができるようにします。
コピー
コピー:選択項目をコピーして、任意の場所に貼り付けることができるようにします。
削除
削除:選択項目を削除します。
元に戻す
元に戻す:レポート定義に対して行われた最後の変更を元に戻します。
やり直し
やり直し:レポート定義に対して行われた最後の変更をやり直します。
[テキスト]グループ
[テキスト]グループ:次のオプションがあります。
フォント
フォント:選択したテキストの現在のフォントが表示され、選択項目に対して別のフォントを選択できます。それには、フォント名の横のドロップ
ダウン矢印をクリックします。
フォントサイズ
フォントサイズ:選択したテキストの現在のフォントサイズが表示され、別のフォントサイズを選択できます。フォントサイズボックスに数字を入
力するか、ドロップダウン矢印をクリックしてフォントサイズを選択します。
フォントサイズを拡大
フォントサイズを拡大:フォントサイズを 1 ポイント拡大します。
フォントサイズを縮小
フォントサイズを縮小:フォントサイズを 1 ポイント縮小します。
太字
太字:選択したテキストを太字にします(Ctrl+B キーを押すこともできます)。
斜体
斜体:選択したテキストを斜体にします(Ctrl+I キーを押すこともできます)。
下線
下線:選択したテキストに下線を付けます(Ctrl+U キーを押すこともできます)。
標準の配置
標準の配置:自動的に、数を左詰め、他の値を右詰めに揃えます。
テキスト左揃え
テキスト左揃え:テキストを左揃えします。
テキスト中央揃え
テキスト中央揃え:テキストを中央揃えします。
テキスト右揃え
テキスト右揃え:テキストを右揃えします。
テキスト両端揃え
テキスト両端揃え:選択したテキストを両端揃えにします。
フォントの色
フォントの色:選択したテキストの色を選択できます。
塗りつぶしの色
塗りつぶしの色:選択したテキストの背景色を選択できます。
[境界線]グループ
[境界線]グループ:次のオプションがあります。
境界線のスタイル
境界線のスタイル:現在選択されているフィールドの境界線のスタイルを定義します。使用できるスタイルには、実線
実線、破線
破線、点線
点線、1 点鎖
線、2 点鎖線
点鎖線、および透過
透過があります。
境界線の色
境界線の色:現在選択されているフィールドの境界線の色を定義します。
境界線の幅
境界線の幅:現在選択されているフィールドの境界線の幅をツイップ単位で選択します。
[書式]グループ
[書式]グループ:[書式
[書式]グループには次のオプションがあります。
レポートスタイル
レポートスタイル:[レポートスタイルエディタ]
[レポートスタイルエディタ]ダイアログボックスを開き、組み込みスタイルを選択するか、または独自のカスタムスタイルを
作成および編集できます。
書式の貼り付け
書式の貼り付け:現在の選択内容にスタイルを適用します。
テーブル行
テーブル行:現在の選択内容をテーブル行として書式設定します。
[書式]
[書式]グループの[レポートスタイル]
[レポートスタイル]をクリックすることで、[レポートスタイルエディタ]
[レポートスタイルエディタ]ダイアログボックスにアクセスできます。
90
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次の要素で構成されています。
[スタイルギャラリー]リスト
[スタイルギャラリー]リスト:現在使用可能なすべての組み込みスタイルおよびカスタムスタイルが表示されます。使用可能な組み込みスタ
イルの詳細については、「スタイルギャラリー」を参照してください。
[追加]ボタン
[追加]ボタン:[スタイルギャラリー]リストにカスタムスタイルを追加します。追加されるスタイルは、[追加]
[追加]ボタンをクリックしたときに[スタイ
ルギャラリー]リスト内で選択されているスタイルをベースとします。
[削除]ボタン
[削除]ボタン:選択したカスタムスタイルを削除します。このボタンは、[スタイルギャラリー]リストでカスタムスタイルが選択されている場合
にのみ有効になります。
プロパティグリッド
プロパティグリッド:プロパティの変更およびカスタムスタイルの編集を行うことができます。プロパティグリッドは、[スタイルギャラリー]リスト
でカスタムスタイルが選択されている場合にのみ使用および編集できます。
プレビューウィンドウ
プレビューウィンドウ:[スタイルギャラリー]リストで選択されたスタイルのプレビューを表示します。
[適用]ボタン
[適用]ボタン:ダイアログボックスを閉じることなく、選択内容にスタイルを適用します。
[OK]ボタン
]ボタン:ダイアログボックスを閉じ、変更を適用し、さらにそのスタイルを現在選択されているスタイルに設定します。
[キャンセル]ボタン
[キャンセル]ボタン:スタイルに対して行ったすべての変更をキャンセルします。
[データ]グループ
[データ]グループ:次のオプションがあります。
データソース
データソース:このボタンをクリックすると、[メイン]と[データソースの追加]という 2 つのオプションが下にリストされます。
[メイン]オプションを使用すると、レポートの連結先であるメインデータソースを編集または削除できます。[編集]
[編集]または[データソースの追
[データソースの追
加]
加]をクリックすると、[データソース]
[データソース]ダイアログボックスが表示されます。このダイアログボックスで、新しいデータソースの選択、接続文字列
の変更、および SQL 文の編集を行うことができます。[データソース]
[データソース]オプションの横にあるドロップダウンをクリックすると、レポートに存在す
るデータソースのリストが表示されます。 [データソース]
[データソース]タブから、現在のデータソース内のテーブル、ビュー、ストアドプロシージャを選択で
きます。[[SQL 文]
文]タブをクリックすると、現在の SQL 文が表示されます。
91
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
接続文字列を変更するには、省略符ボタンをクリックします。[データリンクプロパティ]
[データリンクプロパティ]ダイアログボックスが開きます。SQL 文を編集または
変更するには、[クエリービルダ]
[クエリービルダ]ボタンをクリックします。これにより、[[SQL ビルダ]
ビルダ]ダイアログボックスが開きます。
グループ
:このボタンをクリックすると[グループ]
[グループ]ダイアログボックスが表示され、ここで、グループ化およびソートの基準を追加および
削除できます。詳細については、「データのグループ化」と「データのソート」を参照してください。
レポート情報
:[レポート情報]
[レポート情報]ダイアログボックスが開きます。このダイアログボックスで、レポートのタイトル、作成者、サブタイトル、作
成元アプリケーション、およびキーワードを設定できます。このレポート情報をすべてのレポートに適用するように選択することもできます。
92
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
VBScript エディタ
エディタ:[[VBScript エディタ - Report.GlobalScripts]]ダイアログボックスを開きます。VBScript エディタ
エディタでは、ステートメントや
式を切り替えながら、複数のスクリプトを簡単に編集できます。
[表示]グループ
[表示]グループ:次のオプションがあります。
プロパティ
プロパティ:[プロパティ]
[プロパティ]タブを左ペインに表示します。[プロパティ]
[プロパティ]タブを表示するためのショートカットキーは、[F4]です。
データ
データ:[データ]
[データ]タブを左ペインに表示します。[データ]
[データ]タブを表示するためのショートカットキーは、[Shift]+[F4]です。
エラーリスト:
エラーリスト:レポートをインポートやプレビューする時に発生する警告およびエラーのリストを表示します。
キャプション
キャプション:デザイナパネルでセクションまたはサブセクションのキャプションを表示する方法を選択できます。選択できるオプションは、[す
[す
べて]
べて](すべてにストリップを表示)、[セクション]
[セクション](セクションにはストリップを表示し、サブセクションには表示しない)、[極細]
[極細](セクションの
ヘッダーストリップを表示しない)、[非表示]
[非表示]、[すべて展開]
[すべて展開]、および[すべて折りたたむ]
[すべて折りたたむ]です。ドロップダウンには、次のオプションがありま
す。
す
べ
て
セ
ク
ショ
ン
極
細
93
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
非
表
示
す
べ
て
展
開
す
べ
て
折
り
た
た
む
ズーム
ズーム:レポートのズームレベルを設定する値を選択できます。[Ctrl]+[+]キーまたは[Ctrl]+[-]キーを押して、デザイナパネルをズームイ
ンまたはズームアウトすることもできます。
[挿入]タブ
[挿入]
[挿入]タブは、レポートの設計時に挿入できる複数のフィールドで構成されています。各フィールドボタンをクリックすると、1 つ
のフィールドが作成され、そのプロパティが初期化されます。[挿入]
[挿入]タブは、次の 3 つのグループで構成されています。
[フィールド]
[フィールド]グループ
グループ:次の項目があります。
矢印
矢印:十字マウスカーソルを矢印カーソルに戻します。
テキスト
テキスト:ソースレコードセットに連結されたフィールド、または連結されていない(静的)テキストラベルを作成します。こ
のボタンをクリックするとリストが表示され、レコードセットフィールドを選択できます。連結フィールドは、データベースか
ら取得した生データを表示するだけではありません。フィールドの Text プロパティを編集し、任意の VBScript 式を使
用できます。
RTF:RTF フィールドを作成します。このボタンをクリックするとリストが表示されます。そこから、同じレポート定義ファイ
ルに含まれる他のフィールドを選択して RTF 形式で表示できます。
チェックボックス
チェックボックス:Boolean 値をチェックボックスとして表示する連結フィールドを作成します。デフォルトでは、チェック
ボックスには通常のチェックマークが表示されます。フィールドを作成した後に、CheckMark.Style プロパティを変更す
ることで、これをラジオボタンまたは十字マーカーに変更できます。
94
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
バーコード
バーコード:バーコードを表示するフィールドを作成します。このボタンをクリックするとメニューが表示されます。そこか
ら、同じレポート定義ファイルに含まれる他のフィールドを選択してバーコードとして表示できます。詳細については、
「バーコードフィールド」を参照してください。
計算
計算:計算フィールドを作成します。このボタンをクリックすると、コードエディタダイアログボックスが表示されます。そこ
で、値を評価するために使用する VBScript 式または任意の式を入力できます。このドロップダウンをクリックすると、レ
ポートの作成または印刷日時、ページ番号、ページ数、"ページ n/m"、レポート名などをレンダリングするためによく使
用される式を選択できます。
画像
画像:レコードセットに格納されているデータ連結画像用のフィールドまたは静的(非連結)画像用のフィールドを作成し
ます。このボタンをクリックすると、[開く]ダイアログボックスが表示され、ロゴなどの静的(非連結)画像を選択できま
す。ドロップダウンをクリックすると、ソースレコードセット内の画像フィールドを選択できます(存在する場合。すべての
レコードセットにこのタイプのフィールドが存在するわけではありません)。
図形
図形:直線、二等辺三角形、直角三角形、四角形、楕円、円弧などの幾何学図形を作成します。これらの図形を使用し
て、レポートの外観を強化できます。
サブレポート
サブレポート:別のレポートを表示するフィールドを作成します。このボタンをクリックするとリストが表示され、そこから、
同じレポート定義ファイルに含まれる他のレポートを選択できます。
グラフ
グラフ:チャートを表示するフィールドを作成します。詳細については、「チャートフィールド」を参照してください。
[サブセクション]
[サブセクション]グループ
グループ:次の項目で構成されます。
追加
追加:現在のセクションの下部にサブセクションを追加します。
削除
削除:現在選択されているサブセクションを削除します。
上に移動
上に移動:現在選択されているサブセクションを 1 つ上に移動します。
下に移動
下に移動:現在選択されているサブセクションを 1 つ下に移動します。
[カスタムフィールド]
[カスタムフィールド]グループ
グループ:次の項目で構成されます。
SuperLabel フィールド
フィールド:HTML 書式設定テキストをレンダリングするフィールドを作成します。フィールドのテキストプロ
パティには、レンダリングする任意の HTML テキストを設定します。
Map フィールド
フィールド:地球上の領域を表示するフィールド(マップ)を作成します。詳細については、「レポート内のマップ」を
参照してください。
レポートへのフィールドの追加方法については、「FlexReport フィールドの追加」と「FlexReport カスタムフィールドの追加」を
参照してください。
[調整]タブ
[調整]
[調整]タブには、グリッド、配置、位置、およびサイズへのショートカットがあります。次のグループで構成されます。
[グリッド]グループ
[グリッド]グループ:[グリッド
[グリッド]グループには次の項目があります。
グリッドにスナップ
グリッドにスナップ:フィールドをグリッドにスナップします。この項目が選択されている場合は、フィールドをグリッドの線
と線の間に配置することはできません。
グリッドの表示
グリッドの表示:プレビューで、レポートの背景にグリッドを表示します。グリッドは、フィールドの配置と整列に役立ちま
す。デフォルトでは、このオプションが選択されています。
フィールドのロック
フィールドのロック:レポート内のフィールドをロックおよびロック解除します。 目的の位置にフィールドを配置した後、そ
れらのフィールドをロックして、マウスやキーボードでフィールドを不用意に移動することを防止できます。
グリッドのプロパティ
グリッドのプロパティ:[[FlexReportDesigner オプション]
オプション]ダイアログボックスが表示されます。詳細については、
「FlexReportDesigner オプションの設定」を参照してください。
[配置]グループ
[配置]グループ:[配置
[配置]グループには次の項目があります。
左:選択したフィールドを、水平方向の左に配置します。
95
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
右:選択したフィールドを、水平方向の右に配置します。
中央
中央:選択したフィールドを、水平方向の中央に配置します。
上:選択したフィールドを、垂直方向の上に配置します。
下:選択したフィールドを、垂直方向の下に配置します。
上下中央
上下中央:選択したフィールドを、垂直方向の中央に配置します。
レポート内の要素は、水平方向と垂直方向の両方に合わせて配置することができます。たとえば、要素を左と上の両方に合
わせて配置できます。
[位置]グループ
[位置]グループ:[位置]
[位置]グループは、要素間の間隔、および要素を階層化する方法を制御します。次の項目で構成されま
す。
左右間隔均等
左右間隔均等:選択したフィールド間の左右間隔を均等化します。
左右間隔拡大
左右間隔拡大:選択したフィールド間の左右間隔を拡大します。
左右間隔縮小
左右間隔縮小:選択したフィールド間の左右間隔を縮小します。
上下間隔均等
上下間隔均等:選択したフィールド間の上下間隔を均等化します。
上下間隔拡大
上下間隔拡大:選択したフィールド間の上下間隔を拡大します。
上下間隔縮小
上下間隔縮小:選択したフィールド間の上下間隔を縮小します。
グリッドにスナップ
グリッドにスナップ:現在選択されているフィールドを最も近いグリッド線にスナップします。
最前面に移動
最前面に移動:選択したフィールドを、階層化されたすべてのフィールドの前面に配置します。
最背面に移動
最背面に移動:選択したフィールドを、階層化されたすべてのフィールドの背面に移動します。
[サイズ]グループ
[サイズ]グループ:[サイズ
[サイズ]グループには次の項目があります。
最大高さに合わせる
最大高さに合わせる:選択したすべてのフィールドの高さを最も高いフィールドに合わせます。
最小高さに合わせる
最小高さに合わせる:選択したすべてのフィールドの高さを最も低いフィールドに合わせます。
最大幅に合わせる
最大幅に合わせる:選択したすべてのフィールドの幅を最も広いフィールドに合わせます。
最小幅に合わせる
最小幅に合わせる:選択したすべてのフィールドの幅を最も狭いフィールドに合わせます。
グリッドのサイズに合わせる
グリッドのサイズに合わせる:選択したフィールドの境界を最も近いグリッド線にスナップします。
[ページ設定]タブ
[ページ設定]
[ページ設定]タブは、[ページレイアウト]メニュー機能へのショートカットを提供します。次のオプションがあります。
縦:レポートのレイアウトを縦
縦表示に変更します(この場合、高さが幅より長くなります)。
横:レポートのレイアウトを横
横表示に変更します(この場合、高さが幅より短くなります)。
ページ設定
ページ設定:プリンタの[ページ設定]
[ページ設定]ダイアログボックスを開きます。
プレビューモード
プレビュー
プレビューモードは、現在のレポートのプレビューを表示します。プレビュー
プレビューモードは、以下の項目で構成されています。
96
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
[ページレイアウト]グループ
[ページレイアウト]グループ:次のオプションがあります。
縦:レポートのレイアウトを縦
縦表示に変更します(この場合、高さが幅より長くなります)。
横:レポートのレイアウトを横
横表示に変更します(この場合、高さが幅より短くなります)。
ページ設定
ページ設定:プリンタの[ページ設定]
[ページ設定]ダイアログボックスを開きます。
[表示]グループ
[表示]グループ:次のオプションがあります。
ページ区切り付き :レポートのページ区切り付き表示とページ区切りなし表示を切り替えます。
パラメータ :レポートのパラメータパネルを表示または非表示にします。レポートにパラメータが含まれている場合にの
み有効です。
アウトライン
アウトライン:ドキュメントのテキストのアウトラインを表示します。
サムネイル: 標準ビューとサムネイルビューを切り替えます。
1 ページ
ページ:一度に 1 ページをプレビューできます。
2 ページ
ページ:一度に 2 ページをプレビューできます。
ズーム
ズーム:特定のパーセントに、またはウィンドウに合わせてページをズームします。ズームインのショートカットキーは
[Ctrl]+[+]、ズームアウトのショートカットキーは[Ctrl]+[-]です。
[ナビゲーション]グループ
[ナビゲーション]グループ:次のオプションがあります。
最初のページ
最初のページ:プレビューの最初のページに移動します。
前のページ
前のページ:プレビューの前のページに移動します。
[ページ]
[ページ]:このテキストボックスに数字を入力すると、プレビューがそのページに移動します。
次のページ
次のページ:プレビューの次のページに移動します。
最後のページ
最後のページ:プレビューの最後のページに移動します。
前のビュー
前のビュー:前に表示されたページに戻ります。
次のビュー
次のビュー:次に表示されたページに移動します。これは、[前のビュー]
[前のビュー]ボタンをクリックした後にのみ表示されます。
[ツール]グループ
[ツール]グループ:次のオプションがあります。
ハンドツール
ハンドツール:ハンドツールを使用すると、ドラッグアンドドロップ操作でプレビューを移動できます。
テキスト選択ツール
テキスト選択ツール:テキスト選択ツールを使用すると、ドラッグアンドドロップ操作でテキストを選択できます。次に、こ
のテキストを別のアプリケーションにコピーして貼り付けることができます。
検索
検索:[検索]
[検索]オプションをクリックすると、[検索]
[検索]ペインが開き、ドキュメント内のテキストを検索できます。テキストを検
索するには、検索対象のテキストを入力し、検索オプション(ある場合)を選択して、[検索]
[検索]をクリックします。
[エクスポート]グループ
[エクスポート]グループ:[エクスポート]グループの各項目を選択すると、[レポートをファイルにエクスポート]
[レポートをファイルにエクスポート]ダイアログボッ
クスが開き、エクスポートするファイルの場所を選択できます。[エクスポート]
[エクスポート]グループには、次のオプションがあります。
PDF:レポートを PDF ファイルにエクスポートします。ドロップダウン矢印には、フォントが埋め込まれていない(リンクさ
れている)PDF と PDF/A(埋め込みフォント)
(埋め込みフォント)のオプションがあり、PDF ファイルでシステムフォントを使用するか、選択
したフォントを埋め込むかを選択できます。
HTML:レポートを HTML ファイルにエクスポートします。次に、このテキストを別のアプリケーションにコピーして貼り付
けることができます。ドロップダウン矢印には、[プレーン
[プレーン HTML]]、[ページ化
[ページ化 HTML]]、[ドリルダウン
[ドリルダウン HTML]]、[テー
[テー
ブルベース HTML]]の各オプションがあります。プレーン HTML ファイルにエクスポートするか、矢印リンクを使用して
ページ移動できる複数の HTML ファイルにエクスポートするかなどを選択できます。
Excel:レポートを Microsoft Excel ファイルにエクスポートします。ドロップダウン矢印には、[[Microsoft Excel
97]]と[[Microsoft Excel 2007 - OpenXML]]の各オプションがあります。ドキュメントを XLS ファイルまたは XLSX ファ
イルのどちらで保存するかを選択できます。
RTF:レポートをリッチテキストファイル(RTF)としてエクスポートします。
Word:: レポートを Open XML Word(DOCX)形式にエクスポートします。
その他
その他:[その他]
[その他]ドロップダウン矢印をクリックすると、[TIFF](TIFF としてエクスポート)、[圧縮メタファイル](ZIP として
エクスポート)、[BMP](ビットマップ画像)、[PNG](Portable Network Graphic)、[JPEG]、[GIF]の各レポートエクス
ポートオプションが追加で表示されます。
エクスポートの詳細については、「レポートのエクスポートと公開」を参照してください。
生成
生成:
97
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
[更新]
[更新]ボタンがあります。[更新]
[更新]ボタンをクリックすると、現在のレポートが再生成されます。レポートの再生成中は、このボタ
ンが[停止]
[停止]に変わり、レポートの再生成を停止することもできます。
FlexReportDesigner オプションの設定
[FlexReportDesigner オプション]
オプション]ダイアログボックスにアクセスするには、[ファイル]
[ファイル]メニューをクリックし、[オプション]
[オプション]をク
リックします。詳細については、「[ファイル]メニュー」を参照してください。
[FlexReportDesigner オプション]
オプション]ダイアログボックスには、アプリケーションの外観と動作を制御する 5 つのタブがありま
す。各タブに含まれるタブとオプションは、次のとおりです。
[全般]タブ
次のオプションがあります。
プロパティグリッドを分類する
プロパティグリッドを分類する:プロパティタイプによってプロパティを分類します。プロパティグリッドにアクセスするに
は、デザインビューの左ペインの下にある[プロパティ]
[プロパティ]タブをクリックします。
元に戻す
元に戻す/やり直しを有効にする
やり直しを有効にする:アプリケーションの「元に戻す」操作と「やり直し」操作を有効にします。
フィールドプロパティをフィルタ処理する
フィールドプロパティをフィルタ処理する:設定されているプロパティに基づいてプロパティグリッドをフィルタ処理しま
す。プロパティグリッドにアクセスするには、デザインビューの左ペインの下にある[プロパティ]
[プロパティ]タブをクリックします。
レポートリストをソートする
レポートリストをソートする:[レポート]
[レポート]タブにリストされるレポートリストをソートします。レポートにアクセスするには、デ
ザインビューの左ペインの下にある[レポート]
[レポート]タブをクリックします。
デザイナテーマ
デザイナテーマ:[組み込み]
[組み込み]または[テーマフォルダ]
[テーマフォルダ]内のオプションからテーマを設定します。
[設計ペイン]タブ
98
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次のオプションがあります。
グリッドの表示
グリッドの表示:レポートプレビューウィンドウにグリッドを表示します。
グリッドにスナップ
グリッドにスナップ:レポートのグリッドにすべてのオブジェクトをスナップします。このオプションを選択すると、グリッド
線とグリッド線の間にはオブジェクトを配置できなくなります。
サブレポートコンテンツの表示
サブレポートコンテンツの表示:レポートにサブレポートのコンテンツを表示します。
C1FlexReport.CreationGraphics を参照グラフィックとして使ってフィールドをレンダリングす
る:C1FlexReport.CreationGraphics を参照として使用してフィールドをレンダリングします。
グリッド単位
グリッド単位:グリッドの間隔を指定します。オプションには、[自動]
[自動]、[インチ]
[インチ]、[センチメートル]
[センチメートル]、および[カスタム]
[カスタム]が
あります。
グリッド間隔
グリッド間隔:グリッド線の間隔を設定します。このオプションは、[グリッド単位]
[グリッド単位]オプションを[カスタム]
[カスタム]に設定した場合
にのみ有効です。
[主グリッドの色]
[主グリッドの色]:主グリッド線の色を設定します。
[副グリッドの色]
[副グリッドの色]:副グリッド線の色を設定します。
フィールドの辺の色
フィールドの辺の色:レポートのフィールドの辺の色を設定します。
[保存
[保存/ロード]タブ
ロード]タブ
99
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次のオプションがあります。
起動時に最近開いたファイルを再ロードする
起動時に最近開いたファイルを再ロードする:このオプションをオンにすると、C1FlexReportDesigner アプリケーショ
ンを開くたびに、最後に開いたファイルが表示されます。
レンダリングの前に変更を保存する
レンダリングの前に変更を保存する:このオプションをオンにすると、レンダリングの前にレポートが保存されます。
エクスポート時にオプションを表示する
エクスポート時にオプションを表示する:このオプションをオンにすると、エクスポート時にレポートのオプションが保存さ
れます。
保存時に画像を XML に埋め込む
に埋め込む:このオプションをオンにすると、レポートの保存時に XML に画像が埋め込まれま
す。
デフォルトのエクスポート形式
デフォルトのエクスポート形式:デフォルトのエクスポート形式を設定します。エクスポートの詳細については、「レポート
のエクスポートと公開」を参照してください。
[接続]タブ
100
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
トランザクション分離レベルのオプションがあります。
[スクリプトエディタ]タブ
101
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次のオプションがあります。
自動構文チェック
自動構文チェック:[[VBScript エディタ]
エディタ]ダイアログボックスで構文を自動的にチェックするかどうかを指定します。
構文の色指定
構文の色指定:[[VBScript エディタ]
エディタ]ダイアログボックスで構文テキストを自動的に色分けするかどうかを指定します。
フォント
フォント:[[VBScript エディタ]
エディタ]ダイアログボックスで使用されるテキストの外観を定義します。
[警告]タブ
102
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次のオプションがあります。
起動時に更新の有無を確認する
起動時に更新の有無を確認する:このオプションをオンにすると、C1FlexReportDesigner アプリケーションを開いたと
きに更新の有無が確認されます。
Crystal Reports からのインポート:
からのインポート:RAS API が無効な場合は警告する
が無効な場合は警告する:このオプションをオンにすると、Crystal
Reports を C1FlexReportDesigner にインポートする際に、RAS API が無効な場合は警告されます。
上の各タブで、[OK]をクリックすると変更が保存され、[キャンセル]をクリックすると、[[FlexReportDesigner オプション]
オプション]ダイ
アログボックスで行った変更がキャンセルされます。
スタイルギャラリー
[スタイルギャラリー]
[スタイルギャラリー]ダイアログボックスには、レポートの書式設定に使用できるすべての組み込みスタイルおよびカスタムス
タイルの詳細が表示されます。組み込みスタイルには、Vista と Office 2007 のテーマを含む、標準の Microsoft AutoFormat
テーマが含まれています。[ホーム]
[ホーム]タブを選択し、[レポートスタイル]
[レポートスタイル]をクリックすることで、C1FlexReportDesigner アプリ
ケーションからスタイルギャラリー
スタイルギャラリーにアクセスできます。
次の組み込みスタイルがあります。
スタイル名
Access 2007
103
プレビュー
スタイル名
プレビュー
Oriel(スパイス)
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
スタイル名
プレビュー
スタイル名
Access 2003
Origin(アース)
Apex(ひらめき)
Paper(ペーパー)
Aspect(シック)
Solstice(フレッシュ)
Civic(クール)
Technic(テクノロ
ジー)
Concourse(ビジネ
ス)
Trek(トラベル)
ComponentOne
Urban(アーバン)
Equity(ジャパネスク)
Verve(ネオン)
Flow(リゾート)
Windows Vista
104
プレビュー
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
スタイル名
プレビュー
スタイル名
Foundry(エコロジー)
Bold(太字)
Median(デザート)
Casual(カジュアル)
Metro(メトロ)
Compact(コンパク
ト)
Module(モジュール)
Corporate(コーポ
レート)
None
Formal(フォーマル)
Northwind(ノース
ウィンド)
Soft Gray(ソフトグ
レー)
Office(オフィス)
Verdana(ヴァーダ
ナ)
Opulent(キュート)
WebReport
105
プレビュー
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
複数のサブセクションの追加
通常、FlexReport には、詳細、ヘッダー、フッター、ページヘッダー、ページフッター、グループヘッダー、グループフッターの各セクショ
ンが含まれます。これらのセクションには、それぞれ少なくとも 1 つのサブセクションが含まれます。1 つのセクションに、任意の数の
サブセクションを追加できます。
サブセクションは、親セクションに存在するデータに関する追加情報を提供する場合に便利です。他のセクションと同じ方法でデータ
フィールドを追加できます。また、サブセクションに図形フィールドを追加するだけで、レポートを見栄えよくすることができます。
複数のサブセクションを追加するには
以下の手順では、レポートの詳細セクションに複数のサブセクションを追加します。
1. 詳細
詳細セクションをクリックします。既に「Detail/ <A>」という名前のサブセクションがあることを確認します。
2. [挿入]
[挿入]タブに移動し、[サブセクション]
[サブセクション]グループから[追加]
[追加]をクリックします。これで、詳細セクションに 1 つのサブセクション
が追加され、自動的に「Detail/ <B>」という名前が付けられます。
3. [サブセクション]グループから[追加]
[追加]を再度クリックし、もう 1 つのサブセクションを追加します。これで、「Detail/ <C>」という
名前のサブセクションが追加されます。
以下の手順では、サブセクションに 1 つのフィールドを追加します。
4.
5.
6.
7.
106
[挿入]
[挿入]タブに移動し、[サブセクション]
[サブセクション]グループから図形
図形フィールドをクリックします。
サブセクション Detail/ <B> に、図形
図形フィールドをドロップします。
プロパティペインで、Shape プロパティを Line に設定します。選択ハンドルをドラッグして、直線の長さを調整します。
レポートをプレビュー表示します。
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
詳細セクションのすべてのフィールドの後に直線が描画されます。
FlexReport フィールドの追加
FlexReport では、極めて簡単にフィールドを追加できます。C1FlexReportDesigner の[挿入]
[挿入]タブには、利用可能なフィールド
がすべて用意されています。目的のフィールドをクリックし、それをレポートにドロップするだけです。
以下のセクションでは、さまざまなフィールドのタイプ、プロパティ、およびレポートに追加する方法について説明しています。
フィールドの追加に使用するデータベースは NWind_ja.mdb です。
テキストフィールド
テキスト
テキストフィールドは、データを表示するために最もよく使用されるレポートフィールドです。以下を挿入するために使用されます。
データ連結テキストフィールド
非連結(静的)テキストラベル
FlexReportDesigner アプリケーションを使用してデータ連結テキストフィールドを追加するには
1.
2.
3.
4.
107
C1FlexReportDesigner で新しいレポートを作成します。
そのレポートを Products テーブルに連結します。
製品のテキストフィールド CategoryName が表示されるグループヘッダーを作成します。
[挿入]
[挿入]タブに移動し、[テキスト]
[テキスト]フィールドアイコンをクリックします。(データソースに連結された)すべてのデータフィールド
データフィールドが
リストされます。
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
5. レポートのグループヘッダーセクションに CategoryName データフィールドを追加します。
6. レポートをプレビュー表示します。
FlexReportDesigner を使用して非連結(静的)テキストラベルを追加するには
108
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
1. [挿入]
[挿入]タブに移動し、[テキスト]
[テキスト]フィールドアイコンをクリックします。
2. レポートの設計領域で十字線をドラッグして、セクション内にフィールドを表示する範囲を描画します。
3. フィールドをクリックし、ラベルとして表示するテキストを入力します。
RTF フィールド
リッチテキストフォーマット(
リッチテキストフォーマット(RTF))フィールドは、書式設定されたテキストを表示するために使用されます。このボタンをクリックするとメニューが表示されま
す。そこから、同じレポート定義ファイルに含まれる他のフィールドを選択して RTF 形式で表示できます。これらはデータ連結された RTF フィールドです。
RTF フィールドは、特に差し込み印刷レポートの作成で使用されます。
FlexReportDesigner アプリケーションで RTF フィールドを使用した差し込み印刷を作成するには
1. 新しいレポート C1FlexReportDesigner を作成します。
2. 以下の SQL 文を指定して、Customers および Orders テーブルにレポートを連結します。
SELECT
Customers.CustomerID, Customers.CompanyName,
Customers.ContactName, Customers.Address,
Customers.City, Customers.Region, Customers.Country, Customers.PostalCode,
Orders.OrderID, Orders.OrderDate, [Order Subtotals].Subtotal
FROM Customers INNER JOIN ([Order Subtotals] INNER JOIN Orders ON [Order Subtotals].OrderID =
Orders.OrderID) ON Customers.CustomerID = Orders.CustomerID
WHERE CompanyName = "Ernst Handel"
3. [挿入]
[挿入]タブから RTF フィールドを追加します。
4. プロパティペインから、背景色を淡色に設定します。
5. Text プロパティを次の式に設定します。
"Dear " + ContactName + "," + vbcrlf + vbcrlf + _
"Your order for past year totals to " + Format(Subtotal, "Currency") + vbcrlf + vbcrlf + _
"Because you have been such a terrific customer, " + _
"we decided to credit your account with $0.10. The amount will be credited in next 10 days.
Your Address for future correspondance is "+"Address" +
vbcrlf + vbcrlf + _
"Congratulations!"
6. 次のようにフィールドを配置します。
7. レポートをプレビュー表示します。
109
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
パラグラフフィールド
1 つのフィールド内で複数の書式設定テキスト、データベースフィールド、スクリプト、パラメータ、計算フィールドを使用するに
は、パラグラフ
パラグラフフィールドの使用が最適です。編集モードのパラグラフフィールドでは、次の操作を行うことができます。
静的テキストを入力します。
[Ctrl]+[Enter]キーを押して新しい行を挿入します。
テキストの任意の部分にフォント/前景色/背景色を設定します。
1 つのフィールド内にテキストと一緒に式(DB フィールド値と同様に)を挿入します。
任意のフィールドで[Alt]+[Enter]キーを押してプロパティを開きます。
任意の式を右クリックし、[式の編集]を選択して式エディタを開きます。
FlexReportDesigner アプリケーションでパラグラフフィールドを追加するには
1.
2.
3.
4.
110
C1FlexReportDesigner で新しい FlexReport を作成します。
それを Products テーブルと連結します。
[挿入]タブからレポートにパラグラフ
パラグラフフィールドを追加します。
パラグラフ
パラグラフフィールドをダブルクリックして編集モードに入ります。
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
5. 「Product:」と入力します。
データベースフィールドを挿入するには
1.
2.
3.
4.
編集モードで、パラグラフフィールドを右クリックし、[式の挿入]
[式の挿入]を選択します。
式エディタで、[データベースフィールド]
[データベースフィールド]ドロップダウンから[ProductID]を選択します。
[完了]
[完了]をクリックします。
Product:{ProductID} を選択し、リポンを使用して[前景色]
[前景色]を緑に設定します。
編集モードで新しい行を変更するには
1. 編集モードで、[Ctrl]+[Enter]キーを押します。
2. 次の行で、静的テキスト「Unit Price is」を入力し、上記の手順を使用して UnitPrice データベースフィールドを挿入しま
す。
3. {UnitPrice} を太字に設定します。
スクリプトを挿入するには
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
テキスト「UnitPrice is {UnitPrice}」の後に、「We have」と入力します。
右クリックし、[式の挿入]
[式の挿入]を選択します。
次のスクリプトを追加します:Iif(UnitsInStock > 0, UnitsInStock, "No")
[完了]
[完了]をクリックします。
このスクリプト式の後に、静的テキスト「units in stock」を入力します。
編集モードでこのスクリプトを選択し、太字に設定します。
[Ctrl]+[Enter]キーを押します。
新しい行で右クリックし、[式の挿入]
[式の挿入]を選択します。
次のスクリプトを入力します:Iif(Discontinued, "This product is no longer available", "") /
[完了]
[完了]をクリックします。
上記のスクリプトを選択し、[強調表示色]
[強調表示色]を「Orange, Accent 6 Lighter 60%」に、[前景色]
[前景色]を赤に設定します。
レポートをプレビュー表示します。
チェックボックスフィールド
チェックボックス
チェックボックスフィールドは、「はい/いいえ」をビジュアルに表現するために使用されます。チェックボックスフィールドは、デ
111
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
フォルトでは右側にテキストが付いた白抜きボックスとして表示されます。このフィールドはブール値を受け取ります。true に評
価されると、チェックボックスにチェックマークが表示されます。
FlexReportDesigner アプリケーションでデータ連結チェックボックスを追加するには
1. C1FlexReportDesigner で新しい FlexReport を作成します。
2. それを Products テーブルと連結します。[Product Name]、[Quantity Per Unit]、[Stock]、[Discontinued]の各
フィールドを選択します。
3. [挿入]タブから、[チェックボックス]
[チェックボックス]フィールドをクリックし、[Discontinued]データフィールドを選択します。
4. そのデータフィールドをレポートの詳細セクション(グループヘッダーの Discontinued ラベルの下)にドロップします。
5. プロパティペインから、CheckAlign を CenterMiddle に設定します。
6. レポートをプレビュー表示します。
112
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
バーコードフィールド
FlexReport のバーコード
バーコード機能を使用すると、さまざまな業界標準のバーコードをレポート内のバーコードフィールドに統合でき
ます。バーコードフィールドはすばやく簡単に生成できます。バーコードフィールドをレポートにドロップし、バーコードシンボル
を選択し、テキストを指定すれば完了です。
FlexReport のバーコード機能は、バーコードに関連付けられたプロパティによって拡張されています。読み取りエラーをなくす
ために、チェックサムを自動的に追加しながら値をエンコードしています。
バーコードには、C1.Win.Barcode アセンブリが使用されます。
バーコードシンボル
バーコードシンボルは、文字データをバーコードの太いバー、細いバー、およびスペースから成るパターンに変換するために
使用されるエンコードスキームを指定します。FlexReport で使用されるバーコードシンボルを次の表に示します。
スタイル名
113
例
説明
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Ansi39
ANSI 3 of 9(Code 39)は、大文字、数
字、- , * $ / + % を使用します。これがデ
フォルトのバーコードスタイルです。
Ansi39x
ANSI Extended 3 of 9(Extended Code
39)は、ASCII 文字セット全体を使用しま
す。
Codabar
Codabar は、A B C D + - : . / $ および数
字を使用します。
Code_128_A
Code 128 A は、制御文字、数字、句読
点、大文字を使用します。
Code_128_B
Code 128 B は、数字、句読点、大文字、
小文字を使用します。
Code_128_C
Code 128 C は数字だけを使用します。
Code_128auto
Code 128 Auto は、ASCII 文字セット全体
を使用します。最小のバーコードになるよ
うに、Code 128 A、B、および C から 1 つ
が自動的に選択されます。
Code_2_of_5
Code 2 of 5 は数字だけを使用します。
Code93
Code 93 は、大文字、数字、% $ * / , + を使用します。
Code25intlv
Interleaved 2 of 5 は数字だけを使用しま
す。
Code39
Code 39 は、大文字、数字、% * $ /. , - +
を使用します。
Code39x
Extended Code 39 は、ASCII 文字セット
全体を使用します。
114
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Code49
Code 49 は、各段 8 文字の 2 ~ 8 段か
ら成る 2 次元高密度スタック型バーコード
です。各段には、スタートコードとストップ
コードが含まれます。ASCII 文字セット全
体をエンコードします。
Code93x
Extended Code 93 は、ASCII 文字セット
全体を使用します。
DataMatrix
Data Matrix は、正方形または長方形の
マトリックスパターンに並べられた正方形
モジュールから成る 2 次元高密度バー
コードです。
EAN_13
EAN-13 は、数字(12 個の数字とチェック
デジット)だけを使用します。12 個の数字
だけを文字列として受け取ってチェックデ
ジット(CheckSum)を計算し、それを 13 番
目の位置に追加します。チェックデジット
は、バーコードが正しくスキャンされたかど
うかを検証するために使用される追加の
桁です。チェックデジットは、CheckSum プ
ロパティが true に設定されると自動的に
追加されます。
EAN8
EAN-8 は、数字(7 個の数字とチェックデ
ジット)だけを使用します。
EAN128FNC1
EAN-128 は、運送業で梱包物を識別する
ためのアプリケーション識別子(AI)データ
の 1 次元英数字表現です。
このタイプのバーコードには、以下のセク
ションが含まれています。
先頭のクワイエットゾーン(空白領
域)
Code 128 のスタート文字
スキャナに EAN-128 バーコードで
あることを識別させる FNC(ファン
クション)1 文字
データ(AI + データフィールド)
シンボルチェック文字(「スタート
コード値 + 各文字位置と各文字値
の積」を 103 で除算。この剰余値
がチェックサム)。
ストップ文字
末尾のクワイエットゾーン(空白領
域)
115
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
データセクションの AI は、後に続くデータ
のタイプ(ID、日付、数量、計量単位など)
を設定します。データのタイプごとに固有
のデータ構造があります。この AI がある
ことが、EAN-128 コードが Code 128 と異
なる点です。
1 つのバーコードで複数の AI(およびその
データ)を組み合わせることができます。
EAN128FNC1 は UCC/EAN-128
(EAN128)バーコードタイプの 1 つで、任
意の場所に FNC1 文字を挿入したり、
バーサイズを調整することができるなど、
UCC/EAN-128 にはない機能をサポートし
ています。
FNC1 文字を挿入するには、実行時に
Text プロパティに "\n"(C# の場合)また
は "vbLf"(VB の場合)を設定します。
IntelligentMail
Intelligent Mail(以前の 4-State
Customer Barcode)は、米国内の郵便に
使用される 65 本のバーコードです。
JapanesePostal
これは、日本の郵便制度で使用される
バーコードです。20 桁の英数字をエン
コードします。これには、7 桁の郵便番号
の後に、必要に応じて番地や部屋番号な
どの情報が含まれます。エンコードする
データにはハイフンを含めることができま
す。
Matrix_2_of_5
Matrix 2 of 5 は、3 本の黒バーと 2 本の
白バーから成る比較的高密度のバーコー
ドです。
MicroPDF417
MicroPDF417 は、PDF417 から派生され
た 2 次元多段バーコードです。MicroPDF417 は、データをできる限り小さなサ
イズの 2 次元シンボル(最大 150 バイト、
英数字 250 文字、数字 366 桁)にエン
コードする必要があるアプリケーション用
に設計されています。
MicroPDF417 では、可変長のアプリケー
ション識別子(AI)のフィールド区切り文字
として FNC1 文字を挿入することができま
す。
FNC1 文字を挿入するには、実行時に
Text プロパティに "\n"(C# の場合)また
は "vbLf"(VB の場合)を設定します。
MSI
116
MSI Code は数字だけを使用します。
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Pdf417
Pdf417 は、よく使用されている 2 次元高
密度バーコードです。最大 1,108 バイトの
情報をエンコードできます。このバーコード
は、小さなバーコードを積み重ねて構成さ
れます。ASCII 文字セット全体をエンコード
します。10 のエラー修正レベルと 3 つの
データコンパクションモード(Text、Byte、
および Numeric)があります。このバー
コードシンボルは、英数字で最大 1,850
文字、数字で最大 2,710 桁をエンコードで
きます。
PostNet
PostNet は、数字とチェックデジットを使用
します。
QRCode
QRCode は、英数字やバイトデータに加
えて、日本語の漢字やかな文字も扱うこと
ができる 2 次元バーコードです。このバー
コードは最大 7,366 文字をエンコードでき
ます。
RM4SCC
Royal Mail RM4SCC は、文字と数字
(チェックデジット付き)だけを使用します。
これは、イギリスのロイヤルメールで使用
されるバーコードです。
RSS14
RSS14 は、全方向型 POS スキャンに
EAN.UCC 品目識別を使用する 14 桁の
省スペースシンボル(Reduced Space
Symbology:RSS)です。
RSS14Stacked
RSS14Stacked は、RSS14Truncated と同
様にインジケータデジットを含む EAN.UCC
情報を使用しますが、幅が狭い場合、2 段
に積み重ねられます。
RSS14Stacked では合成オプションを設定
できます。[タイプ]
[タイプ]ドロップダウンリストか
らバーコードのタイプを選択し、[値]
[値]フィー
ルドで合成バーコードの値を指定できま
す。
RSS14StackedOmnidirectional
RSS14StackedOmnidirectional は、
RSS14 と同様に全方向型スキャンを含む
EAN.UCC 情報を使用しますが、幅が狭い
場合、2 段に積み重ねられます。
RSS14Truncated
RSS14Truncated は、RSS14 と同様に
EAN.UCC 情報を使用しますが、POS でス
117
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
キャンされない小さな品目に使用するため
に、0 または 1 のインジケータデジットを
含みます。
RSSExpanded
RSSExpanded は、RSS14 と同様に
EAN.UCC 情報を使用しますが、重量や賞
味期限などの AI 要素を追加します。
RSSExpanded では、可変長のアプリケー
ション識別子(AI)のフィールド区切り文字
として FNC1 文字を挿入することができま
す。
FNC1 文字を挿入するには、実行時に
Text プロパティに "\n"(C# の場合)また
は "vbLf"(VB の場合)を設定します。
RSSExpandedStacked
RSSExpandedStacked は、RSSExpanded
と同様に AI 要素を含む EAN.UCC 情報を
使用しますが、幅が狭い場合、2 段に積
み重ねられます。
RSSExpandedStacked では、可変長のア
プリケーション識別子(AI)のフィールド区
切り文字として FNC1 文字を挿入すること
ができます。
FNC1 文字を挿入するには、実行時に
Text プロパティに "\n"(C# の場合)また
は "vbLf"(VB の場合)を設定します。
RSSLimited
RSS Limited は、RSS14 と同様に
EAN.UCC 情報を使用しますが、POS でス
キャンされない小さな品目に使用するため
に、0 または 1 のインジケータデジットを
含みます。
RSSLimited では合成オプションを設定で
きます。[タイプ]
[タイプ]ドロップダウンリストから
バーコードのタイプを選択し、[値]
[値]フィール
ドで合成バーコードの値を指定できます。
UCCEAN128
UCC/EAN –128 は、ASCII 文字セット全体
を使用します。HIBC アプリケーションで使
用される特殊な Code 128 です。
UPC_A
UPC-A は、数字(11 個の数字とチェック
デジット)だけを使用します。
UPC_E0
UPC-E0 は数字だけを使用します。Zero
Suppression の UPC シンボルに使用され
ます。Caption プロパティには、6 桁の
UPC-E コードまたは完全な 11 桁(必須の
コードタイプ 0 を含む)の UPC-A コードを
入力する必要があります。11 桁のコード
が入力された場合、バーコードコントロー
ルは、可能であればそれを 6 桁の UPC-E
118
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
コードに変換します。11 桁のコードを 6 桁
のコードに変換できない場合は、何も表示
されません。
UPC_E1
UPC-E1 は数字だけを使用します。主に小
売業界で在庫ラベルに使用されます。
UPC-E1 の入力文字列の長さは数字 6 個
です。
バーコードフィールドは、プロパティペインで BarCode プロパティを使用することで、FlexReportDesigner に直接挿入できま
す。Barcode を使用して、バーコードフィールドのバーコードのタイプを設定することもできます。
以下のバーコードは、FNC1 文字をサポートしています。
EAN128FNC1
MicroPDF417
RSSExpanded
RSSExpandedStacked
バーコードのプロパティ
BarcodeOptions は、FlexReport でバーコードをレンダリングするためのプロパティを追加します。BarcodeOptions から公
開される共通のプロパティは次のとおりです。
BarDirection:バーコードの方向(水平または垂直)を選択します。使用可能なオプションは、LeftToRight、
RightToLeft、TopToBottom、BottomToTop です。バーコードの方向は、BarDirectionEnum を使用して設定するこ
ともできます。
CaptionGrouping:キャプションのテキストを、サポートするバーコードタイプに応じて複数のグループに分割します。
値は True または False です。
CaptionPosition:バーコードシンボルに対するキャプションの相対的な垂直位置を選択します。使用可能なオプショ
ンは、None、Above、Below です。
CheckSumEnabled:適切な場合にバーコードのチェックサムを計算してバーコードに含めるかどうかを指定します。
TextAlign:: キャプションテキストの配置を選択します。使用可能なオプションは、Left、Center、Right です。
SupplementNumber:: バーコードデータの補助コードを指定します。補助コードは、EAN または UPC シンボルの場
合、2 桁または 5 桁です。
SizeOptions::
BarHeight:: バーコードの高さを指定します(ツイップ単位)。
ModuleSize:: バーコードのモジュール(最も細いバーの幅)を指定します(ツイップ単位)。
NarrowWideRatio:: 細いバーの幅と太いバーの幅の比率を指定します。
SizeMode:: バーコードのサイズ変更モードを指定します。使用可能なオプションは次のとおりです。
Normal:: 元のサイズと同じバーコードのサイズを維持します。
Scale:: できるだけ広いフィールド領域を使用するようにバーコード画像を拡大縮小します。拡大縮小の
方法は、バーコードタイプによって異なります。たとえば、Code128 のような Bar タイプのバーコードで
は高さが拡大され、Matrix、Rss、Composite などのバーコードでは高さと幅が同じ割合で拡大縮小され
ます。
SupplementSpacing:: メインバーコードと補助バーコードの間隔を指定します。
さまざまなバーコードスタイルに応じて BarcodeOptions から公開されるその他のオプションは次のとおりです。
Code49:
Grouping:: バーコードでグループ化を使用します。値は True または False です。
Group:: バーコードをグループ化する際のグループ番号を取得または設定します。有効な値は 0 ~ 8 です。
DataMatrix::
119
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
EccMode:: ECC モードを選択します。有効な値は、ECC000、ECC050、ECC080、ECC100、ECC140、ECC200 です。
Ecc200SymbolSize: ECC200 シンボルのサイズを選択します。デフォルト値は SquareAuto です。
Ecc200EncodingMode: ECC200 エンコーディングモードを選択します。有効な値は、Auto、ASCII、C40、Text、X12、
EDIFACT、Base256 です。
Ecc000_140SymbolSize::ECC000_140 シンボルのサイズを選択します。
StructuredAppend:: 現在のバーコードシンボルが構造的連接シンボルの一部かどうかを選択します。
StructureNumber:: 構造的連接シンボル内の現在のシンボルの構造番号を指定します。
FileIdentifier:: 関連する構造的連接シンボルグループのファイル識別子を指定します。有効なファイル識別子値は、
[1,254] 以内である必要があります。ファイル識別子を 0 に設定すると、ファイル識別子が自動的に計算されます。
GS1Composite:
Type:: 合成シンボルタイプを選択します。選択できる値は None または CCA です。CCA(Composite Component Version A)は、最小タイプの 2 次元コンポジットコンポーネントです。
Value:: CCA 文字データを取得または設定します。
MicroPDF417:
CompactionMode:: CompactionMode のタイプを選択します。有効な値は、Auto、TextCompactionMode、
NumericCompactionMode、ByteCompactionMode です。
FileID:: 構造的連接シンボルのファイル ID を指定します。0 ~ 899 の値を取ります。
SegmentCount:: 構造的連接シンボルのセグメント数を指定します。0 ~ 99999 の値を取ります。
SegmentIndex:: 構造的連接シンボルのセグメントインデックスを指定します。0 ~ 99998 の範囲で、セグメント数の
値より小さい値を取ります。
Version:: シンボルサイズを選択します。デフォルト値は ColumnPriorAuto です。
PDF417:
Column:: バーコードの列数を指定します。
Row:: バーコードの行数を指定します。
ErrorLevel:: バーコードのエラー修正レベルを指定します。
Type:: PDF417 バーコードのタイプを選択します。使用可能なタイプは Normal および Simple です。
QRCode
Model:: QRCode のモデルを選択します。使用可能なモデルは Model1 および Model2 です。
ErrorLevel:: バーコードのエラー修正レベルを選択します。使用可能なオプションは、Low、Medium、Quality、High
です。
Version:: バーコードのバージョンを指定します。
Mask:: バーコードのマスクに使用されるパターンを選択します。QRCode が正しく読み取られるようにするには、マス
ク処理で明度のバランスを取る必要があります。使用可能なオプションは、Auto、Mask000、Mask001、Mask010、
Mask011、Mask100、Mask101、Mask110、Mask111 です。
Connection:: バーコードにコネクションを使用するかどうかを選択します。値は True または False です。
ConnectionNumber:: バーコードのコネクション番号を指定します。0 ~ 15 の範囲の整数値を取ります。
RssExpandedStacked::
RowCount:: 積み重ねる段数を指定します。
バーコードのクワイエットゾーンは、C1FlexReportDesigner のプロパティペインで MarginBottom、MarginLeft、
MarginRight、および MarginTop プロパティを使用して簡単に指定できます。
計算フィールド
生データを使用しないフィールドを作成するには、計算
計算フィールドが最適です。計算フィールドには、実行時に評価される式が設定さ
れます。これらの式を使用して、データベースに保存されていないデータ値を生成します。
120
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
計算フィールドのドロップダウンには、定義済みの式がいくつか用意されています。
FlexReportDesigner アプリケーションを使用して定義済みの計算フィールドを追加するには
1. C1FlexReportDesigner で新しい FlexReport を作成します。
2. [挿入]
[挿入]タブから、ページフッターセクションに[作成日]と[ページ n/m]の 2 つの計算
計算フィールドを追加します。
3. 設計領域で、これらの計算フィールド内の式を確認します。
4. レポートをプレビュー表示します。
121
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReportDesigner アプリケーションで、計算フィールドを定義し、そのフィールドを追加するには
1.
2.
3.
4.
新しいレポートを作成します。
そのレポートを Orders Details テーブルに連結します。
グループヘッダーで、合計価格のラベルを表示するためのテキスト
テキストフィールド Total を追加します。
[データ]
[データ]タブに移動し、メインデータソースを右クリックして、[計算フィールドの追加]
[計算フィールドの追加]を選択します。VBScript エディタが表示
されます。
5. VBScript エディタ
エディタで、次の式を記述します。
Quantity*UnitPrice
6. 前述した計算フィールドを次のようにドロップします。
122
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
7. レポートをプレビュー表示します。
画像フィールド
画像
画像フィールドは、データ連結された画像または静的な画像を挿入するために使用されます。画像フィールドをクリックすると、レポー
トに挿入する画像ファイルを選択するように求めるダイアログボックスが表示されます。選択した画像がコピーされ、レポートファイル
と同じディレクトリに置かれます。レポートファイルをアプリケーションに埋め込まない場合は、このファイルをアプリケーションと共に配
布する必要があります。レポートファイルをアプリケーションに埋め込むと、非連結ピクチャファイルもすべて埋め込まれます。
FlexReportDesigner アプリケーションを使用して画像フィールドを追加するには
1.
2.
3.
4.
5.
123
C1FlexReportDesigner で新しいレポートを作成します。
そのレポートを Products テーブルに連結します。
製品のテキストフィールド Image が表示されるグループヘッダーを作成します。
[挿入]
[挿入]タブに移動し、[画像]
[画像]フィールドアイコンのドロップダウンをクリックします。
[Picture]を選択し、画像フィールドをレポートのグループヘッダーセクションに追加します。
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
6. レポートをプレビュー表示します。
図形フィールド
図形フィールドは、レポートに幾何学図形を表示するために使用されます。直線は区切りとしてよく使用されます。四角形は
フィールドのグループを強調表示したり、テーブルやグリッドを作成するために使用されます。
式で図形の表示/非表示を定義するためのルールを設定することもできます。たとえば、追加注文レベルが在庫数に満たない
製品の名前を四角形で囲む場合は、レポートの OnPrint プロパティに次の式を記述して、図形の表示/非表示をいつオンにす
るかを定義できます。
If UnitsInStock < ReorderLevel Then
Shapefld.Visible = True
Else
Shapefld.Visible = False
End If
このシナリオの詳細については、「値に基づいたフィールドの表示/非表示」を参照してください。
124
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
サブレポートフィールド
サブレポート
サブレポートフィールドは、レポートにサブレポートを挿入するために使用されます。サブレポートは、別のレポート(メインレポート)の
フィールド内に配置された通常のレポートです。サブレポートは、通常、メインレポート内の現在の値に基づく詳細情報をマスター/詳
細関係として表示する目的で設計されます。
次の例では、メインレポートにはカテゴリが表示され、詳細セクション内のサブレポートには現在のカテゴリに対する製品の詳細が表
示されます。
Categories テーブルと Products テーブルに基づくマスター/詳細レポートを作成するには、カテゴリレポート(マスタービュー)と製品
レポート(詳細ビュー)を作成する必要があります。
手順 1:マスターレポートの作成
:マスターレポートの作成
1. FlexReport ウィザード
ウィザードを使用して、基本レポート定義を作成します。
1. Northwind データベース(ComponentOne Samples\Common フォルダの C1NWind.mdb)から Categories テーブ
ルを選択します。
2. レポートに CategoryName および Description フィールドを挿入します。
125
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
2.
3.
4.
5.
6.
C1FlexReportDesigner アプリケーションで、[設計]
[設計]ボタンをクリックして、レポートの編集を開始します。
ページヘッダーおよびヘッダーセクションの Visible プロパティを False に設定します。
詳細セクションで、DescriptionCtl を選択し、それを CategoryNameCtl の真下に移動します。
プロパティペインを使用して、外観の設定(Background)を変更します。
[プレビュー]
[プレビュー]ボタンを選択すると、カテゴリレポートは次の図のように表示されます。
手順 2:詳細レポートの作成
:詳細レポートの作成
1. C1FlexReportDesigner アプリケーションで[新しいレポート]
[新しいレポート]ボタンをクリックし、FlexReport ウィザード
ウィザードを使用して基本レ
ポート定義を作成します。
1. C1NWind データベースから Products テーブルを選択します。
2. レポートに、ProductName、QuantityPerUnit、UnitPrice、UnitsInStock、および UnitsOnOrder フィールドを挿入
します。
2. Report Designer で、[設計]
[設計]ボタンをクリックして、レポートの編集を開始します。
1. ページヘッダーおよびヘッダーセクションの Visible プロパティを False に設定します。
2. 詳細セクションで、ヘッダーのラベルに合わせてコントロールを配列します。プロパティペインを使用して、外観の設定を
変更します。
手順 3:サブレポートフィールドの作成
:サブレポートフィールドの作成
現在、C1FlexReportDesigner アプリケーションには、Categories Report と Products Report の 2 つのレポートがあります。次の
手順では、サブレポートを作成します。
126
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
1. Designer の[レポート]リストから、[[Categories Report]](マスターレポート)を選択します。
2. 設計モードで、[挿入]
[挿入]タブの[フィールド]
[フィールド]グループから[サブレポート]
[サブレポート]アイコンをクリックし、ドロップダウンメニューか
ら[[Products Report]]を選択します。
3. レポートの詳細セクションで、マウスポインタをクリックおよびドラッグして、サブレポートのフィールドを作成します。
手順 4:サブレポートとマスターレポートのリンク
:サブレポートとマスターレポートのリンク
マスター/詳細関係は、サブレポートフィールドの SubreportFilter プロパティで制御します。このプロパティには、フィルタ条件として
評価されてサブレポートのデータソースに適用できる式を設定する必要があります。
Report Designer では、この式を自動的に作成できます。次の手順を実行します。
1. サブレポートフィールドを右クリックし、メニューから[サブレポートのリンク]
[サブレポートのリンク]を選択します。
[サブレポートのリンク]
[サブレポートのリンク]ダイアログボックスが表示されます。ここで、リンク先のフィールドを選択できます。
127
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
設計領域のサブレポートフィールドは次のように表示されます。
2. フィールドを選択して[[OK]]をクリックすると、Report Designer はリンク式を作成し、その式をサブレポートフィールドの
SubreportFilter プロパティに割り当てます。この例では、式は次のようになります。
"[CategoryID] = '" & [CategoryID] & "'"
チャートフィールド
FlexReport のチャート
チャートフィールドは、FlexReportDesigner に組み込まれています。C1.Win.C1Chart および
C1.Win.C1Chart3D アセンブリを使用して、それぞれ 2D および 3D チャートタイプから成るチャートフィールドがレンダリング
されます。2DChart および 3DChart の詳細については、それぞれ 2DChart のドキュメントおよび 3DChart のドキュメントを参
照してください。
チャートタイプ
FlexReport のチャートフィールド
チャートフィールドでは、Chart.Chart2DGroup.ChartType および Chart.Chart3DGroup.ChartType を使
用して、さまざまなタイプのチャートを挿入できます。C1FlexReport でサポートされているチャートタイプには、面、横棒(水平
の棒グラフ)、縦棒(垂直の棒グラフ)、ドーナツ、散布図(X-Y 値)、折れ線、円、階段、株価、ヒストグラム、レーダー、ポーラ、
および 3D 円錐/円柱/ピラミッドチャートがあります。チャートタイプは、C1FlexReportDesigner のプロパティペインで
ChartType プロパティを使用して簡単に選択できます。
面グラフ
面グラフ:面グラフでは、同じ系列のデータポイントどうしを線で結び、この線の下を塗りつぶすことで 1 つの系列が描画されま
す。系列は、それぞれ前の系列の上に表示されます。
横棒および縦棒グラフ
横棒および縦棒グラフ:横棒グラフまたは縦棒グラフは、各系列を同じ色と幅の棒の集合として表し、各棒の長さは値によって
決定されます。新しい系列は、それぞれ前の系列の棒の集合の隣に棒の集合としてプロットされます。横棒または縦棒グラフ
は、1 つの棒集合に各系列を 1 つの棒として描画します。棒集合の数は、データ内のポイントの数です。各集合は、各系列の
n 番目のデータポイントを表示します。棒が横向きに置かれる場合は横棒グラフと呼ばれ、棒が縦向きに置かれる場合は縦
棒グラフと呼ばれます。
次の図は、横棒
横棒グラフを表します。
128
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次の図は、縦棒
縦棒グラフを表します。
バブルチャート
バブルチャート:バブルチャートは、2 つの独立した値を組み合わせて、ポイントの y 値とサイズを示します。バブルチャート
は、各ポイントの付加的なデータ値をポイントのサイズを変えて表すために使用されます。Y 配列要素は、デカルト座標位置を
決定し(XY プロットグラフと同様)、Y1 要素値は、各ポイントのバブルのサイズを決定します。ポイントのサイズは、面積または
直径に基づいてエンコードできます。
散布図
散布図:散布図は、2 つの値を使用して各データポイントを表します。このタイプのチャートは、統計的手法によって変数間の
関係を定量化(通常、線形回帰分析)するためによく使用されます。
129
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
円グラフ
円グラフ:円グラフは、各系列を円のスライスとして描画します。円の数は、データ内のポイントの数を表します。各円は、各系
列の n 番目のデータポイントを表示します。円グラフをカスタマイズして、凡例やラベルを表示することもできます。詳細につい
ては、「チャートプロパティ」を参照してください。
ドーナツグラフ:
ドーナツグラフは、内径がゼロでない円グラフです。円グラフと機能的には同じですが、とりわけ 3D 効果付きで表示する際な
どに見栄えをよくするために使用できます。円グラフと同様に、各ドーナツは、各データポイントの全体に対する割合として各
系列を表示します。複数のデータポイントが指定されている場合は、グラフに複数のドーナツが表示されます。
ドーナツグラフは、円グラフの InnerRadius プロパティをゼロ以外の値に設定することで作成できます。InnerRadius 値は、円
全体の半径に対する割合を表します。InnerRadius プロパティには、各チャートグループの円オブジェクトでアクセスできます。
レーダーチャート
レーダーチャート:レーダーチャートは、データセットごとにレーダー線に沿って y 値を描画します(x 値は、ラベル以外は無視さ
れます)。データに一意のポイントが n 個ある場合、グラフ面は、n 個の等しい角度のセグメントに分割され、360/n 度の間隔
でレーダー線(各ポイントを表す)が描画されます。デフォルトでは、最初のポイントを表すレーダー線が垂直に描画されます
(90 度)。レーダーチャートはさらにカスタマイズが可能です。詳細については、「チャートプロパティ」を参照してください。
130
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
階段グラフ
階段グラフ:階段グラフは、データポイントどうしを線で結んで系列を描画する XY プロットグラフの形式の 1 つです。これらの
チャートは、X の値が特定の値になると Y の値が突然変化するという、値が離散的に変化する場合によく使用されます。最も
わかりやすい例としては、時間の経過に伴う小切手口座の残高の変化があります。時間の経過(X 値)と共に、預金が発生し
たり、小切手が切られたりします。そのたびに、小切手口座の残高(Y 値)は、徐々にではなく突発的に変更されます。時間が
経過しても預金が発生せず小切手も切られない場合、その期間の残高(Y 値)は変わりません。
折れ線グラフ
折れ線グラフ:折れ線グラフは、データポイントをつないで各系列を描画します。これは、さまざまなデータグループ間の値の
変化を最も効率よく示す方法です。これらのグラフは、長期にわたるトレンドやパフォーマンスを示す場合によく使用されます。
株価チャート
株価チャート:株価チャートは、指定された株の始値、終値、高値、および安値を表示するために財務アプリケーションで使用
されます。株価チャートには次のようなタイプがあります。
ローソク足: ローソク足チャートは、特殊なタイプの HiLoOpenClose チャートで、始値と終値の関係、および高値と安
値の関係を示す際に使用されます。ローソク足チャートでは HiLoOpenClose チャートと同じ価格データ(高値、安値、
始値、終値)が使用されます。ただし、ローソク足チャートには太いローソク状の実体が含まれており、その色と大きさ
で始値と終値の関係に関する追加情報が示されます。たとえば、長い白抜きのローソクは買い圧力を示し、長い塗りつ
131
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ぶされたローソクは売り圧力を示します。
ローソク足チャートは、ローソク、上ヒゲ、および下ヒゲで構成されています。ローソクの胴体部分(始値と終値の間の
バー)は、株価の始値と終値を示しています。ローソクの上下にある細い線(上ヒゲおよび下ヒゲ)は、株価の高値/安
値の範囲を表現しています。空洞のローソクは、株価が上昇したこと(終値が始値より高い)を示しています。白抜きの
ローソクでは、胴体部分の下端が始値を示し、上端が終値を示します。塗りつぶされたローソクは、株価が下降したこ
と(始値が終値より高い)ことを示しています。塗りつぶされたローソクでは、胴体部分の上端が始値を示し、下端が終
値を示します。
C1Chart は、高値に対して Y 値、安値に対して Y1、始値に対して Y2、終値に対して Y3 を使用して、ローソク足チャー
トを作成します。C1Chart は、線の色の値を使用して、株価の下落を表すローソクを自動的に塗りつぶします。
HiLo:: HiLo チャートは、2 つの独立した値を組み合わせて、系列内の各ポイントの高値と安値のデータを提供します。
HiLo チャートは、指定された株価の高値と安値を表示するために、主に財務アプリケーションで使用されます。HiLo
チャートの各系列の Y および Y1 配列の要素が「高」値と「安」値を表します。
HiLoOpenClose:: HiLoOpenClose は、HiLo チャートに似ていますが、4 つの独立した値を組み合わせて、系列内の
ポイントの高値、安値、始値、および終値を提供します。株の高値および安値を表示するほか、Y2 および Y3 配列要素
がそれぞれ株の始値および終値を表します。
ヒストグラム
ヒストグラム:ヒストグラムは、生データ値のコレクションから度数分布をプロットします。これは、グループを形成するデータに
よく使用され、生データのコレクションを計測して、定義された区間内に分布するデータ値の数をプロットすることで生成されま
す。元の値は、ヒストグラムのデータではなく度数を生成するために使用されます。棒グラフに似ていますが、棒グラフが一般
132
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
に質的変数に使用されるのに対して、ヒストグラムは量的変数に使用されることに注意する必要があります。
ヒストグラムと棒グラフは、外観は類似していますが、機能は異なります。棒グラフがデータポイントから作成されるのに対し
て、ヒストグラムはデータの度数分布から作成されます。以下のチャートは、棒グラフとヒストグラムの違いを示しています。ど
ちらのチャートも、使用している Y データはまったく同じです。棒グラフ(上)は、各年の平均気温を発生年ごとに示しています。
ヒストグラム(下)は、入力として同じ気温データを使用していますが、各区間内に分布する気温の数を自動的に集計し、結果
のヒストグラムを描画しています。わかりやすいように、各区間の個数を示したグラフラベルが区間の上部に追加されていま
す。
ヒストグラムは、量的変数のデータ分布にある際だった特徴を特定するために役立ちます。量的変数の重要な特性は次のと
おりです。
典型的な値を明らかにします。
データは一般的な形状になります。データ値は、中央から対称に分布する場合も非対称に分布する場合もあります。
データグループから離れた値がある場合、それらは異常値として示されます。
データ値は標準値に近い場合も遠い場合もあります。
分布は、単一のピークを形成する場合と、複数のピークや谷を形成する場合があります。
チャートタイプをヒストグラムとして選択するには、[チャートグループ]
[チャートグループ]→[グループ
[グループ 0]]に移動し、[チャートタイプ]
[チャートタイプ]を[ヒストグラ
ム]に設定します。
ポーラ
ポーラチャート
チャート:ポーラチャートは、系列ごとに x 座標と y 座標を(theta,r)として描画します。theta は原点からの回転角度で
あり、r は原点からの距離です。theta は、度(デフォルト)またはラジアンを単位として指定できます。X 軸は円なので、X 軸の
最大および最小値は固定されています。系列は、個別に描画することも、積層にして描画することもできます。ポーラチャート
はさらにカスタマイズが可能です。詳細については、「チャートプロパティ」を参照してください。
133
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
3D チャート
円柱グラフ
円柱グラフ:円柱グラフは、横棒および縦棒グラフのバリエーションです。横棒または縦棒が円柱として表されます。円
柱グラフは、両端が同じ楕円形の底面になります。横棒グラフや縦棒グラフと同様に、円柱棒グラフは、個々の項目ま
たは項目グループの比較に適しています。
円錐グラフ
円錐グラフ:円錐グラフは、3D 横棒および縦棒グラフのバリエーションです。横棒または縦棒が円錐として表されま
す。円錐グラフの基本形は、三角形の回転体です。底面はフラットな円形で、湾曲した側面の頂点に 1 つのポイントが
あります。
ピラミッドグラフ
ピラミッドグラフ:ピラミッドグラフは、3D 横棒および縦棒グラフのバリエーションです。横棒または縦棒がピラミッドとし
て表されます。ピラミッドグラフは、底面の形以外は円錐グラフに似ています。ピラミッドグラフは、地理的用途でよく使
用されます。
設計時サポート
FlexReport のチャート
チャートフィールドは、チャートを簡単に操作するための設計時サポートとして、設計時エディタとコレクションエ
134
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ディタを備えています。
チャート
チャートフィールドには、次の設計時エディタを使用します。
チャートプロパティ
チャートデータソース
チャート視覚効果
これらのエディタを呼び出すには、チャートフィールドを右クリックし、必要なエディタを選択します。
チャートプロパティ
このエディタでは、簡単な対話式の方法で新しいチャートの作成または既存のチャートの変更を行うことができます。チャート
のタイプを選択するためのオプションがあります。また、チャートのヘッダー、フッター、凡例、チャート領域、およびプロット領域
の外観設定に加えて、x および y 軸の追加プロパティ設定も含まれます。[チャートプロパティ]ダイアログボックスには、開発
しているチャートのデザインを詳細に調整するためのオプションもあります。次の要素で構成されています。
[ギャラリー項目]
[ギャラリー項目]:[チャートプロパティ]ダイアログボックスの左ペインの[ギャラリー項目]には、チャートのチャートタイ
プやサブタイプを選択するオプションがあります。チャートタイプのすべての選択項目については、「チャートタイプ」を参
照してください。さまざまな単純なチャートタイプの中から選択することも、複合型をクリックして、チャートにさらに機能
を追加することもできます。
[単純型]タブ
[単純型]タブ:[単純型]タブでは、多くの単純なチャートタイプの中から 1 つを選択できます。さらに、より特殊なチャー
トの 1 つを、単純なチャートタイプの横にあるリストボックスから選択します。
135
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
[複合型]タブ
[複合型]タブ:[複合型]タブでは、1 つのチャートグループを使用するか、それとも 2 つのチャートグループを使用する
かを指定できます。また、各グループのドロップダウンボックスで、作成するチャートのタイプを選択できます。グループ
ごとに、グループを積み重ねるか、3D にするかなどを選択できます。
メモ:[グループ 1]のデータに対してチャートタイプを選択しないと、[チャートプロパティ]ダイアログボックスの左ペイン
のリストボックスに、[グループ 1]のデータの要素は表示されません。
チャートデータソース
チャートデータエディタで、チャートデータからデータを設定することでチャートを連結できます。チャート内のデータ系列を追加
または削除し、各データ系列のラベルおよび色を指定し、[積み重ねデータの表示]チェックボックスをオンにしてデータを積み
上げることができます。
チャート視覚効果
136
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
視覚効果は、データ系列、ヘッダー、フッターなどの Chart2D コントロールの要素を視覚的に機能拡張するために使用する
ツールです。既存のすべてのプロジェクトで、このツールが提供する新しい機能を使用できます。[視覚効果]デザイナからいく
つかの簡単な手順を実行することで、チャートの外観を劇的に改善できます。
チャート
チャートフィールドには、次のコレクションエディタを使用します。
ValueLabel コレクションエディタ
コレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[チャート領域]
[チャート領域]→[軸
[軸 X]]→[値ラ
[値ラ
ベル]
ベル]からアクセスできます。詳細については、ValueLabel コレクションエディタのドキュメントを参照してください。
ChartDataSeries コレクションエディタ
コレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[チャートグループ]
[チャートグループ]→[グ
[グ
ループ 0]]→[チャートデータ]
[チャートデータ]→[カテゴリグループ]
[カテゴリグループ]からアクセスできます。詳細については、ChartDataSeries コレク
ションエディタのドキュメントを参照してください。
ChartLabel コレクションエディタ
コレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[チャートラベル]
[チャートラベル]→[デフォルトラ
[デフォルトラ
ベルスタイル]
ベルスタイル]→[ラベルコレクション]
[ラベルコレクション]からアクセスできます。詳細については、Label コレクションエディタのドキュメント
を参照してください。
ChartVisualEffectsStyle コレクションエディタ
コレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[視覚効果]
[視覚効果]→[ス
[ス
タイル]
タイル]からアクセスできます。詳細については、VisualEffectsStyle コレクションエディタのドキュメントを参照してくださ
い。
チャートデータのプロット
137
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
単純な 2D チャートをプロットする手順は次のようになります。
1.
2.
3.
4.
5.
6.
7.
C1FlexReportDesigner アプリケーションを開きます。
C1FlexReport ウィザードを使用して新しいレポートを作成するか、既存のレポート定義を開きます。
詳細セクションにチャート
チャートフィールドを追加します。
チャートフィールドを右クリックし、[チャートプロパティ]
[チャートプロパティ]→[単純型]
[単純型]→[横棒]
[横棒]を選択します。
チャートフィールドを右クリックし、[チャートデータソース]
[チャートデータソース]を選択します。
[単純な 2D チャート]
チャート]をクリックし、[単純な
[単純な 2D チャートの生成]
チャートの生成]チェックボックスをオンにします。
チャートの X および Y 値を指定します。
たとえば、表示されているチャートは、C1NWind.mdb データベースの Products テーブルを使用して作成されており、以下の
プロパティが設定されています。
チャートタイプ
チャートタイプは「横棒」
チャートの X および Y 値はそれぞれ「CategoryID」と「UnitPrice」
系列ラベルを次の手順で追加します。
1. [2D チャートグループ 0]]を選択し、[系列値]
[系列値]を選択します。
2. [系列ラベル]
[系列ラベル]を「CategoryID vs UnitPrice」と指定します。
凡例を次の手順で追加します。
1. プロパティペインに移動します。
2. [凡例]
[凡例]→[テキスト]
[テキスト]で凡例名を「Legend」、[凡例]
[凡例]→[表示]
[表示]を True に設定します。
次の手順でチャートにタイトルを追加します。
1. プロパティペインに移動します。
2. [タイトル]
[タイトル]→[ヘッダー]
[ヘッダー]を選択し、ヘッダーテキストを「Header」、[タイトル]
[タイトル]→[ヘッダー
[ヘッダー]]→[[表示]
表示]を True に設定しま
す。
3. [タイトル]
[タイトル]→[フッター]
[フッター]を選択し、フッターテキストを「Footer」に設定して、チャートにヘッダーとフッターを追加します。
チャートに軸タイトルを追加したり、チャート領域に背景色や境界線を追加することもできます。チャートをカスタマイズするため
に使用するプロパティの詳細については、2DChart のドキュメントを参照してください。
3D チャートタイプを使用して、3 次元データを 3D 面グラフ、3D 棒グラフなどの形式で表すことができます。2D チャートから
3D チャートをプロットするには、VisualizationType プロパティを Chart3D に設定します。3D チャートのプロットの詳細につい
ては、3DChart のドキュメントを参照してください。
非連結チャートでのデータのプロット
FlexReport では、データソースにチャートを連結しなくても、チャートにデータを追加できます。非連結モードで直接 X および
138
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Y の値の配列を設定して、チャートに系列をプロットして表示できます。次の手順を実行して、非連結 2D チャートを追加してみ
ます。
1. C1FlexReportDesigner アプリケーションで、C1FlexReport ウィザード
ウィザードを使用して新しいレポートを作成するか、既存
のレポート定義を開きます。
2. 詳細
詳細セクションにチャート
チャートフィールドを追加します。
3. プロパティ
プロパティウィンドウで[[ChartGroups|Group0|ChartType]]を展開し、[ChartType]ドロップダウンからチャートタイプ
を選択します。この例では、横長グラフタイプを選択します。
4. [ChartGroups|Group0|ChartData]]に移動し、UnboundSeriesList プロパティの隣にある省略符ボタンをクリックし
ます。
5. ChartUnboundDataSeries コレクションエディタ
コレクションエディタで、チャートにプロットする系列の数を追加します。ここでは、2 つの
系列を追加しました。
6. 系列の一方を選択し、SeriesData プロパティの隣にある省略符ボタンをクリックします。
7. 系列データのエディタで、データを入力します。
8. [OK]]をクリックして、エディタを閉じます。
9. [プレビュー]
[プレビュー]ボタンをクリックしてプレビューモードに切り替え、レポートを表示するプレビューモードを開始します。
3D 非連結チャートの場合は、次の手順を実行します。
1. 詳細
詳細セクションにチャート
チャートフィールドを追加します。
2. プロパティ
プロパティウィンドウで[[ChartGroups|Group0|ChartType]]を展開し、[ChartType]ドロップダウンからチャートタイプ
を選択します。この例では、面グラフタイプを選択します。
3. [ChartGroups|Group0|ChartData|UnboundData|GridSet]]に移動します。
4. 必要に応じて、ColumnCount および RowCount プロパティを目的の値に設定します。ここでは、ColumnCount と
RowCount の両方のプロパティを 0 に設定します。
5. GridData プロパティの横にある省略符ボタンをクリックします。
6. 1 次元配列エディタ
次元配列エディタでデータを入力し、閉じます。
7. [プレビュー]
[プレビュー]ボタンをクリックしてプレビューモードに切り替え、レポートを表示するプレビューモードを開始します。
139
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
複数の系列を持つチャート
場合によっては、複数のデータセットまたは複数の系列を持つチャートを作成する必要があります。このようなチャートを作成
するには、各系列の値を設定する必要があります。
例として、C1Nwind.mdb データベースの Products テーブルで、カテゴリ ID(Category ID)に対応する単価(Unit Price)、在
庫数(Units in Stock)、および追加注文レベル(Reorder Level)を表示することにします。次の手順で、このシナリオを実現で
140
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
きます。
1. チャート
チャートフィールドを右クリックし、[チャートデータソース]
[チャートデータソース]を選択します。
2. [2D チャートグループ 0]]をクリックし、[系列値]
[系列値]をクリックします。
3. プラス記号をクリックし、選択した[系列ラベル]
[系列ラベル]を指定し、ドロップダウンリストから[値]
[値]を指定します。[スタイル]
[スタイル]タブ
の[塗りつぶし]
[塗りつぶし]オプションから、系列に色を追加することもできます。この例では、複数系列チャートに対して次のデー
タを指定しました。
2.
3.
4.
5.
系列ラベル
値
スタイル|塗りつぶし
Unit Price
UnitPrice
青紫
Units in Stock
UnitsinStock
ペールターコイズ
Reorder Level
ReorderLevel
濃いピンク
凡例を作成するには
チャート
チャートフィールドを右クリックします。
[チャートプロパティ]
[チャートプロパティ]を選択します。
[外観]
[外観]→[凡例]
[凡例]に移動します。
[表示]
[表示]チェックボックスをオンにし、[テキスト]
[テキスト]として「Legend」と記述します。
グループ化されたレポート内のチャート
FlexReport for WinForms では、複数のグループを持つレポートを作成できます。たとえば、1 つの単純なレポートにすべて
の製品をリストするのではなく、製品をカテゴリ別にグループ化できます。各グループには、ヘッダーセクションとフッターセク
ションがあり、グループのタイトルや小計などの情報を表示できます。
グループヘッダーにチャートを追加すると、そのチャートには現在のグループのデータだけが表示されます。それに対して、レ
ポートヘッダーやレポートフッターにチャートを追加すると、そのチャートにはレポートのすべてのデータが表示されます。
次に、レポートデザイナに表示されるレポート定義の模式図を示します。これは、レポートヘッダーとグループヘッダーにそれ
ぞれチャート
チャートフィールドを追加した場合の効果も示しています。
レポートヘッダーセクション
ここに追加されたチャートフィールドは、
レポート全体に対して 1 つのチャートを生成します。
このチャートは、レポートのデータソース内の
すべてのデータを表示します。
ページヘッダーセクション
グループヘッダーセクション(
グループヘッダーセクション(CategoryName))
ここに追加されたチャートフィールドは、
CategoryName 値ごとに 1 つのチャートを生成します。
各チャートは、現在の CategoryName 内の
すべてのデータを表示します。
詳細セクション
グループフッターセクション(
グループフッターセクション(CategoryName))
ページフッターセクション
レポートフッターセクション
141
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
この例を使用して、各カテゴリのレポートデータをチャートで視覚化してみます。
チャート
チャートフィールドをグループヘッダーセクション(CategoryName)に追加し、「チャートデータのプロット」の説明に従って
チャートを作成します。チャートの X および Y 値として ProductName および UnitPrice を指定し、UnitPrice として[系列
[系列
値]
値]の[値]
[値]を指定します。
次の画像は、このレポートのスクリーンショットです。グループヘッダー、グループヘッダー内のチャート、およびいくつかの詳
細レコードが表示されています。
上のチャートは、"Condiments" カテゴリ内の製品の単価を示しています。下のチャートは、"Confections" カテゴリ内の製品
の単価を示しています。
142
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport カスタムフィールドの追加
FlexReport のカスタムフィールドは、C1.Win.FlexReport.CustomFields.4 アセンブリにあります。独自のカスタムフィールド
を作成し、それを Report Designer パレットに追加できます。それには、次の作業が必要です。
1. C1.Win.FlexReport.CustomFields から派生されたカスタムフィールドクラスを作成します。
2. カスタムフィールドアセンブリを C1FlexReportDesigner.4.exe.settings に登録します。
たとえば、MyField カスタムフィールドを登録するには、次のように、C1FlexReportDesigner.4.exe.settings ファイルの
<customfields> セクションにコントロールを追加します。
<customfields>
<!-- この行はデザイナに新しいフィールドを追加します -->
<item value="MyCustomFieldAssembly;MyCustomFieldAssembly.MyField" />
</customfields>
上記のコードは、フィールドが "MyField" という名前で、"MyCustomFieldAssembly" という名前のアセンブリに含まれている
と仮定しています。また、MyCustomFieldAssembly は、デザイナと同じフォルダにある必要があります。
次は、FlexReportDesigner アプリケーションにデフォルトでロードされる組み込みの標準カスタムフィールドです。
SuperLabel
Maps
これらのカスタムフィールドを実装するためのソースコードは次のようになります。
<customfields>
<item value="C1.Win.FlexReport.CustomFields;C1.Win.FlexReport.CustomFields.SuperLabel"
/>
<item value="C1.Win.FlexReport.CustomFields;C1.Win.FlexReport.CustomFields.Map" />
</customfields>
143
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
マップカスタムフィールド
FlexReport は、高い拡張性を持つカスタムフィールドアーキテクチャを使用してマップフィールドをサポートします。以下のト
ピックでは、FlexReportDesigner アプリケーションを使用してレポート内のマップフィールドをカスタマイズする方法を説明し
ます。
マップカスタムフィールドは、 2 つのアセンブリ、C1.WPF と C1.WPF.Maps を使用します。開始する前に、これらのアセンブリ
が使用でき、プロジェクトから参照できるようにしてください。
FlexReportDesigner アプリケーションでマップカスタムフィールドの使用を開始するには、次の手順を実行します。
1. C1FlexReportDesigner アプリケーションを実行します。
2. C1FlexReportDesigner ツールバーにマップアイコンがあることを確認します。アイコンがない場合
は、C1FlexReportDesigner.4.exe.settings ファイルの <customfields> セクションに次の行を追加する必要があり
ます。
<item value="C1.Win.FlexReport.CustomFields.4;C1.Win.FlexReport.CustomFields.Map"
/>
3. 新しいレポートを作成するか、既存のレポートを開きます。例については、「手順 1/4:レポート定義の作成」を参照して
ください。
4. マップアイコンをクリックし、レポートまでドラッグしてマップフィールドを追加します。
これで終わりです。マップフィールドには主に次の要素があります。
タイルレイヤおよびデータレイヤ
凡例
スタイル
式
自動ズーム/中央揃えおよびデータ追跡
C1FlexReport 定義にマップフィールドが含まれ、レポートが非同期に生成されると、マップフィールドを C1FlexViewer コ
ントロールに表示することができません。この回避策として、C1FlexViewer.UseAsyncRendering プロパティを False
に設定してください。
マップカスタムフィールドのプロパティ
以下のセクションでは、マップカスタムフィールドの重要なプロパティについて説明します。
レイヤ
マップのメイン部分は、地球表面またはその一部を表すラスターグラフィックを提供するタイルレイヤと、空間データを表す 0
個以上のレイヤから成ります。
タイルレイヤは、TileSource プロパティによって指定されます。これは、VirtualEarth タイルソース(道路、航空、または混合
ソース)に設定できます。タイルソースは「none」に設定でき、その場合、マップ上にタイルは描画されません。これは、特に
KML などの他のレイヤがマップの視覚化に十分なデータを提供する場合に役立ちます。
タイルソースが「none」でない場合、タイルはレポートの実行時にネットワーク上の場所からロードされます。これは、かなり低
速である場合があります。
タイルレイヤ以外のレイヤは、Layers コレクションに格納されます。現在、次の 3 つのレイヤタイプがサポートされています。
ポイント
ポイント。「ポイント」レイヤを使用すると、空間データをマップ上のポイントとして表示できます。「ポイント」レイヤでは、
データ行ごとに 1 つのマーカーが描画されます。
線。「線」レイヤは、データ行ごとに 1 本の直線を 2 ポイント間に描画します。
KML レイヤ
レイヤ。KML(Keyhole マークアップ言語)は、さまざまな地理情報の記述を可能にする XML ベースの言語で
す。KML の詳細については、http://en.wikipedia.org/wiki/Keyhole_Markup_Language を参照してください。KML レ
イヤを使用すると、ローカルまたは Web ベースの KML ファイルをマップにロードして表示できます。
144
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
トラッキング
マップフィールドによって表示されるマップは、マップ上に表示されるデータを自動的に中央揃えおよびズームインできます。こ
の動作は次の 2 つの要素によって決定されます。
マップフィールド全体に指定される AutoCenter プロパティと AutoZoom プロパティの値、および自動的な中央揃え/
ズームを微調整するためのいくつかの関連プロパティ
(AutoZoomPadLon、AutoZoomPadLat、MaxAutoZoom、RoundAutoZoom)。
データが「トラッキング」される場合は、レイヤによって表される空間データ。トラッキング(空間データの特定の部分を
自動的な中央揃えとズームに使用するかどうかなど)は、レイヤの Track プロパティによって決定されます。また、KML
レイヤの場合は、特定の KML 項目をトラッキングするかどうかを決定する式を指定できます。
スタイル
マップ要素の視覚属性は主にスタイルによって定義されます。スタイルにはいくつかの種類があります(ポイントマーカー
スタイル、線スタイル、KML 項目スタイル)。適用可能な種類は、たとえば、ポイントレイヤはポイントマーカースタイルを
使用し、線レイヤは線スタイルを使用するというように、コンテキストによって決まります。通常、スタイルは、データ依存の
式(実際のスタイルが実行時のデータによって決まる)として指定され、デフォルトで使用されるフォールバックスタイルを
持ちます。スタイル式の指定および評価方法について次に説明します。
マップカスタムフィールドには、次の 3 つのスタイルコレクションが含まれます。
MarkerStyles
LineStyles
KmlItemStyles
これらのスタイルは、マップ
マップ上に定義されているすべてのレイヤと、現在のレポート内の他のマップ
マップフィールドでも使用できま
す。各コレクション内のスタイルは、インデックス、または名前(Name プロパティを使用。推奨)のいずれかによってアクセス可
能です。スタイル式が文字列と評価された場合は、その文字列を使用して一致するスタイルが検索されます。最初は、現在の
マップを検索し、これが失敗した場合は、現在のレポート内の他のすべてのマップを検索します(種類が一致するスタイルだけ
が検索されます。たとえば、ポイントマーカースタイルの場合は、MarkerStyles コレクションだけが検索されます)。
空間位置
ポイントおよび線レイヤでは、データの空間位置を次の 2 つの方法で指定できます。
実行時に経度/緯度ペアとして評価される 2 つの式として。通常、これらは、データソースに格納された対応するデータ
フィールド(経度と緯度)を直接参照します。
MapLocation として。これは、1 つの文字列として評価される式(または式リスト)です。この文字列から、外部のオン
ラインサービス(Google マップ)を使用して、対応する空間位置を取得できます。指定した MapLocation にセミコロン
が含まれる場合は、セミコロン区切りの式リストとして扱われます。式はそれぞれ個別に評価された後、結合されてクエ
リーとして使用されます。典型的な MapLocation は次のようになります。
"Address;City;PostalCode;Country"
これは、Address、City、PostalCode、Country の各フィールドをデータソースから取得した後、それらを結合して、外部
サービスへのクエリーを実行します。
MapLocation の使用は、インターネットアクセスに非常に時間がかかる場合があることに注意してください。そのた
め、デフォルトでは、取得された空間データはローカルディスクファイルに格納されます。このファイルのパス
は、Map.GeoCachePath プロパティで指定されます。デフォルトでは、このファイルの名前は「geocache.xml」で、レ
ポート定義と同じディレクトリに格納されます。ジオキャッシングの無効化は推奨されません。
ポイントレイヤ
ポイントレイヤを使用すると、データソースのレコードごとに 1 つずつ、ポイント位置マーカーが表示されます。マーカーの位置
は、「空間位置」で説明したように、経度/緯度ペア、または MapLocation によって指定されます。以下に、ポイントレイヤの
重要な側面を説明します。
145
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
データアクセス:
データアクセス:実行時にポイントレイヤが処理される際は、レコードソース(レイヤ自身の DataSource が指定されて
いる場合はそのレコードソース、または現在のグループによってフィルタ処理されたレポートのレコードソースのいずれ
か)内をループして、データレコードごとにマークが描画されます。
ビジュアルスタイル:
ビジュアルスタイル:ポイントマーカーの外観は、適用されるマーカースタイルによって決まります。ポイントレイヤには、
マーカーの形状、色などを指定できるデフォルトの MarkerStyle プロパティが提供されています。MarkerStyleExpr
式を指定することもできます。この場合、実行時にデータレコードごとにこの式が評価され、一致するマーカースタイル
が現在のマップの MarkerStyles コレクション内で見つかるか、またはレポート内の他のマップのコレクション内で見つ
かった場合は、デフォルトではなく、そのスタイルが適用されます。(前述のように、スタイル式は、スタイルコレクション
内のスタイル名に一致する文字列として評価される必要があります。)
クラスタ化: 複数のポイントマーカーが互いに近接している場合は、それらを 1 つのマーカーに「クラスタ化」できます。
このマーカーには、それが表しているクラスタ化ポイントマーカーの数が常に表示されます。クラスタマーカーには、ポ
イントマーカーと異なるビジュアルスタイルを設定でき、表しているポイントの数に応じて視覚スタイルを変えることもで
きます。クラスタスタイルはポイントレイヤの ClusterStyles コレクションによって指定されます。複数のスタイルが提供
されている場合は、クラスタのサイズによって特定のスタイルが決定されます。関連するポイントレイヤのプロパティ
は、ClusterDistance、ClusterDistribution、ClusterStyles です。
トラッキング: Track プロパティが True の場合は、レイヤのすべてのポイントが自動的な中央揃えおよびズームの対
象となります。
線レイヤ
線レイヤを使用すると、マップ上のポイント間に線が描画されます。2 つのポイントを結ぶ線が、データレコードごとに 1 本ずつ
描画されます。各ポイントの空間位置は、ポイントレイヤと同じ方法で指定できます。つまり、2 つの経度/緯度ペア(線の端に
1 つずつ)、またはオンラインサービスへの位置の要求に使用される 2 つの MapLocation によります。以下に、線レイヤの
重要な側面を説明します。
データアクセス:
データアクセス:ポイントレイヤと同様に、線レイヤでは、レイヤ自身の DataSource を指定するか、現在のグループに
よってフィルタ処理されたレポートのレコードソースを使用できます。
ビジュアルスタイル:
ビジュアルスタイル:スタイルは、おおよそポイントレイヤと同じ方法で処理されますが、MarkerStyles ではなく
LineStyles コレクションが使用されます。
トラッキング: Track プロパティが True の場合は、レイヤのすべての線が自動的な中央揃えおよびズームの対象とな
ります。
KML レイヤ
KML レイヤは、KML(Keyhole マークアップ言語)または KMZ(圧縮された KML)ファイルをマップ上にレンダリングします。
ファイル名は、レイヤの KmlFileName プロパティによって指定されます。このファイルは、URL やローカルディスクファイルか
らロードしたり、レポートに埋め込むことができます。ファイルが埋め込まれておらず(EmbedKmlFile が False)、ディレクトリ
が指定されていない場合は、レポート定義を格納するディレクトリからファイルがロードされます。
KML 項目式:
項目式:KML レイヤがレンダリングされる際は、KML ファイル内にある項目が順に処理されます。項目がロード
されるたびに、レイヤ上で指定されている複数の式が評価され、これによって処理を制御できます。たとえば、さまざま
な条件に基づいて特定の項目だけをロードしたり、項目の視覚属性だけを変更することができます。また、KML レイヤ
に対して DataSource が指定されている場合は、項目式を評価する前に、データを KML 項目ごとにフィルタ処理でき
ます。以下では、KML 項目式の評価にかかわるプロパティについて詳しく説明します。すべての式で、現在処理中の
KML 項目名を参照する特別な変数 kmlItemName を使用できることに注意してください。
ItemFilterExpr:: KML レイヤで DataSourceが指定されている場合にのみ、他の式を評価する前に、取得されたデー
タにこのフィルタが適用されます。たとえば、レイヤのレコードソースに Country フィールドが含まれ、KML ファイルに
国の項目が含まれている場合、次のフィルタは、
kmlItemName=Country
KML 項目ごとに、他の項目式が現在の項目の国に対応するデータを使用して評価されるようにします。
ItemTrackExpr:: 指定された場合は、項目を使用してマップを自動的に中央揃え/ズームするかどうかを決定します。
空のままにすると、true と見なされます。
ItemVisibleExpr:: 指定された場合は、項目の表示/非表示を決定します。空のままにすると、true と見なされます。
ItemStyleExpr:: この式が(現在のマップまたはレポート内の他の任意のマップの)KmlItemStyles コレクション内の
有効なスタイル名として評価された場合は、このスタイルが項目に適用されます。これは、たとえば、州の合計注文数
などのデータ値に応じて、各州を異なる色で塗りつぶす場合に使用できます。
ItemStyle.ItemNameExpr::KML 項目スタイル自身が、1 つの計算されたプロパティとして、項目の名前を保持してい
146
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ます。これを使用して、マップ上にレンダリングされる名前を隠したり、それをレポートデータ(合計注文数など)に置き
換えることができます。
凡例
マップは、関連する凡例をマップ境界内にレンダリングできます。凡例をマップの境界の外に簡単に配置できるように、凡例を
レポート内の任意のマップフィールドに関連付けることができます。これにより、別のマップを説明する凡例を保持するだけの
空のマップフィールドを追加できます。
凡例は、マップ
マップフィールドの Legends コレクション内に格納されます。凡例を追加するには、このコレクションに項目を追加し
ます。マップの境界内の凡例の位置は、LegendAlignment プロパティによって決定されます。Orientation は、凡例内の項
目を垂直方向(デフォルト)と水平方向のどちらで配置するかを決定します。他のいくつかのプロパティを使用して、凡例の外
観を微調整できます。
凡例内の項目は Items コレクションによって表されます。凡例の Automatic プロパティが True に設定されている場合、この
コレクションには、現在のマップの KML 以外のレイヤからデータを自動的に挿入できます。その場合、Items コレクションは編
集できません。それ以外の場合は、凡例項目を手動で追加する必要があります。
次のタイプの凡例項目がサポートされています。
LegendLayerStyleItem:レイヤスタイルを表します。デザイナで、凡例項目によって表される既存のレイヤまたはスタ
イルを選択できます。選択したレイヤスタイルに応じて、凡例項目はポイントマーカー(ポイントレイヤ/スタイルの場
合)、線(線レイヤ/スタイルの場合)、または色見本(KML 項目スタイルの場合)を表します。
LegendColorSwatchItem:任意の色見本を表します。
LegendTextItem:任意のテキストを表します。
マップカスタムフィールドの追加
マップ
マップフィールドの基礎を理解できたので、ここでは、都市ごとに集計された従業員、納入業者、顧客を表示するレポートにマップを追
加します。
次の手順を実行します。
1. 基本のレポートを作成します。
デザイナで新しいレポートを追加し、データソースとして C1NWind.mdb を指定して、次の SQL クエリーを使用します。
Customers and Suppliers by City
2. メインマップを追加します。
マップをレポートのヘッダーに追加します。
レポートデザイナで、ヘッダーの下端を下方向にドラッグして、マップのための領域を空けます。
マップカスタムフィールドアイコン(地球儀)をクリックし、ヘッダー上にドラッグします。
3. マップのプロパティを調整します。
マップのプロパティを次のように設定します(以下はデフォルト値以外のみ)。
AutoCenter:False
AutoZoom:False
CenterLatitude:10
CenterLongitude:15
ShowScale:True
TileSource:VirtualEarthAriel
ZoomLevel:.55
4. レイヤを追加します。
Layers コレクションの横にある楕円ボタンをクリックして、LayerBase コレクションエディタ
コレクションエディタを開きます。メンバ「Employees」、
「Suppliers」、および「Customers」を追加し、それぞれのプロパティを次に示すように設定します。
147
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
設計領域は次のようになります。
148
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
5. レポートをプレビュー表示します。
149
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
SuperLabel カスタムフィールド
SuperLabel フィールドは、レポートに HTML テキストを挿入するために使用されます。
マップカスタムフィールドの追加で作成したレポートに SuperLabel フィールドを追加してみます。
1.
2.
3.
4.
レポートを開きます。
ページヘッダーの Visible プロパティを True に設定します。
SuperLabel フィールドをレポートのページヘッダーセクションにドロップします。
プロパティペインで、Text プロパティを次のテキストに設定します。
SuperLabel.Text
150
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
<html><body><font color="Red">Customers and Suppliers by City</font></body>
</html>
5. デザイナには、SuperLabel フィールドが次のように表示されます。
6. レポートをプレビュー表示します。
151
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
パラメータの操作
パラメータの使用
FlexReport のレポートパラメータを使用して、以下のタスクを実行できます。
データ連結
計算フィールドの式の作成
サブレポートの作成
152
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
複数値パラメータの追加によるフィールドへの複数値の受け渡し
レポートへの値の暗黙的な受け渡し
カスケードパラメータを使用した大量データの管理
レポートへのパラメータの追加
レポートにパラメータを追加する手順は次のとおりです。
1. C1FlexReportDesigner.exe アプリケーションを実行します。
2. 新しいレポートを作成します。レポートをデータソースに連結します。これはメインデータソースです。レポートが設計
モードで開かれます。
3. [データ]
[データ]タブをクリックします。
4. [データソース]
[データソース]を右クリックし、[データソースの追加]
[データソースの追加]をクリックして、パラメータを指定するためのデータソースを追加
します。レポートに追加するパラメータと同じ数のデータソースを追加します。詳細については、「複数のデータソースの
追加」を参照してください。
5. [パラメータ]
[パラメータ]を右クリックし、コンテキストメニューから[パラメータの追加]
[パラメータの追加]を選択します。
6. パラメータを使用して実行するタスクに応じて、[プロパティ]
[プロパティ]ペインからパラメータのプロパティを設定します。
153
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
この後のセクションでは、パラメータを使用して実行できるさまざまなタスクについて説明します。
データ連結
レポートパラメータでデータ連結を実行するには、次の手順に従います。
2. C1FlexReportDesigner.exe アプリケーションを実行します。
3. 新しいレポートを作成します。レポートをデータソースに連結します。これはメインデータソースです。レポートが設計
モードで開かれます。
4. [データ]
[データ]タブをクリックします。
5. [データソース]
[データソース]を右クリックし、[データソースの追加]
[データソースの追加]を選択します。[データソース]
[データソース]ダイアログボックスが表示されま
す。
6. DataSource1 などのデータソース
データソースを選択し、新しいデータソースを作成して、[接続]、[データプロバイダ]、[接続文字
列]などを設定します。
7. [プロパティ]
[プロパティ]ペインから Name プロパティを設定することで、DataSource1 の名前を変更できます。ここでは、Name
を dsCategories に変更しました。
8. [パラメータ]
[パラメータ]を右クリックし、[パラメータの追加]
[パラメータの追加]を選択して、パラメータを追加します。
9. [プロパティ]
[プロパティ]ペインで、AllowedValuesDefinition の横にある省略符ボタンをクリックしま
す。[[AllowedValuesDefinition エディタ]
エディタ]ダイアログボックスが表示されます。
154
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
10. 図のように、[データソースから]
[データソースから]ラジオボタンを選択し、データソースをパラメータに連結するために[データソース]、
[ラベル]、および[値]を選択します。[OK]をクリックします。
11. [プロパティ]
[プロパティ]ペインから、DataType を[[AllowedValuesDefinition エディタ]
エディタ]の[値]
[値]のデータタイプと同じ値に設定し
ます。ここでは、Value=CategoryID は整数なので、DataType を整数に設定します。
計算フィールド
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
155
C1FlexReportDesigner.exe アプリケーションを実行します。
新しいレポートを作成します。それを Products テーブルに連結します。レポートが設計モードで開かれます。
[データ]
[データ]タブをクリックします。
[データソース]
[データソース]を右クリックし、[データソースの追加]
[データソースの追加]を選択します。[データソース]
[データソース]ダイアログボックスが表示されます。
別のデータソースを追加し、それを Products テーブルに連結します。このデータソースはパラメータ用として追加します。この
データソースの名前を「dsProducts」と指定します。
[パラメータ]
[パラメータ]を右クリックし、[パラメータの追加]
[パラメータの追加]を選択して、パラメータ Parameter0 を追加します。
[プロパティ]
[プロパティ]ペインで、AllowedValuesDefinition の横にある省略符ボタンをクリックします。[[AllowedValuesDefinition
エディタ]
エディタ]ダイアログボックスが表示されます。
[データソースから]
[データソースから]ラジオボタンを選択し、[データソース]として[dsProducts]、[ラベル]として[ProductName]、および[値]
として[ProductName]を選択します。[[OK]]をクリックします。
もう 1 つのパラメータ Discount を追加します。
メインデータソースを編集します。次の SQL 文を記述します。
Select * from Products where ProductName=Parameter0
[挿入]
[挿入]タブで、[フィールド]グループから計算
計算フィールドを追加します。VBScript エディタ
エディタが開きます。
エディタで次の式を入力します。
UnitPrice*Discount
計算フィールドを詳細セクションにドロップします。また、ページヘッダーセクションに、「Discounted Price」を表示するためのテ
キストフィールドを追加します。
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
14. レポートをプレビュー表示します。Parameter0 から製品名を選択し、Discount パラメータに割引値を入力します。[パラメータ
[パラメータ
の適用]
の適用]をクリックすると、割引された価格が計算されます。
サブレポート
サブレポートは、メインレポートに存在するデータに関する追加情報を表示する場合に便利です。レポートにパラメータを渡すように、
156
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
サブレポートにパラメータを渡して、サブレポート内のデータ値間の関係を形成することもできます。
たとえば、メインレポート内に並べてレンダリングされるサブレポートにデータをフェッチするとします。このようなシナリオを実現するに
は、次の手順に従います。
1.
2.
3.
4.
5.
6.
7.
C1FlexReportDesigner.exe アプリケーションを実行します。
非連結モードで、メインレポートの新しいレポート定義を作成します。
もう 1 つのレポートを作成し、それを C1NWind.mdb にある Photos レポートに連結します。
[挿入]
[挿入]タブからサブレポート
サブレポートフィールドをクリックします。利用できるレポートがすべて表示されます。
2 つのサブレポート
サブレポートフィールドをドロップして横に並べます。
2 つのパラメータを追加します。これらのパラメータは、2 つのサブレポートに 1 つずつ渡されます。
Name プロパティからパラメータ名を設定します。左側のサブレポートのパラメータを「prmLeftPlace」に、右側のサブレポート
のパラメータを「prmRightPlace」にします。
8. パラメータのデータソースを追加し、データプロバイダと接続文字列を設定します。パラメータに値を渡すために使用される
SQL 文を記述します。たとえば、Photos レポートから Place を選択するには、次のようになります。
select distinct Place from Photos order by Place
9. 2 つのパラメータに対して AllowedValuesDefinition プロパティを設定します。a. AllowedValuesDefinition の横にある省略符ボタンをクリックします。
b. [AllowedValuesDefinition エディタ]
エディタ]ダイアログボックスで、[データソースから]
[データソースから]ラジオボタンを選択します。
c. データソースをパラメータに連結するために、[データソース]、[ラベル]、および[値]を選択します。
10. 各パラメータの Prompt プロパティからプロンプトテキストを設定します。
11. サブレポート Photos を選択し、[データ]タブをクリックします。
12. データソースを編集し、次の SQL 文を記述します。
select distinct Place from Photos order by Place
13. メインレポートを選択し、左側のサブレポートフィールドをクリックします。横の省略符をクリックすると、[[ParameterValues エ
ディタ]
ディタ]が表示されます。次のように名前と値を設定します。
14. 同様に、右側のサブレポートフィールドに対して、[名前]
[名前]を「prmPlace」、[値]
[値]を「prmRightPlace.Value」に設定します。デザイ
ンビューでは、次の図のようにレポートが表示されます。
15. レポートをプレビュー表示します。
157
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
2 つのパラメータプロンプト(2 つのサブレポートに 1 つずつ)に値(場所)のリストが表示されていることがわかります。値を選択
し、[パラメータの適用]
[パラメータの適用]をクリックします。ここでは、左側のサブレポートで Chaumont、右側のサブレポートで Cote d'Azur を選択し
ました。
パラメータのカスケード
カスケードパラメータは、一方のパラメータの値のリストがもう一方のパラメータで選択されている値に依存する場合に使用さ
れます。したがって、パラメータは 2 つ存在します。一方のパラメータのデータ値をリストするために使用されるデータソース
が、もう一方のパラメータによって変更されます。
たとえば、選択されたカテゴリに属する製品リストから製品を選択する場合は、以下を実行する必要があります。
1. 新しいレポートを作成します。そのレポートを C1NWind.mdb 内の Order Details に連結します。
2. 2 つのデータソース(2 つのパラメータに 1 つずつ)を追加します。
パラメータ prmCategory に値を渡すための dsCategory
パラメータ prmProduct に値を渡すための dsProduct
3. dsCategories を右クリックし、[編集]
[編集]を選択してデータソースを編集します。データプロバイダと接続文字列を設定し、
158
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次の SQL 文を記述します。
select * from categories
4. dsProducts に対して上記の手順を繰り返します。次の SQL 文を記述します。
select * from products where categoryid = prmCategory
5. メイン
メインデータソースを右クリックし、[編集]
[編集]を選択し、メインデータソースに対する SQL 文を記述します。
select * from [order details] where productid = prmProduct
6. 2 つのパラメータを追加します。
カテゴリを選択するための prmCategory
prmCategory パラメータで選択されたカテゴリに属する製品を選択するための prmProduct
7. 次のように、2 つのパラメータに対して AllowedValuesDefinition プロパティを設定します。
prmCategory
prmProduct
データソース
dsCategory
dsProduct
ラベル
CategoryName
ProductName
値
CategoryID
ProductID
8. [プレビュー]をクリックします。
159
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
カテゴリを選択すると、そのカテゴリ内の製品のリストが、もう 1 つのパラメータに表示されます。次に、製品を選択し、[パラ
[パラ
メータの適用]
メータの適用]をクリックします。ここでは、Condiments カテゴリに含まれる Aniseed Syrup 製品のデータが表示されていま
す。
複数値パラメータ
複数値パラメータは、1 つのパラメータに対して複数の値を渡すことができるパラメータコレクションです。ユーザーは、データ
のリストから複数のデータを選択できます。
FlexReportDesigner アプリケーションでは、Parameter.MultiValue を True に設定することで、パラメータを複数値にするこ
とができます。
160
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
複数値パラメータのあるレポートをプレビューすると、そのパラメータに連結された値のリストが表示されます。ここから、レ
ポートにレンダリングする値を選択できます。
パラメータの暗黙的な受け渡し
パラメータを暗黙的に渡すことで、レポートのレンダリング中に、ユーザープロンプト(ユーザー操作)なしでパラメータの値を渡
すことができます。
パラメータを暗黙的に渡すには、パラメータプロパティを定義し、Parameter.Hidden プロパティを True に設定します。
複数のデータソースの追加
FlexReport 定義には、複数のデータソースを設定することができます。FlexReportDesigner を使用してレポートに新しいデー
タソースを追加することは、とても簡単です。メインデータソースに連結された既存のレポートにデータソースを追加する手順
161
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
は、次のとおりです。
1. [データ]
[データ]タブをクリックします。
2. [データソース]
[データソース]ノードを右クリックします。
3. [データソースの追加]
[データソースの追加]を選択します。
または
1. [ホーム]
[ホーム]タブをクリックします。
2. [データソース]
[データソース]オプションのドロップダウンをクリックします。
3. [データソースの追加]
[データソースの追加]をクリックします。
4. [データソース]
[データソース]ダイアログボックスが表示されます。[データソース]オプションの横にあるドロップダウンから、
DataSource1、DataSource2 などを選択して必要な数のデータソースを追加します。後で、データソースの Name プロ
パティからこれらのデータソースの名前を変更できます。
162
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport のデータソースの変更
新しいデータ連結レポートを作成する場合は、最初にデータソースを選択します。FlexReportDesigner アプリケーションを使
用すると、レポートやその要素の連結先になるすべてのデータソースを簡単に編集できます。
FlexReportDesigner を使用してレポートのデータソースを変更/編集する手順は、次のとおりです。
1. [データ]
[データ]タブをクリックします。
2. [データソース]
[データソース]ノードを展開します。
3. 編集するデータソースを右クリックし、[編集]
[編集]を選択します。
または
1. [ホーム]
[ホーム]をクリックします。
2. [データソース]
[データソース]オプションのドロップダウンをクリックします。
3. データソースを選択し、[編集]
[編集]をクリックします。
163
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
4. [データソース]
[データソース]ダイアログボックスが表示されます。新しいデータソースを選択し、接続文字列を変更し、SQL 文を編集
したら、完了です。
FlexReportDesigner でデータのソート化
FlexReportDesigner を使用すると、レポート内のデータを簡単にソートできます。レポートのデータをソートする手順は、次の
とおりです。
1. C1NWind.mdb を通してメインデータソースに連結された新しいレポート(Products Report)を作成します。次の図のよ
164
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
うなレポートになるように、テキストフィールドと計算フィールドとして Product Name、Quantity Per Unit、および Stock
を選択します。
2.
3.
4.
5.
6.
165
Product Name に基づいてデータがソートされたレポートを表示するには、設計
設計モードに移行します。
[データ]
[データ]タブをクリックします。
[データソース]
[データソース]ノードを展開します。
レポートの連結先のメインデータソースを展開します。
[ソート定義]
[ソート定義]を右クリックします。
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
7. [ソート定義の追加]
[ソート定義の追加]を選択します。[ソート定義]
[ソート定義]ダイアログボックスが表示されます。
8. [ProductName]]を選択し、[昇順]
[昇順]チェックボックスをオンにして、[[OK]]をクリックします。
9. レポートをプレビュー表示します。
166
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport のプレビューと印刷
レポートを設計したら、レポートをプレビューしたり、印刷することができます。どちらのタスクも、いくつかのボタンをクリックす
るだけで実行できます。
デザイナで新しいレポートを作成したり、既存のレポートを開くと、レポートは設計モードで表示されます。
レポートをプレビューするには、[プレビュー]
をクリックするか、ショートカットキーの[F5]を押します。
レポートを印刷するには、[ファイル]
[ファイル]メニューに移動し、[印刷]
をクリックするか、ショートカットキーの[Ctrl]+
[P]を押します。[印刷]オプションは、[プレビュー]
[プレビュー]モードでのみ有効です。[印刷]ダイアログボックスでは、プリンタの設定を
指定できます。
167
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
[ページレイアウト]グループにあるオプションを使用して、ページ設定を編集することもできます。
FlexReportDesigner でのレポートのインポート
FlexReportDesigner アプリケーションの最も強力な機能の 1 つは、Microsoft Access(.mdb)や Crystal Reports(.rpt)で作
成したレポートをインポートできることです。
この機能を使用するには、コンピュータに Access がインストールされている必要があります。デザイナにレポートをインポート
したら、Access は必要ありません。
168
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Access ファイルからレポートをインポートするには、[ファイル]
[ファイル]メニューをクリックし、メニューから[インポート]
[インポート]を選択します。イ
ンポートするファイルの名前の入力を求めるダイアログボックスが表示されます。
Microsoft Access レポートのインポート
Microsoft Access ファイルをインポートするには、Microsoft Access ファイル(MDB または ADP)を選択します。デザイナがファイルをスキャ
ンし、インポートするレポートを選択するためのダイアログボックスが表示されます。
このダイアログボックスで、インポート処理を開始する前に、現在定義されているすべてのレポートを消去するかどうかも指定できます。
インポート処理は、ソースレポートのほとんどの要素を処理できます。ただし、次に挙げる要素は例外です。
イベントハンドラコード
Access レポートは、VBA、マクロ、およびフォームを使用してレポートを動的に書式設定できます。C1FlexReport でも動的な書式設定
が可能ですが、C1FlexReport では VBScript だけが使用されるため、レポートのコードはすべて手作業で変換する必要があります。
フォーム指向のフィールドタイプ
169
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Access レポートには、デザイナのインポートプロシージャによって処理されないフィールドが含まれていることがあります。サポートされ
ていない
いないフィールドタイプは、Chart、CommandButton、ToggleButton、OptionButton、OptionGroup、ComboBox、ListBox、
TabCtl、および CustomControl です。
VBScript の予約語を使用するレポート
Access は VBScript を使用しないため、レポートオブジェクトやデータセットフィールド名の識別子として VBScript の予約語を使用する
ようなレポートが設計されている可能性があります。その場合は、VBScript エンジンが式を評価するときに問題が発生し、レポートが
正しくレンダリングされない原因になります。
識別子として使用できない予約語に
は、Date、Day、Hour、Length、Minute、Month、Second、Time、TimeValue、Value、Weekday、Year などがあります。完全な
リストについては、VBScript のリファレンスを参照してください。
上のような制限を受けるレポートは比較的少ないですが、レポートをインポートしたら、すべてのレポートをプレビューし、正しく動作するかどう
かを確認してください。
C1NWind.mdb ファイルのインポート
デザイナが実際に行う処理の例として、C1NWind.mdb ファイルをインポートしてみます。これには、次の 13 のレポートが含まれます。
(C1FlexReport に付属する NWind.xml ファイルには、以下で説明する変更がすべて行われています。)
1. Alphabetical List of Products(製品のアルファベット順リスト)
(製品のアルファベット順リスト)
処理は不要です。
2. Catalog(カタログ)
(カタログ)
処理は不要です。
3. Customer Labels(顧客ラベル)
(顧客ラベル)
処理は不要です。
4. Employee Sales by Country(国別従業員売上高)
(国別従業員売上高)
このレポートには、手作業で変換する必要があるコードが含まれます。Group 1 のヘッダーの OnPrint プロパティには、次のコードを
割り当てます。
Visual Basic でコードを書く場合
Visual Basic
If SalespersonTotal > 5000 Then
ExceededGoalLabel.Visible = True
SalespersonLine.Visible = True
Else
ExceededGoalLabel.Visible = False
SalespersonLine.Visible = False
End If
C# でコードを書く場合
C#
if (SalespersonTotal > 5000)
{
ExceededGoalLabel.Visible = true;
SalespersonLine.Visible = true;
} else
{
ExceededGoalLabel.Visible = false;
SalespersonLine.Visible = false;
}
5. Invoice(請求書)
(請求書)
170
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
処理は不要です。
6. Products by Category(カテゴリ別製品)
(カテゴリ別製品)
処理は不要です。
7. Sales by Category(カテゴリ別売上高)
(カテゴリ別売上高)
このレポートには、インポートされないグラフコントロールが含まれます。レポートにグラフを追加するには、グラフフィールドを使用しま
す。
8. Sales by Category Subreport(カテゴリ別売上高サブレポート)
(カテゴリ別売上高サブレポート)
処理は不要です。
9. Sales by Year(年度別売上高)
(年度別売上高)
このレポートには、手作業で変換する必要があるコードおよび Form オブジェクトへの参照が含まれます。[Data]パネルの Form オブ
ジェクトを置き換えるには、ShowDetails パラメータを追加します。その DataType プロパティを Boolean に、Value プロパティを False
に設定します。
レポートの OnOpen イベントで新しいパラメータを使用します。
Visual Basic でコードを書く場合
Visual Basic
Dim script As String = _
"bDetails = [Show Details]" & vbCrLf & _
"Detail.Visible = bDetails" & vbCrLf & _
"[Group 0 Footer].Visible = bDetails" & vbCrLf & _
"DetailsLabel.Visible = bDetails" & vbCrLf & _
"LineNumberLabel2.Visible = bDetails" & vbCrLf & _
"Line15.Visible = bDetails" & vbCrLf & _
"SalesLabel2.Visible = bDetails" & vbCrLf & _
"OrdersShippedLabel2.Visible = bDetails" & vbCrLf & _
"ShippedDateLabel2.Visible = bDetails" & vbCrLf & _
"Line10.Visible = bDetails"
C1FlexReport1.Sections.Detail.OnPrint = script
C# でコードを書く場合
C#
string script = "bDetails = [Show Details]" +
"Detail.Visible = bDetails\r\n" +
"[Group 0 Footer].Visible = bDetails\r\n" +
"DetailsLabel.Visible = bDetails\r\n" +
"LineNumberLabel2.Visible = bDetails\r\n" +
"Line15.Visible = bDetails\r\n" +
"SalesLabel2.Visible = bDetails\r\n" +
"OrdersShippedLabel2.Visible = bDetails\r\n" +
"ShippedDateLabel2.Visible = bDetails\r\n" +
"Line10.Visible = bDetails";
c1FlexReport1.Sections.Detail.OnPrint = script;
最後に、2 行のコードを書き換える必要があります。
Visual Basic でコードを書く場合
Visual Basic
Sections ("Detail").OnPrint = _
"PageHeader.Visible = True"
Sections("Group 0 Footer).OnPrint = _
"PageHeader.Visible = False"
C# でコードを書く場合
171
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
C#
Sections ("Detail").OnPrint =
"PageHeader.Visible = true";
Sections("Group 0 Footer).OnPrint =
"PageHeader.Visible = false";
10. Sales by Year Subreport(年度別売上高サブレポート)
(年度別売上高サブレポート)
処理は不要です。
11. Sales Totals by Amount(金額別総売上高)
(金額別総売上高)
このレポートには、手作業で変換する必要があるコードが含まれます。ページヘッダーの OnPrint プロパティには、次のコードを割り当
てます。
Visual Basic でコードを書く場合
Visual Basic
PageTotal = 0
C# でコードを書く場合
C#
PageTotal = 0;
詳細の OnPrint プロパティには、次のコードを割り当てます。
Visual Basic でコードを書く場合
Visual Basic
PageTotal = PageTotal + SaleAmount
HiddenPageBreak.Visible = (Counter = 10)
C# でコードを書く場合
C#
PageTotal = PageTotal + SaleAmount;
HiddenPageBreak.Visible = (Counter = 10);
12. Summary of Sales by Quarter(四半期別売上高のサマリー)
(四半期別売上高のサマリー)
処理は不要です。
13. Summary of Sales by Year(年度別売上高のサマリー)
(年度別売上高のサマリー)
処理は不要です。
以上をまとめると、NorthWind データベースからインポートされる 13 のレポートのうち、編集の必要がないレポートが 9 つ、コードを変換する
必要があるレポートが 3 つ、グラフフィールドを追加する必要があるレポートが 1 つです。
Crystal Reports のインポート
Crystal Reports 定義ファイル(.rpt)からレポートをインポートするには
1. [ファイル]
[ファイル]メニューをクリックして、[インポート]
[インポート]を選択します。[レポート定義のインポート]
[レポート定義のインポート]ダイアログボックスが表示さ
れ、インポートするファイル名の入力を求められます。
2. Crystal Reports 定義ファイル(.rpt)を選択します。FlexReportDesigner アプリケーションが、レポートを FlexReport
形式に変換します。
3. レポートを保存します。これで、Crystal Report が FlexReport に変換されました。
内部または外部データソースに連結されたレポートは、元のデータソースパスに変更を行う必要なく、インポートして実行でき
172
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ます。
FlexReportDesigner アプリケーションは、Crystal Reports をインポートする際に、次の変換をサポートします。
セクション
セクション/サブセクション
サブセクション
レポートヘッダー
ページヘッダー
グループヘッダー
詳細
グループフッター
ページフッター
レポートフッター
フィールド
テキストボックス
グラフ
ボックス
直線
ピクチャ
チェックボックス
サブレポート(手動によるパスの訂正が必要)
画像フィールド - BLOBField(ピクチャ)、OLEObject(ピクチャ)
データベースフィールド
クロスセクションボックスコントロール
特殊なフィールド
時刻書式
ページ番号
機能
テキストフィールドとデータベースフィールドを組み合わせた複雑な式("テキスト
テキスト" + [式
式])、および集計
グループ化
パラメータ
サマリーフィールド
パーセンテージ集計
テキストボックス書式(通貨、日付など)
KeepTogether(フィールド、セクション、サブセクション、グループ)
複数の結合クエリー
ハイパーリンク
テキストの回転
指定された順序でのグループ化
書式設定
テキストの書式設定
境界線
背景
次の画像は、FlexReportDesigner にインポートされた Crystal Report を示します。
173
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次の画像は、CRReportDesigner にインポートされた Crystal Report を示します。
174
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
メモ
メモ: レポートをインポートする前に、Crystal Reports のバージョンが 13.0.14.xxxx 以上であることを確認してください。
このバージョンの Crystal Reports は、システムにインストールされている Visual Studio と互換性があります。また、シ
ステムに Crystal Reports 2013 バージョンがインストールされている場合に、Crystal Reports を C1FlexReport に変換
し、そのレポートを実行するには、xtreme.mdb へのデータベースパスを手動で変更する必要があります。
Crystal オブジェクトモデルで公開されていない要素や C1FlexReport でサポートされていない要素などの少数の例外を除く
と、ソースレポートの大部分の要素がこのインポートプロセスによって処理されます。C1FlexReportDesigner アプリケーショ
ンでまだサポートされていない変換は、次のとおりです。ただし、次回の 2016 リリースには組み込まれる予定です。
フィールド:テーブル、クロス集計、OLAPGrid、マップ、フラッシュ、数式の各フィールド
スクリプト:プロパティスクリプト、複雑なスクリプト式、およびカスタム関数を抑制
機能:警告、パラメータ、複雑な式(テキストおよびパラメータフィールド)、階層的なグループ化
プロパティ:ドロップシャドウ
レポートのエクスポートと公開
レポートを印刷するのではなく、ファイルにエクスポートして、クライアントや同僚に電子メールで配布する場合もあります。デザ
イナは、次のエクスポート形式をサポートしています。
形式
説明
ページ化 HTML(*.html)
レポート内のページごとに 1 つの HTML ファイルを作成します。HTML ページには、ユーザー
がレポート内を移動するためのリンクが含まれます。
プレーン HTML(*.html)
ドリルダウン機能を持たない 1 つの HTML ファイルを作成します。
非埋め込み(リンク)フォン Adobe の Acrobat ビューアまたはブラウザプラグインを備えたコンピュータ上で表示できる
トを使用した PDF(*.pdf)
PDF ファイルを作成します。
埋め込みフォントを使用し
た PDF/A(*.pdf)
可搬性の高い埋め込みフォント情報を含む PDF ファイルを作成します。
RTF(*.rtf)
一般的なワードプロセッサ(Microsoft Word や WordPad)で開くことができる RTF ファイルを
作成します。これは、ページ付き XML ドキュメントまたは Open XML ドキュメントとして保存でき
ます。
Microsoft Excel 97(*.xls)
Microsoft Excel で開くことができる XLS ファイルを作成します。
Microsoft Excel
2007/2010 Open XML
(*.xlsx)
Microsoft Excel 2007 以降で開くことができる XLS ファイルを作成します。
Open XML Word(*.docx) Microsoft Word 2007 以降で開くことができる DOCX ファイルを作成します。
圧縮メタファイル(*.zip)
EmfOnly、EmfPlusOnly、および EmfPlusDual 型の圧縮メタファイルを作成します。
TIFF(*.tiff)、BMP、PNG、
JPEG、GIF 画像
TIFF(Tag Image File Format)、BMP(Bitmap Images)、PNG(Portable Network Graphic)、
JPEG、または GIF 型の画像ファイルを作成します。
エクスポートファイルを作成するには、メニューから[ファイル]
[ファイル]→[エクスポート]
[エクスポート]を選択し、[レポートをファイルにエクスポー
[レポートをファイルにエクスポー
ト]
ト]ダイアログボックスを使用して、エクスポート先、[ファイル名]
[ファイル名]、および[保存の種類]
[保存の種類]を指定します。
PDF/A へのエクスポート
175
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport は、PDF/A 標準に準拠する PDF 形式にエクスポートできます。
PDF/A は、請求書、パンフレット、マニュアル、研究報告書の作成、および PDF/A 形式でのレポートの保存によく使用されま
す。また、JPEG2000 画像のエクスポート、電子署名の提供、および埋め込みフォントのサポートを可能にします。
FlexReportDesigner を使用して PDF/A 形式にエクスポートする手順は、次のとおりです。
1. C1FlexReportDeisgner アプリケーションを実行します。
2. レポートを開きます。
3. [ファイル]
[ファイル]→[エクスポート]
[エクスポート]をクリックするか、[プレビュー]
[プレビュー]をクリックし、[エクスポート]グループで、[[PDF]]アイコンの
ドロップダウンから[[PDF/A]]を選択します。[レポートをファイルにエクスポート]
[レポートをファイルにエクスポート]ダイアログボックスが開きます。
4. ファイル名を指定します。[保存の種類]は、デフォルトでは PDF/A(*.pdf)です。
5. [保存]
[保存]をクリックします。[[PDF として保存]
として保存]ダイアログボックスが開きます。
6. ダイアログボックスに入力し、[[OK]]をクリックします。コンピュータにインストールされている PDF リーダーに、エクス
ポートした PDF/A ドキュメントが表示されます。
これで、PDF/A 標準に準拠したレポートをエクスポートできました。
メモ:2015 v3 リリースでは、PDF/A-2B だけがサポートされます。
FlexReports の見栄えの向上
一般に、レポートでは、一部を他の部分より目立たせる必要があります。Background や Border などのビジュアルプロパ
ティを使用して、地味なレポートを見栄えのよいレポートに変えることができます。このような機能については、以下のセクショ
ンを参照してください。
背景
FlexReportDesigner を使用して背景色を設定することは、とても簡単です。FlexReport では、フィールド、セクション、および
サブセクションの背景色を設定できます。背景色には、単色またはグラデーションを使用できます。
176
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
次の画像は、背景色が設定されていないレポートヘッダーを示します。
レポートヘッダーに背景色を設定するには
1. 設計モードで、レポートのヘッダー
ヘッダーセクションを選択します。
2. プロパティ
プロパティペインで、Background プロパティの横にあるドロップダウンをクリックします。カラーパレットが開きます。
3. 背景の色を選択します。タブ([Web]、[システム]、[カスタム]、および[グラデーション])から色を選択できます。
4. レポートをプレビュー表示します。
5. 背景にグラデーション(直線状または放射状)を設定することもできます。グラデーションを設定するには、設計モードに
切り替えます。
6. レポートのヘッダー
ヘッダーセクションを選択します。
7. プロパティ
プロパティペインで、Background プロパティの横にあるドロップダウンをクリックします。[グラデーション]タブに移動
し、以下に示すオプションを使用して設定を編集します。
177
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
8. 直線状のグラデーションを指定します。スライダをドラッグして、グラデーションの開始と終了を変更することもできま
す。
9. レポートをプレビュー表示します。レポートヘッダーは、次のように表示されます。
境界線
FlexReportDesigner では、フィールド、セクション、およびサブセクションの境界線を簡単に設定できます。
フィールド/セクションを囲む境界線を設定するには
1. 周囲に境界線を表示するフィールド
フィールドを選択します。
2. プロパティペインで、Borders プロパティの横にある省略符を選択します。[境界線プロパティ]
[境界線プロパティ]ダイアログボックスが開きます。
178
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
3. 線の[スタイル]
[スタイル]と[幅]
[幅]を選択し、表示する境界線
境界線([左]、[上]、[右]、[下]のすべて、いずれか 1 つ、または組み合わせ)を
選択します。色を選択し、[[OK]]をクリックします。
4. レポートヘッダーに角丸境界線を挿入してみます。レポートヘッダー
レポートヘッダーを選択します。
5. 上記と同様に、線スタイル、線の幅、境界線、および色を設定します。
6. 角の[半径
[半径 X]]と[半径
[半径 Y]]を設定します。
7. レポートをプレビュー表示します。
179
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
角丸を挿入する場合は、次の点に注意してください。
半径 X の範囲は、0 からフィールドの幅までです。
半径 Y の範囲は、0 からフィールドの高さまでです。
180
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
レポートおよびドキュメントビューア(
レポートおよびドキュメントビューア(C1FlexViewer コントロール)
C1FlexViewer コントロールは、C1Report、C1FlexReport、SSRS、C1Document などのさまざまなドキュメントタイプをプレ
ビューするために使用できるプレビューコントロールです。対話式のユーザーフレンドリな UI を備えており、パラメータの表示/
リセット、レポートレンダリングのリフレッシュ、アウトラインにて階層の表示、ブックマークを使用したレポートの場所へのジャン
プなどを行うことができます。詳細については、以下のトピックを参照してください。
FlexViewer の主要な機能
FlexViewer の主要な機能は次のとおりです。
使いやすい UI
FlexViewer は、対話式で使いやすく完全な機能を備えたリボンベースの最新の UI を持ち、FlexReport、SSRS、PDF ド
キュメントなどのドキュメントタイプをプレビューできます。リボンには、いくつかのグループに分かれたコマンドボタンが
含まれます。
パラメータの使用
パラメータの使用/リセット
リセット
FlexViewer では、パラメータを表示したり、リセットすることができます。レポートを表示するデータパラメータを入力で
きます。String、Boolean、Date、Integer、Float 型のパラメータをサポートします。
レンダリングの更新と中止
FlexViewer では、[更新]ボタンと[停止]ボタンでレポートのレンダリングを更新およびキャンセルできます。
サムネイルと階層の表示
FlexViewer では、レポートページのサムネイルや階層のアウトラインを表示し、それらを使用して必要な場所にジャン
プすることができます。
ページナビゲーション
ページナビゲーションは、FlexViewer コントロールのナビゲーショングループで行うことができます。コマンドボタンを使
用して、レポートページ間を移動したり、ページ番号テキストボックスにページ番号を入力して特定のページ番号にジャ
ンプすることができます。
縮小拡大が簡単
FlexViewer では、[ズーム]ボタンを使用して[ズーム]ダイアログボックスにアクセスできます。ダイアログボックスに
は、以下のオプションがあります。
実際のサイズ - 実際のサイズでページを表示します。
ページ幅 - ページをプレビューウィンドウの幅に合わせます。
ページ全体 - プレビューウィンドウにページ全体を合わせます。
カスタム - ページのカスタムズーム % を設定します。
ズーム % - ページに設定されたズームパーセンテージを表示します。
デフォルトで広いレイアウト - 幅広のレポートにデフォルトで段組みレイアウトを適用するかどうかを示します。
見開きページ(表紙右) - レポートページを並べて表示します。
連続 - ページを連続で表示します。
ビューの回転 - ページの回転角度を選択できます。
ページ列数 - プレビューウィンドウに表示するページ列数を選択できます。
ページ行数 - プレビューウィンドウに表示するページ行数を選択できます。
印刷
FlexViewer コントロールでは、[印刷]ボタンを使用して、レポートを印刷することもできます。このボタンを押すと、標準
的な印刷設定を含む[印刷]ダイアログボックスが表示されます。
エクスポート
FlexViewer では、DOCX、RTF、Open XML Word、Open XML Excel、HTML、PDF、GIF、JPEG、PNG、BMP、TIFF など
の各種形式にレポートやドキュメントをエクスポートできます。
ツール
FlexViewer には、それぞれウィンドウ内のスクロール、コピーするテキストの選択、選択テキストのコピーに使用できる
ハンドツール、テキスト選択ツール、テキストコピーツールがあります。
FlexViewer ツールバー
181
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
以下の画像のように、コントロールの上部に FlexViewer ツールバーが表示されます。
ツールバーの上部は、以下のショートカットコマンドボタンで構成されます。
コマンドボタン
コマンドボタン名
説明
戻る
前に開いたページに戻ることができます
進む
次のページに進むことができます
コピーするテキストの選択
コピーするテキストを選択します
FlexViewer ツールバーのすべてのコマンドボタンは、以下に示すグループに分かれます。
グループ
グループ内のコマンドボタン
説明
印刷レイアウト、停止、更新、パ レポートページを印刷レイアウトで表示したり、
ラメータ、アウトライン、サムネイ ビューを更新したり、プレビューを停止します。
ル
パラメータを表示したり、レポートページのアウト
ラインやサムネイルを表示することもできます
182
ドキュメントの最初のページに移
動、ドキュメントの前のページに
移動、現在のページ番号、現在
のドキュメントのページ数、ド
キュメントの次のページに移動、
ドキュメントの最後のページに移
動、戻る、進む、ページセット
レポートの最初、最後、前、次のページに移動
できます。現在のページ番号が表示され、前後
に移動できます。[ページセット]ボタンを使用す
ると、ページではなくページのセットに移動でき
ます
ズーム、実際のサイズ、ページ
幅、ページ全体
[ズーム]ボタンを使用して[ズーム]ダイアログ
ボックスを開くことができます。[実際のサイズ]
は、ページを通常サイズの 100% にズームしま
す。[ページ幅]は、ウィンドウ幅に合わせてペー
ジをズームします。[ページ全体]は、ウィンドウ
に合わせてページをズームします
縦、横、ページ設定
レポートページの方向を縦長モードまたは横長
モードに変更できます。[ページ設定]では、現
在のレポートのページ設定を変更できます。
印刷、エクスポート、検索、ハン
ドツール、テキスト選択ツール、
テキストのコピー
レポートを印刷およびエクスポートできます。[検
索]ボタンを使用して、レポートのテキストを検索
できます。[ハンドツール]を使用して、マウスで
ウィンドウでスクロールできます。[テキスト選択
ツール]を使用して、コピーするテキストを選択
できます。[テキストのコピー]ボタンを使用し
て、選択テキストをコピーできます
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
レポートのビューを回転する
FlexViewer では、要件に合わせて柔軟に、さまざまな角度にレポートビューを回転させることができます。レポートビューをさ
まざまな角度に回転させるには、C1FlexViewer クラスの RotateView プロパティを設定します。RotateView プロパティは、
ビューの回転角度を記述する FlexViewerRotateView 列挙に含まれる次の値を受け取ります。
NoRotation: ビューに回転が適用されません。
Rotation180: ビューを 180 度回転します。
Rotation90Clockwise: ビューを時計回りに 90 度回転します。
Rotation90CounterClockwise: ビューを反時計回りに 90 度回転します。
設計時のレポートビューの回転
次の手順を実行して、設計時に FlexViewer でレポートビューを回転させることができます。
1. FlexViewer コントロールを右クリックし、プロパティを選択します。
2. プロパティ
プロパティウィンドウで、表示されたリストから RotateView プロパティの値を選択して、さまざまな角度でレポートを回
転させます。
プログラムによるレポートビューの回転
レポートビューを回転させるには、最初にレポートを作成してロードし、次に FlexViewer コントロールでレポートをプレビュー
する必要があります。その後、FlexViewerRotateView 列挙を使用してレポートビューを回転させます。次のコード
は、FlexViewerRotateView 列挙の使用例を示します。
Visual Basic
c1FlexViewer1.RotateView = FlexViewerRotateView.Rotation90Clockwise
C#
c1FlexViewer1.RotateView = FlexViewerRotateView.Rotation90Clockwise;
183
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
FlexReport と FlexViewer の連結
レポートをレンダリングするには、FlexViewer コントロールにレポートを連結する必要があります。レポート定義を作成し、
データソースを定義して C1FlexReport コンポーネントにロードしたら、レポートをプリンタやプレビューコントロール
C1FlexViewer にレンダリングしたり、別のファイル形式にエクスポートすることができます。
C1FlexViewer コントロールでレポートをプレビューするには、次の手順に従います。
1. ツールボックスから、C1FlexViewer コントロールをダブルクリックしてプロジェクトに追加します。
2. プロパティウィンドウで、C1FlexViewer.Dock プロパティを Fill に設定します。
3. マウスで Windows フォームを選択し、ドラッグしてサイズ変更します。この例では、プレビューパネルが見やすくなるよ
うに、フォームを 600x500 にサイズ変更しました。
4. フォームをダブルクリックし、Form_Load イベントハンドラに次のコードを入力します。
Visual Basic
'レポート定義をロードします
C1FlexReport1.Load(@"..\..\Products Report.flxr", "Products Report")
'レポートをプレビュー表示します
C1FlexViewer1.DocumentSource = C1FlexReport1
C#
'レポート定義をロードします
c1FlexReport1.Load(@"..\..\Products Report.flxr", "Products Report");
'レポートをプレビュー表示します
c1FlexViewer1.DocumentSource = c1FlexReport1;
184
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
Flex Viewerでの
でのPDFファイルの読み込み
ファイルの読み込み
C1 FlexViewerにC1PDFDocumentSource (ベータ版)
(ベータ版)を結合することによってFlexViewerでPDFファイルを描画することがで
きます。C1PDFDocumentSource を使用することで、PDFファイルを開いて、FlexViewerにロードするようになります。必要な
ら、描画されたPDFファイルのエクスポートまたは印刷もできます。
デザイン時で
デザイン時でPDFDocumentSourceコンポーネントを
コンポーネントをFlexViewerコントロールと結合します
コントロールと結合します
FlexViewerでPDFファイルをレンダリングするには、次の手順に従います。
1. 新しい Windows フォームアプリケーションプを作成します。
2. C1PDFDocumentSourceをフォームにドラッグアンドドロップします。C1PDFDocumentSourceがコンポーネントトレ
イに表示されます。
3. ツールボックスに移動し、C1FlexViewer コントロールをフォーム上にドラッグアンドドロップします。要件に応じ
てC1FlexViewer の位置とサイズを調整することができます。
185
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
4. 「プロパティ」ウィンドウでは、DocumentSourceプロパティ値フィールドの横にあるドロップダウン矢印をクリックして、
c1PDFDocumentSource1を選択します。
5. C1PDFDocumentSourceコンポーネントを選択し、「プロパティ」ウィンドウ内でc1PDFDocumentSource1のプロパ
ティに移動します。DocumentLocationプロパティを見つけ、PDFファイルのフルパスを入力します。
6. アプリケーションを実行します。PDFは、FlexViewerコントロールに描画します。
プログラムで
プログラムでPDFファイルを
ファイルをFlexViewerコントロールに読み込みます
コントロールに読み込みます
プログラムでFlex Viewerコントロール内にPDFファイルを描画するには、次の手順を実行します。
1. C1PDFDocumentSource および C1FlexViewer をフォームにドラッグアンドドロップします。
2. フォームをダブルクリックして、Form1_Load イベントに次のコードを記述します。
Visual Basic
Dim pds As New C1PdfDocumentSource()
pds.DocumentLocation = "../../Injury Form.pdf"
C1FlexViewer1.DocumentSource = pds
C#
C1PdfDocumentSource pds = new C1PdfDocumentSource();
pds.DocumentLocation = @"..\..\Injury Form.pdf";
c1FlexViewer1.DocumentSource = pds;
そのため、FlexViewer コントロールにロードされる PDF ファイルでは、以下の機能がサポートされます。
図形 3D(3 次元)および 2D(2 次元)シェイプを含む PDF を FlexViewer コントロールにロードできます。
テキスト検索 PDF ファイルでテキストを検索するには、次の手順を使用します。
1. FlexViewer コントロールに、テキストを含む PDF をロードします。
2. FlexViewer リボンから検索オプションを選択します。
3. ステータスバーに表示される検索テキストボックスに、検索するテキストを入力し、[Enter]キーを押します。
186
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
テキストの選択とテキストのコピー PDF ファイルでテキストを選択するには、次の手順を使用します。
1. FlexViewer コントロールに、テキストを含む PDF をロードします。
2. FlexViewer リボンからテキスト選択ツールを選択します。
3. PDF でテキストを選択します。
4. キーボードキー[Ctrl]+[C]または FlexViewer リボンの[テキストのコピー]オプションを使用して、テキストをコ
ピーします。
187
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
SSRS レポートのプレビュー
C1FlexViewer コントロールは、SSRS を表示する C1SsrsDocumentSource をサポートしています。SSRS サーバー上のレ
ポートツリーを参照し、個々のレポートをプレビューできます。コントロールのリボンにある[パラメータ]をクリックして、レポート
のパラメータを表示することもできます。
C1SsrsDocumentSource で、表示する SSRS レポートの場所や名前を指定できます。次に、C1FlexViewer コントロールを
使用して、SSRS レポートを表示できます。
メモ
メモ:このトピックを開始するには、あらかじめ SSRS レポートサーバーへのアクセス権を確保し、そのサーバーに 1 つ以
上のレポートが存在する必要があります。
C1FlexViewer で SSRS レポートをプレビューまたはエクスポートするには、.NET Framework 4.0 以上を使用して新しい
WinForms アプリケーションを作成し、次の手順を実行します。
1. 新しい Winforms アプリケーションプロジェクトを作成します。
2. ツールボックスから、C1SSRSDocumentSource コンポーネントをフォームに追加します。コンポーネントがコンポーネ
ントトレイに表示されます。
ツールボックスでこのコンポーネントが見つからない場合は、右クリックし、[アイテムの選択]
[アイテムの選択]を選択しま
す。[ツールボックスアイテムの選択]
[ツールボックスアイテムの選択]ダイアログボックスが表示されます。C1.Win.C1Document.dll でコン
ポーネントを見つけ、ツールボックスに追加します。
3. フォームに C1FlexViewer コントロールを追加します。Dock プロパティを Fill に設定します。
4. C1FlexViewer をクリックし、DocumentSource プロパティを c1SSRSDocumentSource1 に設定します。これにより、
188
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
C1SSRSDocumentSource コンポーネントが C1FlexViewer の DocumentSource プロパティに割り当てられます。
5. C1SSRSDocumentSource を右クリックし、[プロパティ]
[プロパティ]を選択してプロパティウィンドウを開きます。
6. DocumentLocation プロパティの横にあるドロップダウン矢印をクリックします。
7. 次のダイアログで、SSRS サーバーのアドレスとレポートの完全パスを指定し、[[OK]]をクリックします。
8. ConnectionOptions プロパティグループを展開します。
9. Credential プロパティの横にあるドロップダウン矢印をクリックします。
10. 次のダイアログで、ユーザー名、パスワード、およびドメインを指定し、[[OK]]をクリックします。
メモ
メモ:次の DLL がプロジェクト参照に追加されていることを確認します。
C1.Win.C1Document.dll
C1.Win.dll
C1.Win.C1DX.dll
C1.Win.ImportServices.dll
C1.Win.FlexReport.dll
C1.Win.FlexViewer.dll
C1.Win.C1Ribbon.dll
C1.Win.C1Input.dll
C1.Win.C1InputPanel.dll
指定された SSRS レポートがプレビューコントロールに表示されるかどうかを決定するパラメータを設定するように求められる
場合があります。次の図は、FlexViewer コントロールに ComponentOne サーバー上の SSRS レポートを表示したところで
す。
189
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
レポートは、サポートされたさまざまな外部形式にエクスポートできます。
190
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
タスク別ヘルプ
タスクベースのヘルプは、ユーザーが .NET のプログラミングに精通しており、レポートの基本的な知識を身に付け、コントロー
ルの一般的な使用方法を理解していることを前提としています。ヘルプに示される手順に従って作業を進めるだけで、
FlexReport のさまざまな機能を具体的に紹介するプロジェクトを作成しながら、C1FlexReport コンポーネントの主要な機能と
特長を理解できます。
プロジェクトでは次の名前空間を参照する必要があります。
C1.Win.C1FlexReport
FlexReportCommonTasks.flxr
このセクションのトピックの多くには、説明に使用する組み込みレポートが用意されています。組み込みレポートは、
FlexReportCommonTasks.flxr レポート定義ファイルにあります。WinForms Edition サンプルをインストールしてある場合、こ
のファイルは、ComponentOne Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダの Documents ま
たは MyDocuments フォルダにあります。
交互表示の背景の追加
交互表示の背景色を使用してレポートを作成するには、詳細
詳細セクションの OnFormat プロパティを使用します。
交互表示の背景色を使用してレポートを作成するには、次の手順を実行します。
1. C1FlexReportDesigner を開きます。
2. 新しいレポートを作成するか、既存のレポートを開きます。C1FlexReportDesigner にレポートを開いたら、レポートの
プロパティを変更することができます。
3. 設計
設計モードに切り替えてレポートの編集を開始します。
4. 設計モードで、プロパティペインの上にあるドロップダウンリストからレポートを選択します。
5. レポートの OnOpen プロパティを見つけ、cnt = 0 を入力します。これにより、cnt 変数が初期化されます。
6. プロパティペインの上にあるドロップダウンリスト、または設計領域から詳細
詳細セクションを選択します。
7. OnFormat プロパティを見つけ、その横の空のフィールドをクリックしてから、省略符
省略符ボタンをクリックします。VBScript
エディタ
エディタが表示されます。次の VBScript 式をエディタで入力し、[完了]
[完了]をクリックします。
cnt = cnt + 1
if cnt mod 2 = 0 then
Detail.Background.StartColor = Rgb(238, 214, 200)
Detail.Background.EndColor = Rgb(238, 200, 177)
else
Detail.Background.StartColor = vbWhite
Detail.Background.EndColor = vbWhite
endif
8. [プレビュー]
[プレビュー]ボタンをクリックして、交互表示の背景を持つレポートをプレビュー表示します。
191
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
メモ: レポートの完全なサンプルについては、ComponentOne
Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定
義ファイルの「Alternating Background」レポートを参照してください。使用するデータベース C1NWind.mdb
も、ComponentOne Samples フォルダにあります。
条件付き書式設定の追加
表示するデータに応じてフィールドの外観を変更する必要がある場合があります。それにはパラメータを使用します。たとえば、条件
に応じて一部のデータフィールドを強調表示する場合は、条件を定義するパラメータと条件に応じてデータフィールドを強調表示する
ためのパラメータの 2 つのパラメータを定義します。
条件付き書式設定を使用してレポートを作成するには、次の手順を実行します。
1. C1FlexReportDesigner を開きます。
2. 新しいレポートを作成するか、既存のレポートを開きます。C1FlexReportDesigner にレポートを開いたら、レポートのプロパ
ティを変更することができます。
3. 設計
設計モードに切り替えてレポートの編集を開始します。
4. pCondition と pHighlightColor の 2 つのパラメータを追加します。
5. DataType を、pCondition は整数、pHighlightColor は文字列に設定します。
6. AllowedValuesDefinition プロパティで、各パラメータのプロパティを次のように指定します。
値
192
pCondition
pHighlightColor
ラベル - Unit price greater than 50、値 - CInt(1)
ラベル - Red、値 - Red
ラベル - Unit price greater than 100、値 - CInt(2)
ラベル - Green、値 - Green
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
7. 設計モードで、プロパティペインの上にあるドロップダウンリストから[詳細]
[詳細]を選択します(このセクションに、条件付き書式設定
を追加するフィールドが含まれるため)。
8. OnFormat プロパティを見つけ、そのプロパティの横にある省略符
省略符ボタンをクリックします。
9. VBScript エディタ
エディタが表示されます。コードエディタで次の式を入力します。
row = row + 1
if row mod 2 = 1 Then
rowColor = Rgb(238, 214, 200)
Else
rowColor = "Transparent"
EndIf
doHighlight = False
if pCondition = 1 Then
doHighlight = UnitPrice > 50
ElseIf pCondition = 2 Then
doHighlight = UnitPrice > 100
ElseIf pCondition = 3 Then
doHighlight = UnitsInStock > 50
EndIf
if doHighlight Then
textColor = pHighlightColor
Else
textColor = Rgb(90, 70, 50)
EndIf
Detail.BackColor = rowColor
for i = 0 to Detail.Fields.Count - 1
Detail.Fields(i).BackColor = rowColor
Detail.Fields(i).ForeColor = textColor
Next
10. レポートをプレビュー表示します。
メモ: レポートの完全なサンプルについては、ComponentOne
Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定義ファイ
193
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
ルの「Conditional Formatting」レポートを参照してください。使用するデータベース C1NWind.mdb も、ComponentOne
Samples フォルダにあります。
カスタム用紙サイズの指定
デフォルトでは、C1FlexReport は、デフォルトの用紙サイズとデフォルトのプリンタを使用してレポートを作成します。
用紙のサイズと方向は、PaperSize プロパティと Orientation プロパティを使用して指定できます。ただし、選択した用紙サイ
ズを現在のプリンタで使用できるかどうかがレンダリング前にチェックされ、選択した設定が無効な場合は、デフォルトの用紙
サイズに変更されます。
使用可能なプリンタに関係なく、特定の用紙サイズを指定して使用する場合は、PaperSize プロパティを Custom に設定
し、Layout.CustomWidth プロパティと Layout.CustomHeight プロパティにページのサイズ(ツイップ単位)を設定します。
FlexReportDesigner を使用してレポートに 8.5" x 25" のカスタム用紙サイズを指定するには
1. C1FlexReportDesigner を開きます。
2. 新しいレポートを作成するか、既存のレポートを開きます。C1FlexReportDesigner にレポートを開いたら、レポートの
プロパティを変更することができます。
3. 設計モードで、プロパティペインの上にあるドロップダウンリストからレポートを選択します。
4. Layout を見つけ、プロパティノードを展開して、すべての使用可能なプロパティを表示します。
5. 次のプロパティを設定します。
CustomHeight=36000
CustomWidth=12472
PaperSize=Custom
このように指定すると、インストールされているプリンタや実際に使用できる用紙サイズに関係なく、独自の用紙サイズを使用
できます。
メモ: レポートの完全なサンプルについては、ComponentOne
Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定
義ファイルの「Custom Paper Size」レポートを参照してください。使用するデータベース C1NWind.mdb
も、ComponentOne Samples フォルダにあります。
動的ページヘッダーの追加
状況に応じてレポートのページごとに異なるページヘッダーを表示する動的ページヘッダーを生成したい場合があります。そ
れには、PageHeader の OnFormat プロパティを使用します。
たとえば、レポートの偶数ページと奇数ページに異なるレポートヘッダーを表示したいとします。動的ページヘッダーを使用し
てレポートを作成するには、次の手順を実行します。
1.
2.
3.
4.
C1FlexReportDesigner を開きます。
新しいレポートを作成するか、既存のレポートを開きます。
設計
設計モードに切り替えてレポートの編集を開始します。
PageHeader セクションに2つのサブセクション、OddPageHeader と EvenPageHeader を追加します。
OddPageHeader セクションは奇数ページに表示され、EvenPageHeader セクションは偶数ページに表示されます。
5. 上記の各サブセクションに、テキストフィールドやパラグラフフィールドを追加し、奇数および偶数ページにヘッダーを表
示するための式を含めます。
6. PageHeader の OnFormat プロパティに移動し、プロパティの横にある省略符をクリックします。
194
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
7. VBScript エディタが表示されます。エディタで次の VBScript 式を入力します。
odd = (page mod 2 <> 0)
PageHeader.SubSections(0).Visible = odd
PageHeader.SubSections(1).Visible = not odd
8. レポートの最初のページにページヘッダーを表示しないようにするには、レポートの Layout.PageHeader プロパティ
を NotWithReportHdr に設定します。
9. レポートをプレビュー表示します。
メモ
メモ: レポートの完全なサンプルについては、ComponentOne
Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定
義ファイルの「Dynamic Page Header」レポートを参照してください。使用するデータベース C1NWind.mdb
も、ComponentOne Samples フォルダにあります。
ガターマージンの作成
ガターマージンは、マージンに追加される特別なスペースです(綴じ代など)。ガターマージンがあると、ページをバインダーや
冊子などにまとめやすくなります。
レポートにガターマージンを追加するには、奇数ページの左マージンを大きくします。それには、奇数ページでは
Layout.MarginLeft の値を大きくし、偶数ページではデフォルト値を使用します。
レポートにガターマージンを作成するには、次の手順を実行します。
195
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
1. C1FlexReportDesigner を開きます。
2. 新しいレポートを作成するか、既存のレポートを開きます。
3. 設計モードで、プロパティウィンドウのドロップダウンリストから[詳細]を選択します。これで、セクションで使用できるプ
ロパティが表示されます。
4. レポートの OnOpen プロパティに移動し、省略符ボタンをクリックします。VBScript エディタが表示されます。エディタで
次の VBScript 式を入力します。
cnt = 0
gutter = report.layout.marginleft
marginRight = report.layout.marginRight
5. レポートの OnOpen プロパティに移動し、省略符ボタンをクリックします。VBScript エディタが表示されます。エディタ
で次の VBScript 式を入力します。
if page mod 2 = 1 then
Report.layout.marginleft = gutter
Report.Layout.marginright = marginRight
else
Report.layout.marginleft = gutter - 1440
Report.Layout.marginright = marginRight + 1440
EndIf
6. レポートをプレビュー表示します。
メモ
メモ: レポートの完全なサンプルについては、ComponentOne
Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レ
ポート定義ファイルの「Gutter」レポートを参照してください。使用するデータベース C1NWind.mdb
も、ComponentOne Samples フォルダにあります。
グループ化とソート
196
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
グループ化では、グループ式を使用してレコードをグループに分けることができます。この機能は、デフォルトで使用されます。ま
た、Group.SortExpression プロパティを使用して集計関数を指定することで、データをグループ化する方法を変更することもできます。
ソートを使用すると、データを昇順または降順に整理できます。Group.SortExpression が指定されている場合は、Group.Sort プロパティを使用し
てソートを実行できます。
ここでは、パラメータを使用して、ユーザーの入力に応じてデータがグループ化およびソートされるレポートを作成します。
1. 新しいレポートを作成します。次の SQL 文を指定して、メインデータソースとなるデータソースにレポートを連結します。
SELECT Employees.EmployeeID as EmployeeID,
Employees.FirstName as FirstName,
Employees.LastName as LastName,
Orders.OrderID as OrderID,
Orders.OrderDate as OrderDate,
Orders.ShippedDate as ShippedDate,
Products.ProductName as ProductName,
od.UnitPrice as UnitPrice,
od.Quantity as Quantity
FROM (([Order Details] od INNER JOIN Orders ON od.OrderID = Orders.OrderID)
INNER JOIN Products ON od.ProductID = Products.ProductID)
INNER JOIN Employees ON Orders.EmployeeID = Empl
2. 2つのパラメータを追加します。
pEmployeeSortExpression:従業員名または売上高に基づくグループ化を指定します。
pEmployeeSortOrder:ソート順を昇順または降順に指定します。
3. ラジオボタンから値を選択して AllowedValuesDefinition を設定し、2つのパラメータのプロパティを次のように設定します。
pEmployeeSortExpression
Label
アルファベット順
売上
Value
FullName
Sum(Order)
pEmployeeSortOrder
Label
NoSort
昇順
降順
Value
NoSort
Ascending
Descending
4. レポートの GlobalScripts プロパティに移動し、VBScript エディタで次の式を記述します。
EmployeeGroup.SortExpression = pEmployeeSortExpression.Value
EmployeeGroup.Sort = pEmployeeSortOrder.Value
5. レポートの OnOpen プロパティに移動し、VBScript エディタで次の式を記述します。
If pEmployeeSortOrder = "NoSort" Then
fldSortDesc = "No Sorting"
Else
fldSortDesc = pEmployeeSortExpression.DisplayText & " (" & pEmployeeSortOrder.DisplayText & ")"
EndIf
6. レポートをプレビュー表示します。
197
Copyright © GrapeCity inc. All rights reserved. FlexReport for WinForms
メモ
メモ: レポートの完全なサンプルについては、ComponentOne Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォ
ルダにある FlexCommonTasks.flxr レポート定義ファイルの「Groups and Sorting」レポートを参照してください。使用するデータ
ベース C1NWind.mdb も、ComponentOne Samples フォルダにあります。
198
Copyright © GrapeCity inc. All rights reserved. 
Fly UP