flexreport for winforms - docs.grapecity.com · flexreport for winforms の概要の概要...

213
FlexReport for WinForms 2018.04.09 更新 グレープシティ株式会社 グレープシティ株式会社

Upload: others

Post on 13-Oct-2019

268 views

Category:

Documents


0 download

TRANSCRIPT

FlexReport for WinForms2018.04.09 更新

グレープシティ株式会社グレープシティ株式会社

目次

FlexReport for WinForms の概要 5

C1Report から FlexReport へのアップグレード 5-7

FlexReport と C1Report 7-8

C1Report から FlexReport への重要な変更点 8-10

主な特長 11

FlexReport の詳細情報 12

コンポーネントとコントロール 12

オブジェクトモデルの概要 12-14

FlexReport のセクション 14-16

FlexReport クイックスタート 17

手順 1:レポート定義の作成 17-27

手順 2:レポートの修正 27-30

手順 3:C1FlexReport コンポーネントでのレポートのロード 30-31

手順 4:レポートのレンダリング 31-32

設計時サポート 33

[C1FlexReport のタスク]メニュー 33

[C1FlexViewer のタスク]メニュー 33-34

FlexReport の操作 35-36

C1FlexReport と C1Document 36

C1Document の重要な変更点 36-38

FlexReport のデータ連結 38

データベースからのデータの取得 38-39

ストアドプロシージャからのデータの取得 39-41

データテーブルオブジェクトをデータソースとして使用 41

カスタムデータソースオブジェクトの使用 41-42

FlexReport のデータソース 42

コードを使用した複数のデータソースへの接続 42-43

複数データソースレポートでのチャートへのデータの連結 43-48

複数データソースレポートでのパラメータへのデータの連結 48-49

計算フィールドの定義 49-50

デスクトップ用 FlexReport の開発 50

  FlexReport for WinForms

1 Copyright © GrapeCity, Inc. All rights reserved.         

設計時の FlexReport のロード 50-51

設計時の FlexReport の作成 51-52

実行時の FlexReport のロード 52-55

パラメータの追加 55-56

データのグループ化 56-58

小計などの集計の追加 58-61

クロス集計レポートの作成 61-67

データのソート 67-68

データのフィルタ処理 68-69

さまざまな形式へのレポートのエクスポート 69-70

VBScript の操作 70-72

VBScript の要素、オブジェクト、変数 72-76

互換性のための関数:Iif および Format 76-77

集計関数 77-79

FlexReport オブジェクトの分割の管理 79

フィールドの変更 79-80

値に応じたフィールドの書式設定 80-82

データがないセクションの非表示 82-83

値に基づいたフィールドの表示/非表示 83-85

ページカウンタのリセット 85-86

サブセクションの追加 86

FlexReportDesigner の操作 87

FlexReportDesigner について 87-89

[ファイル]メニュー 89-90

設計モード 90-91

[ホーム]タブ 91-95

[挿入]タブ 95-96

[調整]タブ 96-97

[ページ設定]タブ 97

プレビューモード 97-99

FlexReportDesigner オプションの設定 99-104

スタイルギャラリー 104-106

複数のサブセクションの追加 107-108

FlexReport for WinForms  

2 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport フィールドの追加 108

FlexChart フィールド 108-109

FlexChartフィールドとデータの連結 109-110

FlexChartFieldとFlexChartの違い 110-113

FlexChart フィールドのデータオブジェクトモデル 113

サポートされているチャートタイプ 113-120

グループ化と集計 120-122

FlexChart ナビゲーション 122-123

テキストフィールド 123-124

RTF フィールド 124-125

パラグラフフィールド 125-127

チェックボックスフィールド 127-128

バーコードフィールド 128-129

バーコードシンボル 129-134

バーコードのプロパティ 134-136

計算フィールド 136-138

画像フィールド 138-139

図形フィールド 139

サブレポートフィールド 139-143

レガシーチャートフィールド 143

チャートタイプ 143-149

設計時サポート 149-152

データバインドされたチャートでデータのプロット 152-153

非連結チャートでのデータのプロット 153-155

複数の系列を持つチャート 155-156

グループ化されたレポート内のチャート 156-158

FlexReport カスタムフィールドの追加 158

マップカスタムフィールド 158-159

マップカスタムフィールドのプロパティ 159-162

マップカスタムフィールドの追加 162-165

SuperLabel カスタムフィールド 165-167

パラメータの操作 167-169

データ連結 169-170

  FlexReport for WinForms

3 Copyright © GrapeCity, Inc. All rights reserved.         

計算フィールド 170-171

サブレポート 171-173

パラメータのカスケード 173-175

複数値パラメータ 175-176

パラメータの暗黙的な受け渡し 176

複数のデータソースの追加 176-178

FlexReport のデータソースの変更 178-179

FlexReportDesigner でデータのソート化 179-182

FlexReport のプレビューと印刷 182-183

FlexReportDesigner でのレポートのインポート 183-184

Microsoft Access レポートのインポート 184-187

Crystal Reports のインポート 187-190

レポートのエクスポートと公開 190

PDF/A へのエクスポート 190-191

FlexReports の見栄えの向上 191

背景 191-193

境界線 193-195

レポートおよびドキュメントビューア(C1FlexViewer コントロール) 196

FlexViewer の主な特長 196

FlexViewer ツールバー 196-197

レポートのビューの回転 198-199

FlexReport と FlexViewer の連結 199-200

タスク別ヘルプ 201

交互表示の背景の追加 201-202

条件付き書式設定の追加 202-204

カスタム用紙サイズの指定 204-205

動的ページヘッダーの追加 205-206

ガターマージンの作成 206-207

グループ化とソート 207-210

カスケードパラメータ 210-212

FlexReport for WinForms  

4 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport for WinForms の概要の概要

ComponentOne には、FlexReport for WinForms が導入されています。これは、C1Report を更新して高速化した新しいコ

ンポーネントです。

FlexReport は、複雑なレポートの作成からプレビュー、エクスポート、印刷まで、完全なレポートソリューションを提供する包括

的なレポートツールです。FlexReport は、優れたオブジェクトモデルを備え、プレビューコントロールやデザイナアプリケーショ

ンとして最新のユーザーインタフェースを提供しています。これを使用して、魅力的で機能豊富なレポートを柔軟に生成できま

す。FlexReportコントロールを操作するには、最小限必要なサーバー構成はWindows 7 SP1またはWindows Server 2008R2 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. C1Report(.xml)ファイルを含む既存の Windows アプリケーションプロジェクトを開きます。

2. Form から C1Report を削除します。

3. Form から C1Report のプレビューコントロール C1PrintPreview または C1RibbonPreviewControl を削除します。

4. C1FlexReport コンポーネントをツールボックスツールボックスに追加します。

a. タブを右クリックし、[アイテムの選択][アイテムの選択]を選択します。[ツールボックスアイテムの選択][ツールボックスアイテムの選択]ダイアログボックスが表

示されます。

b. [参照]をクリックし、bin\v4.0 フォルダから C1.Win.FlexReport.4.dll を選択します。C1FlexReport コンポー

ネントがツールボックスに追加されます。

5. C1FlexViewer コントロールをツールボックスツールボックスに追加します。

a. タブを右クリックし、[アイテムの選択][アイテムの選択]を選択します。[ツールボックスアイテムの選択][ツールボックスアイテムの選択]ダイアログボックスが表

示されます。

  FlexReport for WinForms

5 Copyright © GrapeCity, Inc. All rights reserved.         

b. [参照]をクリックし、bin\v4.0 フォルダから C1.Win.FlexViewer.4.dll を選択します。C1FlexViewerコントロー

ルがツールボックスツールボックスに追加されます。

6. C1FlexReport を Form にドロップします。C1FlexReport のバージョンと同じバージョンの以下の dll が参照に追加さ

れます。

C1.C1Pdf.4C1.Win.4C1.Win.BarCode.4C1.Win.C1Document.4C1.Win.FlexReport.4

これらの参照が同じバージョンでない場合は、それらを手動で追加する必要があります。

7. C1FlexViewer コントロールを Form にドロップします。C1FlexViewer のバージョンと同じバージョンの以下の dll が参

照に追加されます。

C1.C1Zip.4C1.Win.C1DX.4C1.Win.C1Ribbon.4C1.Win.FlexViewer.4C1.Win.ImportServices.4

これらの参照が同じバージョンでない場合は、それらを手動で追加する必要があります。

8. 以下の dll を参照に追加します。

C1.C1Word.4C1.C1Excel.4C1.Win.C1Chart.4C1.Win.C1Chart3D.4

マップおよびスーパーラベルカスタムフィールドを使用する場合は、以下の dll を参照に追加します。

C1.Win.FlexReport.CustomFields.4C1.WPF.Maps.4C1.WPF.4

9. C1Report コンポーネントの名前を C1FlexReport コンポーネントに変更します。コードでは、次のようにしてコンポー

ネントの名前を変更できます。

Dim report As New C1Report()' 変更後Dim report As New C1FlexReport()

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

C#

Visual Basic

FlexReport for WinForms  

6 Copyright © GrapeCity, Inc. All rights reserved.         

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

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 と互換性がありません。

C#

FlexReport とと C1ReportFlexReport は、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 のフィルタ処理と完全に互換性があります。詳細については、「データ

のフィルタ処理」を参照してください。

  FlexReport for WinForms

7 Copyright © GrapeCity, Inc. All rights reserved.         

データソースの計算フィールドデータソースの計算フィールド

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 プロパティと

FlexReport for WinForms  

8 Copyright © GrapeCity, Inc. All rights reserved.         

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.CreationDpiC1Report.DocumentInternalC1Report.Document.DoEventsC1Report.Document.HasEditableTagsC1Report.CreationDeviceStartReport()、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();

  FlexReport for WinForms

9 Copyright © GrapeCity, Inc. All rights reserved.         

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() メソッドを呼び出します。

FlexReport for WinForms  

10 Copyright © GrapeCity, Inc. All rights reserved.         

主な特長主な特長

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」をご参考ください。

  FlexReport for WinForms

11 Copyright © GrapeCity, Inc. All rights reserved.         

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 exeC1FlexReport レポート定義ファイルを作成および編集するための組み込みアプリケーションです。このデザイナを使用

して、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、

FlexReport for WinForms  

12 Copyright © GrapeCity, Inc. All rights reserved.         

Columns、ColumnLayout、PageHeader、PageFooter

DataSource オブジェクトオブジェクト

CalculatedFields、ConnectionString、Filter、RecordSource、SortDefinitions

DataSourceCollection

Report、Add、RemoveAt

SortDefinition オブジェクトオブジェクト

Direction、Expression

SortDefinitionCollection

Owner、Report

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

  FlexReport for WinForms

13 Copyright © GrapeCity, Inc. All rights reserved.         

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

FlexReport のセクションのセクション

FlexReport for WinForms  

14 Copyright © GrapeCity, Inc. All rights reserved.         

すべてのレポートは、次の 5 つの基本セクションで構成されます。

セクションセクション 説明説明

詳細 詳細セクションには、ソースレコードセット内の各レコードごとに一度ずつレンダリングされるフィール

ドが含まれます。

ヘッダー レポートのヘッダーセクションは、レポートの最初にレンダリングされます。

フッター レポートのフッターセクションは、レポートの最後にレンダリングされます。

ページヘッダー ページヘッダーセクションは、各ページの上部にレンダリングされます(オプションで、レポートヘッ

ダーを含むページを除外することもできます)。

ページフッター ページフッターセクションは、各ページの下部にレンダリングされます。

さらに、グループごとに、グループヘッダーグループヘッダーとグループフッターグループフッターという 2 つの追加セクションがあります。たとえば、3 つのグルー

プレベルを持つレポートには 11 のセクションがあることになります。

サブセクションサブセクションという追加セクションをレポートの任意のセクションに追加することもできます。

これらのセクションを非表示にすることはできますが、グループを追加または削除しない限り、セクションを追加または削

除することはできません。

次の図に、一般的なレポートで各セクションがどのようにレンダリングされるかを示します。図では、詳細セクションに置かれた

サブセクションがレポートでどのようにレンダリングされるかも示しています。

レポートヘッダーレポートヘッダー

最初にレンダリングされるセクションは、レポートヘッダーです。このセクションには、通常、レポートを識別する情報が含まれま

す。

ページヘッダーページヘッダー

レポートヘッダーの次に、ページヘッダーがレンダリングされます。レポート内にグループがない場合、このセクションには、通

常、詳細セクション内のフィールドについて説明するラベルが含まれます。

グループヘッダーとグループフッターグループヘッダーとグループフッター

  FlexReport for WinForms

15 Copyright © GrapeCity, Inc. All rights reserved.         

次に、グループヘッダー、詳細、グループフッターの各セクションがレンダリングされます。これらが、実際のレポートデータを含

むセクションです。グループヘッダーとグループフッターには、多くの場合、グループの合計、パーセント値、最大値、最小値な

どの集計関数が含まれます。グループヘッダーとグループフッターは、GroupBy プロパティによって指定された式の値が、あ

るレコードから次のレコードへ変わるたびに挿入されます。

詳細詳細

詳細セクションには、各レコードのデータが含まれます。Visible プロパティを False に設定してこのセクションを非表示にし、グ

ループヘッダーとグループフッターだけを表示することもできます。これは、サマリーレポートの作成に便利な方法です。

ページフッターページフッター

各ページの下部には、ページフッターセクションがレンダリングされます。このセクションには、通常、ページ番号、レポートの総

ページ数、レポートの印刷日などの情報が含まれます。

レポートフッターレポートフッター

最後に、レポートフッターセクションが最後のページフッターの前に出力されます。このセクションは、多くの場合、レポート全体

に関するサマリー情報を表示するために使用されます。

サブセクションサブセクション

サブセクションは、レポートの任意のセクションに追加できます。デフォルトでは、現在選択されているセクションの下部に追加

されます。このセクションには、親セクションにあるデータを補完する付加的なデータが含まれます。セクションの高さは、サブ

セクションの高さの合計によって決まります。

カスタムセクションカスタムセクション

セクションを表示するかどうかは、Visible プロパティを True または False に設定することで決定できます。グループヘッダー

は、Repeat プロパティを True に設定することで、(ページがグループの最初のページかどうかにかかわらず)各ページの上

部に繰り返し表示できます。ページヘッダーとページフッターは、Layout オブジェクトの PageHeader プロパティと PageFooterプロパティを設定することで、レポートヘッダーおよびレポートフッターセクションを含むページから削除できます。

FlexReport for WinForms  

16 Copyright © GrapeCity, Inc. All rights reserved.         

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 の実行の実行

  FlexReport for WinForms

17 Copyright © GrapeCity, Inc. All rights reserved.         

次の手順を実行します。

1. 省略符省略符ボタンをクリックして、標準の接続文字列ビルダを起動します。[データリンクプロパティ][データリンクプロパティ]ダイアログボックスが開きます。

2. [プロバイダ][プロバイダ]タブを選択し、リストからデータプロバイダを選択します。この例では、Microsoft Jet 4.0 OLE DB Provider を選択します。

3. [次へ][次へ]ボタンをクリックするか、[接続][接続]タブを選択します。ここで、データソースを選択する必要があります。

4. 省略符省略符ボタンをクリックしてデータベースを選択します。[[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. [>>]ボタンをクリックして、残りのフィールドを[詳細][詳細]リストに移動します。

FlexReport for WinForms  

18 Copyright © GrapeCity, Inc. All rights reserved.         

3. [次へ][次へ]をクリックします。ウィザードに従って残りの手順を実行します。

3. 新しいレポートのレイアウトを選択します。新しいレポートのレイアウトを選択します。

このページには、ページ内でのデータの構成方法を定義するいくつかのオプションが用意されています。レイアウトを選択すると、左側にサムネイルプレビューが表示

され、ページ内でレイアウトがどのように表示されるかを確認できます。2 つのレイアウトグループがあります。1 つは、グループなしのレポート用のレイアウトグルー

プ、もう 1 つはグループありのレポート用のレイアウトとグループです。目的とするレポートの最終的な外観に最も近いレイアウトを選択してください。

また、このページでは、用紙の方向と、フィールドをページ幅に合わせて調整するかどうかを選択できます。

[ラベル][ラベル]レイアウトオプションを使用して、Avery スタイルのラベルを印刷します。このオプションを選択すると、印刷するラベルの種類を指定するためのページが表示

されます。

手順手順 3 の実行の実行

次の手順を実行します。

1. [アウトライン][アウトライン]レイアウトのままにします。

2. [次へ][次へ]をクリックします。ウィザードに従って残りの手順を実行します。

4. 新しいレポートのスタイルを選択します。新しいレポートのスタイルを選択します。

このページでは、新しいレポートで使用するフォントと色を選択できます。前のページと同様に、プレビューが表示され、各スタイルがどのように表示されるかを確認で

きます。最適なスタイルを選択します(スタイルは後で変更したり、詳細に調整することができます)。

  FlexReport for WinForms

19 Copyright © GrapeCity, Inc. All rights reserved.         

手順手順 4 の実行の実行

1. Verdana スタイルを選択します。

2. [次へ][次へ]をクリックします。ウィザードに従って残りの手順を実行します。

5. 新しいレポートのタイトルを選択します。新しいレポートのタイトルを選択します。

この最後の手順のページでは、新しいページのタイトルを選択します。また、新しいレポートをすぐにプレビューするか、プレビューする前に編集モードに移動してデザ

インに手を加えるかを指定します。

手順手順 5 の実行の実行

1. 新しいレポートのタイトルを入力します。たとえば、「Products Report」とします。

2. [レポートのプレビュー][レポートのプレビュー]を選択し、[完了][完了]をクリックします。

デザイナデザイナのプレビューペインにレポートが直ちに表示されます。

レポートに何らかの調整が必要なことに気づくことがあります。レポートの修正方法については、次の手順で説明します。

コードを使用したレポート定義の作成コードを使用したレポート定義の作成

以下の手順では、FlexReportDesigner アプリケーションまたはコードを使用してレポート定義を作成する方法について説明します。独自のレポートデザイナを記述したり、ア

ドホックなレポートジェネレータを作成することもできます。

FlexReport for WinForms  

20 Copyright © GrapeCity, Inc. All rights reserved.         

この例では、コードを使用して、C1NWind データベースに基づく単純な表形式のレポート定義を作成します。コードにはコメントが付けられ、C1FlexReport オブジェクトモデル

の最も重要な要素が例示されています。次の手順を実行します。

1. 最初に、ボタンコントロール、C1FlexReport コンポーネント、および C1FlexViewer コントロールをフォームに追加します。次のプロパティを設定します。

Button.Name = btnEmployees

C1FlexReport.Name = c1FlexReport1 (C# でのデフォルト名)

C1FlexViewer.Name = c1FlexViewer1 (C# でのデフォルト名)

2. c1FlexReport1 という名前のコントロールを初期化します。それには、Clear メソッドを使用してコンテンツを消去し、コントロールのフォントを設定します(このフォントが

新しいフィールドに割り当てられます)。

Private Sub RenderEmployees() C1FlexReport1.DataSource.RecordSourceType = RecordSourceType.Auto ' 既存のフィールドをすべて消去します C1FlexReport1.Clear() ' すべてのコントロールのデフォルトのフォントを設定します C1FlexReport1.Font.Name = "Tahoma" C1FlexReport1.Font.Size = 8End Sub

private void RenderEmployees() { c1FlexReport1.DataSource.RecordSourceType = RecordSourceType.Auto; // 既存のフィールドをすべて消去します c1FlexReport1.Clear(); // すべてのコントロールのデフォルトのフォントを設定します c1FlexReport1.Font.Name = "Tahoma"; c1FlexReport1.Font.Size = 8;}

3. 次に、C1NWind.mdb データベースから必要なデータを取得するように DataSource オブジェクトを設定します。それには、ConnectionString プロパティと

RecordSource プロパティを使用します。

' 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"

//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 インチを引いた値)に設定します。

'Layout を初期化します Dim l As Layout = C1FlexReport1.Layout l.Orientation = OrientationEnum.Portrait l.Width = 6.5 * 1440 ' 8.5 からマージンを引いた値(ツイップ単位)

//Layout を初期化します Layout l = c1FlexReport1.Layout; l.Orientation = OrientationEnum.Portrait; l.Width = 6.5 * 1440; // 8.5 からマージンを引いた値(ツイップ単位)

5. 次の手順は、興味深いものです。すべてのレポートには、5 つの基本セクション(詳細詳細、レポートヘッダーレポートヘッダー、レポートフッターレポートフッター、ページヘッダーページヘッダー、ページフッターページフッター)がありま

す。次のコードを使用して、レポートヘッダーを設定します。ここでは、いくつかのプロパティを設定し、タイトルフィールドを追加します。

Visual Basic

C#

Visual Basic

C#

Visual Basic

C#

Visual Basic

  FlexReport for WinForms

21 Copyright © GrapeCity, Inc. All rights reserved.         

' レポートヘッダーを作成します 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)

// レポートヘッダーを作成します 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 に設定することで、同じことを実現できます。ページフッターを作成するには、次のコードを追加します。

' ページフッターを作成します 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()

C#

VB

FlexReport for WinForms  

22 Copyright © GrapeCity, Inc. All rights reserved.         

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)

// ページフッターを作成します 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. 次に、ページヘッダーセクションを設定します。このセクションは、各ページの上部にレンダリングされ、フィールドラベルが表示されます。ページヘッダーセクションを使

用してフィールドラベルを表示するテクニックは、表形式のレポートでよく使用されます。コードは単純ですが、すべてのフィールドのサイズを指定しているため、見た目

は多少煩雑です。実際のアプリケーションでは、これらの値はプログラムに組み込まれません。フィールドラベルを含むページヘッダーを作成するには、次のコードを

追加します。

'フィールドラベルを含むページヘッダーを作成します 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

C#

Visual Basic

  FlexReport for WinForms

23 Copyright © GrapeCity, Inc. All rights reserved.         

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)

//フィールドラベルを含むページヘッダーを作成します 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";

C#

FlexReport for WinForms  

24 Copyright © GrapeCity, Inc. All rights reserved.         

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. 詳細セクションを追加して、レポートを完成させます。このセクションが、実際のデータを表示するセクションです。詳細セクションでは、ページヘッダーセクションの各ラ

ベルの下のテキストフィールドに式を設定します。詳細セクションを作成するには、次のコードを追加します。

' 詳細セクションを作成します 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

Visual Basic

  FlexReport for WinForms

25 Copyright © GrapeCity, Inc. All rights reserved.         

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)

// 詳細セクションを作成します 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();

C#

FlexReport for WinForms  

26 Copyright © GrapeCity, Inc. All rights reserved.         

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 イベントにイベントハンドラを追加します。コードエディタが表示され、イベントハンドラ内に挿入ポイントが配置されます。次のコードを入力します。

RenderEmployees() C1FlexViewer1.DocumentSource = C1FlexReport1

RenderEmployees(); c1FlexViewer1.DocumentSource = c1FlexReport1;

基本レポートの外観は次のようになります。

Visual Basic

C#

手順手順 2:レポートの修正:レポートの修正

プレビューモードの FlexReportDesigner では、レポートを調整することはできません。[設計][設計]ボタンをクリックしてデザインモードに

切り替え、修正を開始します。メインウィンドウの右ペインがプレビューモードから設計モードに切り替わり、レポートを構成するコント

  FlexReport for WinForms

27 Copyright © GrapeCity, Inc. All rights reserved.         

ロールとフィールドが表示されます。

レポートの修正レポートの修正

この例では、グループヘッダーセクションのサイズ変更、およびフィールド値の書式設定を行います。それには、次の手順に従いま

す。

1. グループヘッダーセクションのサイズを変更するには、境界線を選択し、マウスポインタを使用して目的の位置までドラッグしま

す。

2. マウスポインタでフィールドの角にあるハンドルをドラッグして、フィールドのサイズを変更します。

ヒントヒント:テキストがフィールドに収まらない場合は、プロパティペインでフィールドの Appearance.WordWrap プロパティ

を True に設定します。

3. プロパティペインで、Unit Price 列の下にある詳細セクションの UnitPriceCtl フィールドを選択します。

4. フィールドの Appearance.Format プロパティを Currency に設定します。

FlexReport for WinForms  

28 Copyright © GrapeCity, Inc. All rights reserved.         

5. [プレビュー][プレビュー]ボタンをクリックしてプレビューモードに切り替え、修正を確認します。

6. [設計][設計]ボタンをクリックして、プレビューモードから設計モードに切り替えます。

7. [ファイル][ファイル]メニューをクリックして、表示されるメニューから[名前を付けて保存][名前を付けて保存]を選択します。

  FlexReport for WinForms

29 Copyright © GrapeCity, Inc. All rights reserved.         

8. [レポート定義ファイルの保存][レポート定義ファイルの保存]ダイアログボックスで、[ファイル名][ファイル名]ボックスに「ProductsReport.flxr」と入力します。後で使

用するために、覚えやすい場所にファイルを保存します。

9. デザイナデザイナを閉じて、Visual Studio プロジェクトに戻ります。

これで、レポート定義ファイルを作成できました。次の手順では、C1FlexReport コンポーネントにレポートをロードします。

手順手順 3::C1FlexReport コンポーネントでのレポートのロードコンポーネントでのレポートのロード

設計時にファイルからレポート定義をロードするには、次のいずれかのタスクを実行します。

C1FlexReport コンポーネントを右クリックし、[レポートのロード][レポートのロード]メニューオプションを選択します。

または

C1FlexReport コンポーネントの上のスマートタグ( )をクリックし、[[C1FlexReport のタスク]のタスク]メニューから[レポートの[レポートの

読み込み]読み込み]を選択します。

[レポートのロード][レポートのロード]ダイアログボックスを使用して、必要なレポートを選択するには、次のタスクを実行します。

1. 省略符省略符ボタンをクリックします。[開く][開く]ダイアログボックスが表示されます。

2. ProductsReport.flxr ファイルを保存した場所を参照し、そのファイルを選択して、[開く][開く]をクリックします。

3. [レポート][レポート]ドロップダウンボックスに有効なレポート定義がリストされます。ロードする[[Products Report]]定義を選択

します。

4. [ロード][ロード]をクリックし、[[OK]]をクリックして、ダイアログボックスを閉じます。

FlexReport for WinForms  

30 Copyright © GrapeCity, Inc. All rights reserved.         

次の手順では、レポートをプレビューコントロールにレンダリングします。

手順手順 4:レポートのレンダリング:レポートのレンダリング

レポート定義を作成し、データソースを定義して C1FlexReport コンポーネントにロードしたら、レポートをプリンタやプレビュー

コントロール C1FlexViewer にレンダリングしたり、別のファイル形式にエクスポートすることができます。

C1FlexViewer コントロールでレポートをプレビューするには、次の手順に従います。

1. ツールボックスツールボックスから、C1FlexViewer コントロールをダブルクリックしてプロジェクトに追加します。

2. プロパティウィンドウで、C1FlexViewer.Dock プロパティを Fill に設定します。

3. マウスで Windows フォームを選択し、ドラッグしてサイズ変更します。

4. フォームをダブルクリックし、Form_Load イベントハンドラに次のコードを入力します。

'レポート定義をロードしますC1FlexReport1.Load("..\..\Products Report.flxr", "14a: サブレポート")'レポートをプレビュー表示しますC1FlexViewer1.DocumentSource = C1FlexReport1

// レポート定義をロードしますc1FlexReport1.Load(@"..\..\Products Report.flxr", "14a: サブレポート");// レポートをプレビュー表示しますc1FlexViewer1.DocumentSource = c1FlexReport1;

Visual Basic

C#

  FlexReport for WinForms

31 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport for WinForms  

32 Copyright © GrapeCity, Inc. All rights reserved.         

設計時サポート設計時サポート

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のバージョン番号、ライセンス、オンラインリソースに関する情報が表示されます。

  FlexReport for WinForms

33 Copyright © GrapeCity, Inc. All rights reserved.         

[[C1FlexViewer のタスク]メニューのタスク]メニュー

[[C1FlexViewer のタスク]のタスク]メニューでは、C1FlexViewer コントロールを親コンテナにすばやく簡単にドッキングしたり、[ローカ[ローカ

ライズ]ライズ]ダイアログボックスにアクセスすることができます。

[[C1FlexViewer のタスク]のタスク]メニューにアクセスするには、コントロールの右上隅にあるスマートタグ をクリックします。

[[C1FlexViewer のタスク]のタスク]メニューの機能は次のとおりです。

ローカライズローカライズ

[ローカライズ][ローカライズ]ボタンをクリックすると、[ローカライズ][ローカライズ]ダイアログボックスが表示されます。[ローカライズ][ローカライズ]ダイアログ

ボックスで、ローカライズ設定をカスタマイズできます。

C1FlexViewer についてについて

[バージョン情報][バージョン情報]をクリックすると、コントロールの[バージョン情報][バージョン情報]ダイアログボックスにコントロールのビルドバージョ

ンが表示されます。

親コンテナにドッキングする/親コンテナでドッキングを解除する親コンテナにドッキングする/親コンテナでドッキングを解除する

[親コンテナにドッキングする][親コンテナにドッキングする]をクリックすると、C1FlexViewer の Dock プロパティが Fill に設定されます。

C1FlexViewer が親コンテナにドッキングされている場合は、親コンテナから C1FlexViewer をドッキング解除するオプ

ションを使用できるようになります。[親コンテナでドッキングを解除する][親コンテナでドッキングを解除する]をクリックすると、C1FlexViewer の Dock プロパティが None に設定されます。

FlexReport for WinForms  

34 Copyright © GrapeCity, Inc. All rights reserved.         

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 コンポーネントは、レポート定義ファイルで指定されたデータソースからデータをロードします。または、

独自のカスタムデータソースを提供することもできます。

  FlexReport for WinForms

35 Copyright © GrapeCity, Inc. All rights reserved.         

4. C1FlexReport コンポーネントは、レポート定義に従ってデータを書式設定し、レポートを (a) プリンタ、(b) プレビューコ

ントロール、(c) またはいくつかのファイル形式の 1 つにレンダリングします。

5. カスタムアプリケーションは、さまざまな機能を持つオブジェクトモデルを使用して C1FlexReport コンポーネントと通信

できるため、レポートを簡単にカスタマイズできます。また、まったく新しいレポートを生成することもできま

す。C1FlexReportDesigner は、このようなアプリケーションの一例です。

メモメモ:FlexReport を使用するには、オペレーティングシステムが NT 6.1 コアをサポートする必要があります。した

がって、FlexReport に必要な最小限のサーバー構成は、Windows Server 2008 R2 です。

C1FlexReport とと C1DocumentC1FlexReport は、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

FlexReport for WinForms  

36 Copyright © GrapeCity, Inc. All rights reserved.         

では、これらは内部的に使用されます。

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, C1FindTextParamsfindParams);public IAsyncOperationWithProgress<C1FoundPosition, double> FindTextStartAsyncEx(intstartPageIndex, 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; }

  FlexReport for WinForms

37 Copyright © GrapeCity, Inc. All rights reserved.         

// 概要:

// 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 でレポートを作成するには、レポート定義の他に実際のデータが必要です。通常は、データベースからデータを取

得しますが、他の場所から取得することもできます。以下のトピックでは、他のソースからデータを取得する方法を確認します。

FlexReport for WinForms  

38 Copyright © GrapeCity, Inc. All rights reserved.         

データベースからのデータの取得データベースからのデータの取得

FlexReport でレポートデータを取得またはロードするには、C1FlexReport の以下の DataSource プロパティを設定する必要

があります。

ConnectionStringRecordSource

データソースを設定するには

'データソースを初期化します 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"

//データソースを初期化します 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:レポート定義の作成」で説明するコードまたはデザイナを使用したデータソースの初期化

と同じです。

Visual Basic

C#

ストアドプロシージャからのデータの取得ストアドプロシージャからのデータの取得

ストアドプロシージャ(sproc)は、複数のアプリケーションにまたがるロジックの一貫した実装に役立つほか、パフォーマンスを

向上させ、ユーザーがデータベース内のテーブルの詳細を知る必要をなくします。ストアドプロシージャの大きな利点の 1 つは、データベースがレコードセットをフィルタ処理するためのパラメータを渡すことができることです。これにより、返されるデー

タセットが少量になるので、レポートをより速くより簡単に操作できます。

C1FlexReport ウィザードウィザードでは、ストアドプロシージャからレポートにデータを挿入できます。C1FlexReport ウィザードウィザードを開くに

は、次のいずれかを実行します。

Visual Studio で、C1FlexReport コンテキストメニューの[レポートの編集][レポートの編集]を選択します。

Visual Studio で、[[C1FlexReport のタスク]のタスク]メニューの[レポートの編集][レポートの編集]を選択します。

C1FlexReportDesigner アプリケーションで、[レポート][レポート]タブの[新しいレポート][新しいレポート]ボタンをクリックします。

ストアドプロシージャによるレポートへのデータの挿入は、SQL 文や直接テーブルを使用する方法と違いがありませ

ん。C1FlexReport ウィザードウィザードの最初の画面で、省略符省略符ボタンをクリックしてデータソースを選択します。次に、有効なデータ

ソースのリストから[ストアドプロシージャ][ストアドプロシージャ]を選択します。

  FlexReport for WinForms

39 Copyright © GrapeCity, Inc. All rights reserved.         

[次へ][次へ]を選択し、ウィザードを続行します。

他の形式のデータのロードと同様に、次の 2 つのオプションがあります。

DataSource の ConnectionString プロパティと RecordSource プロパティを使用してデータソースを選択できます。

デザイナで、(省略符[...]ボタンをクリックして)DataSource ダイアログボックスを使用して接続文字列を選択し、使用

するテーブルまたは sproc をリストから選択します。次に例を示します。

connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Windows8.1\Documents\ComponentOne Samples\Common\C1NWind.mdb;Persist SecurityInfo=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 要求は次のとおりです

FlexReport for WinForms  

40 Copyright © GrapeCity, Inc. All rights reserved.         

(ADVENTUREWORKS_DATA.MDF のパスは適宜調整が必要)。

PARAMETERS Employee Int 290;DECLARE @RC intDECLARE @EmployeeID intset @EmployeeID = [Empoyee]EXECUTE @RC = [C:\ADVENTUREWORKS_DATA.MDF].[dbo].[uspGetEmployeeManagers]@EmployeeID

データテーブルオブジェクトをデータソースとして使用データテーブルオブジェクトをデータソースとして使用

C1FlexReport の外部にあるデータを操作し、それを DataTable オブジェクトにロードしなければならないアプリケーションは

よくあります。このような場合は、DataTable オブジェクトをレポートデータソースとして使用して、レポートのレンダリング時に

データを再ロードする無駄を省くことができます。

この方法は、次のようなアプリケーションでも役立ちます。

セキュリティ制限により、接続文字列を非公開にする必要があり、データだけ(ソースではなく)を公開できる場合。

データベースが OleDb(C1FlexReport で内部的に使用されるプロバイダ)によってサポートされていない場合。

データをデータベース以外から取得する場合。代わりに、DataTable を作成し、カスタムコードを使用してデータを挿入

します。

DataTable オブジェクトを C1FlexReport のデータソースとして使用するには、レポート定義をロードし、DataTable をC1FlexReport.DataSource.Recordset プロパティに割り当てるだけです。次に例を示します。

' キャッシュまたはセキュリティで保護されたカスタムプロバイダから DataTable をロードしますDim dt As DataTable = GetMyDataTable()

' レポート定義をロードします(データソースを設定する前)C1FlexReport1.Load(@"reportFile", "reportName")

' DataTable をデータソースとして使用しますC1FlexReport1.DataSource.Recordset = dt

// キャッシュまたはセキュリティで保護されたカスタムプロバイダから DataTable をロードしますDataTable dt = GetMyDataTable();

// レポート定義をロードします(データソースを設定する前)c1FlexReport1.Load(@"reportFile", "reportName");

// DataTable をデータソースとして使用しますc1FlexReport1.DataSource.Recordset = dt;

Visual Basic

C#

カスタムデータソースオブジェクトの使用カスタムデータソースオブジェクトの使用

カスタムオブジェクトをデータソースとして使用できます。必要な条件は、カスタムオブジェクトが IC1FlexReportRecordset インタフェースを実装することだけです。

IC1FlexReportRecordset は、事実上どのようなデータの集合にも簡単に追加できる簡潔で実装しやすいインタフェースで

す。これは、DataTable オブジェクトを作成し、それにすべてのデータをコピーする方法より効率的であることが多くあります。

たとえば、カスタムデータソースオブジェクトを使用して、ファイルシステムやカスタム .xml ファイルまたはカスタム .flxr ファイ

  FlexReport for WinForms

41 Copyright © GrapeCity, Inc. All rights reserved.         

ルをラップできます。

カスタムデータソースオブジェクトを使用するには、レポート定義をロードし、そのオブジェクトを C1FlexReport の Recordsetプロパティに割り当てます。次に例を示します。

' カスタムデータソースオブジェクトを取得しますDim rs As IC1FlexReportRecordset = CType(GetMyCustomDataSource(), IC1FlexReportRecordset)

' レポート定義をロードします(データソースを設定する前)C1FlexReport1.Load(@"reportFile", "reportName")

' C1FlexReport コンポーネントでカスタムデータソースオブジェクトを使用しますC1FlexReport1.DataSource.Recordset = rs

// カスタムデータソースオブジェクトを取得しますIC1FlexReportRecordset rs = (IC1FlexReportRecordset)GetMyCustomDataSource();

// レポート定義をロードします(データソースを設定する前)c1FlexReport1.Load(@"reportFile", "reportName");

// C1FlexReport コンポーネントでカスタムデータソースオブジェクトを使用しますc1FlexReport1.DataSource.Recordset = rs;

Visual Basic

C#

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 つのレポートが複

FlexReport for WinForms  

42 Copyright © GrapeCity, Inc. All rights reserved.         

数のデータソースを持つことができるため、チャートやパラメータを使用しながら、これらのデータソースへの接続方法につい

て学習する必要があります。

以下のセクションでは、複数のデータソースを使用するレポートで、チャートやパラメータにデータを連結する方法について説

明します。

複数データソースレポートでのチャートへのデータの連結複数データソースレポートでのチャートへのデータの連結

レポートにチャートチャートフィールドを追加する際は、最初の手順としてチャートをデータソースに連結します。

たとえば、レポートに「Employees」と「Products」という 2 つのデータソースがあるとします。Employees データソースの

FullName と Age を表示するチャートと、Products データソースの CategoryName と Sum(UnitsInStock) を表示するチャート

の 2 つを作成します。

次の手順で、このシナリオを実現できます。

1. レポートで 2 つのデータソース「Employees」と「Products」を作成します。

2. Employees データソースで 2 つの計算フィールド「FullName」と「Age」を定義します。

3. Products データソースで 2 つの計算フィールド「CategoryName」と「Sum(UnitsInStock)」を定義します。

4. Employees データソースと Products データソースに個別に連結する 2 つのチャートフィールドを作成します。

そのためのコード例を次に示します。

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,

Visual Basic

  FlexReport for WinForms

43 Copyright © GrapeCity, Inc. All rights reserved.         

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()

FlexReport for WinForms  

44 Copyright © GrapeCity, Inc. All rights reserved.         

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

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);

C#

  FlexReport for WinForms

45 Copyright © GrapeCity, Inc. All rights reserved.         

// データソース 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()

FlexReport for WinForms  

46 Copyright © GrapeCity, Inc. All rights reserved.         

{ 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; }

  FlexReport for WinForms

47 Copyright © GrapeCity, Inc. All rights reserved.         

複数データソースレポートでのパラメータへのデータの連結複数データソースレポートでのパラメータへのデータの連結

パラメータにデータを連結することで、レポートパラメータ(C1FlexReport.Parameters コレクション内の要素)に対して有効な

値が定義できます。ReportParameter.AllowedValuesDefinition.Binding.DataSourceName プロパティは、有効なパラ

メータ値のリストを作成するために使用されるデータソースを示します。次のコード例は、複数のデータソースを含むレポートの

パラメータにデータを連結する方法を示します。

' データソースおよびこのデータソースを使用するパラメータを追加しますDim mds As DataSource = C1FlexReport.DataSourceDim ds As New DataSource()

Visual Basic

FlexReport for WinForms  

48 Copyright © GrapeCity, Inc. All rights reserved.         

ds.Name = "CategoriesDS"ds.ConnectionString = mds.ConnectionStringds.RecordSource = "select * from categories"ds.DataProvider = DataProvider.OLEDBC1FlexReport.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)

// データソースおよびこのデータソースを使用するパラメータを追加します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);

C#

計算フィールドの定義計算フィールドの定義

計算計算フィールドには、実行時に評価される式が設定されます。計算フィールドは、DataSource.CalculatedFields.Add メソッド

を使用してデータソースに追加できます。

たとえば、「CategoryID * 2」を計算する整数型の計算フィールド「Calc1」を追加するコードは、次のようになります。

Dim ds As DataSource = C1FlexReport1.DataSources(0)ds.CalculatedFields.Add(New CalculatedField("Calc1", GetType(Integer), "CategoryID * 2"))

DataSource ds = c1FlexReport1.DataSources[0];

Visual Basic

C#

  FlexReport for WinForms

49 Copyright © GrapeCity, Inc. All rights reserved.         

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 という名前のボタンを追加した場合は、次のようなコードを追加します。

Private Sub btnProductsReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProductsReport.Click

Visual Basic

FlexReport for WinForms  

50 Copyright © GrapeCity, Inc. All rights reserved.         

c1FlexViewer1.DocumentSource =rptProductsEnd Sub

private void btnProductsReport_Click(object sender, System.EventArgs e) {c1FlexViewer1.DocumentSource =rptProducts;}

rptProducts は、ユーザーが選択したレポートを含む C1FlexReport コンポーネントの名前、c1FlexViewer1は、C1FlexViewer コントロールの名前です。

C#

設計時の設計時の FlexReport の作成の作成

「設計時の FlexReport のロード」で説明されている[レポートのロード][レポートのロード]を使用すると、既存のレポートを簡単にアプリケーショ

ンに埋め込むことができます。ただし、レポートをカスタマイズする場合や、接続文字列とレコードソースを使用する代わりに、

Visual Studio アプリケーションでデータソースオブジェクトを定義して使用する場合もあります。このような場合は、代わり

に[レポートの編集][レポートの編集]コマンドを使用します。

設計時にレポートを作成または編集するには、C1FlexReport コンポーネントを右クリックし、[レポートの編集][レポートの編集]メニューオプショ

ンを選択して、C1FlexReportDesigner アプリケーションを呼び出します。コンポーネントの上にあるスマートタグ( )をクリッ

クして[[C1FlexReport のタスク]のタスク]メニューを開き、[レポートの編集][レポートの編集]オプションを選択することもできます。

メモ:メモ: コンテキストメニューやプロパティウィンドウに[レポートの編集][レポートの編集]コマンドが表示されていない場合は、コントロール

が C1FlexReportDesigner アプリケーションを見つけることができなかった可能性があります。この場合

は、C1FlexReportDesigner アプリケーションをスタンドアロンモードで一度実行します。Designer の場所がレジストリ

に保存されるため、これで C1FlexReport コンポーネントが Designer を検出できるようになります。

C1FlexReportDesigner アプリケーションは、C1FlexReport コンポーネントに現在ロードされているレポートを表示します。

C1FlexReport コンポーネントが空の場合は、C1FlexReport ウィザードウィザードが表示され、ここで新しいレポートを作成できます。

これは、スタンドアロンモードで使用される C1FlexReportDesigner アプリケーションと同じです。C1FlexReportDesigner アプリケーションをこのモードで開始した場合は、次の点だけが異なります。

現在のアプリケーションで定義したデータソースオブジェクトを新しいレポートのデータソースとして使用できます。

デザイナを閉じると、行った変更がフォームの C1FlexReport コンポーネントに保存されます(変更を破棄するには、デ

ザイナのメニューから[ファイル][ファイル]→[終了][終了]を選択し、変更の保存に対して[いいえ][いいえ]を選択します)。

現在のアプリケーションで定義したデータソースオブジェクトを使用するには、デザイナの[データソース][データソース]ボタンをクリック

し、[データソースの選択][データソースの選択]ダイアログボックスで[テーブル][テーブル]オプションを選択します。

フォームに現在定義されているデータオブジェクトのリストが[テーブル][テーブル]ページに表示されます(フォームに有効なデータソー

スがない場合、このページは表示されません)。または、通常どおり、[[Connection string]]を使用して、接続文字列とレコー

ドソースを作成して選択できます。

たとえば、メインフォームに DataSet オブジェクトとこれにアタッチされた複数の DataTable が含まれる場合、データソース選

択ダイアログボックスは次のように表示されます。

  FlexReport for WinForms

51 Copyright © GrapeCity, Inc. All rights reserved.         

レポートの作成または編集が完了したら、メニューから[ファイル][ファイル]→[保存][保存]または[ファイル][ファイル]→[終了][終了]を選択してデザイナを閉

じることができます。これにより、レポート定義が直接コンポーネントに保存されます([レポートのロード][レポートのロード]コマンドを使用して

ファイルからレポート定義をロードした場合と同様)。

変更をキャンセルする場合は、メニューから[ファイル][ファイル]→[終了][終了]を選択し、[いいえ][いいえ]を選択して、変更を保存しないでデザイナ

を終了します。

実行時の実行時の FlexReport のロードのロード

実行時にレポートをロードするには、レポート定義ファイルとビューアが必要です。このようなアプリケーションの主な長所は、レポート

形式を変更しても、アプリケーションを更新する必要がないことです。新しいレポート定義ファイルをユーザーに送るだけで済みます。

実行時にロードされるレポートを備えたアプリケーションを作成するには、次の手順に従います。

1. C1FlexReportDesigner アプリケーションで、必要なレポートをすべて作成します。詳細については、「C1FlexReportDesignerの操作」を参照してください。

2. 次のコントロールをアプリケーションに追加します。

c1FlexReport1 という名前の C1FlexReport コンポーネント

fv という名前の C1FlexViewer コントロール

cmbReport という名前の ComboBox コントロール

button1 という名前の Button コントロール

3. 次の Import 文をファイルの先頭に追加します。

Imports C1.Win.FlexReport Imports System.IO

using C1.Win.FlexReport;using System.IO;

Visual Basic

C#

FlexReport for WinForms  

52 Copyright © GrapeCity, Inc. All rights reserved.         

これにより、完全名前空間を指定しなくても、C1FlexReport と System.IO のクラスとオブジェクトを参照できます。

4. レポート定義ファイルを読み取り、すべてのレポートのリストを構築するために、次のコードをボタンクリックイベントに追加しま

す。

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) NextEnd Sub

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); }

Visual Basic

C#

  FlexReport for WinForms

53 Copyright © GrapeCity, Inc. All rights reserved.         

}

このコードは、最初に、レポート定義が格納されているファイルの場所を取得します。それには、システム定義の Path クラスと

Application クラスの静的メソッドを使用します。レポート定義ファイルの場所と名前に合わせてコードを調整してください。

次に、GetReportList メソッドを使用してレポート定義ファイル(手順 1 で作成)内のすべてのレポート名を含む配列を取得し、

ユーザーがレポートを選択するためのコンボボックスにレポート名を挿入します。

5. ユーザーが選択したレポートをレンダリングするためのコードを追加します。次に例を示します。

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

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. プロジェクトを実行します。

Visual Basic

C#

FlexReport for WinForms  

54 Copyright © GrapeCity, Inc. All rights reserved.         

パラメータの追加パラメータの追加

パラメータは、どのようなレポートでも重要な要素です。パラメータは、レポートに渡されたデータを操作することで、挿入される

データに影響を及ぼします。パラメータを使用して、データのデフォルト値を変更したり、データにフィルタを適用することができ

ます。また、複数値パラメータを使用して、複数の値を選択することもできます。

FlexReport のパラメータコレクション C1FlexReport.Parameters でパラメータを定義して、タイプ、キャプション、デフォルト

値、有効な値などを指定できます。

C1FlexReport.Parameters コレクションでパラメータとして定義される各要素は、ReportParameter クラスのインスタンスで

す。これは次のプロパティを持ちます。

Nullable このパラメータの値を Null にできるかどうかを示す値を取得または設定します。複数値パラ

メータの場合は、true にできません。

AllowBlank このパラメータの値を空の文字列にできるかどうかを示す値を取得または設定します。

DataType が String でない場合は無視されます。

  FlexReport for WinForms

55 Copyright © GrapeCity, Inc. All rights reserved.         

MultiValue これが複数値パラメータ(値のセットを受け取ることができるパラメータ)であるかどうかを示す

値を取得または設定します。

Hidden このパラメータをユーザーに非表示にする(ただし、サブレポート、ドリルスルーレポートなどで

プログラミングによって使用することは可能)かどうかを示す値を取得または設定します。

Prompt パラメータ値の入力を求める際にエンドユーザーに表示されるプロンプトを取得または設定し

ます。

Value パラメータ値を取得または設定します。MultiValue が true の場合は、Value に配列を指定で

きます(この場合は、すべての項目が同じ項目タイプを持つ必要があります)。

DataType パラメータのデータタイプを取得または設定します。

AllowedValuesDefinition このパラメータの許容値のリストを定義する AllowedValuesDefinition を取得します。許容値

は、AllowedValuesDefinition.Values プロパティを使用して静的リストとして指定するか、

AllowedValuesDefinition.Binding プロパティを使用してレポートのデータソースの 1 つに連

結された動的リストとして指定できます。

レポートパラメータは、FlexReportDesigner アプリケーションを使用して簡単に追加できます。詳細については、「パラメータの

操作」および「複数データソースレポートでのパラメータへのデータの連結」を参照してください。

データのグループ化データのグループ化

グループ化は、整理された方法でデータを表示するために最もよく使用される方法です。基本レイアウトの設計が完了したら、特

定のフィールドなどの基準に基づいてレコードを区切ることで、読みやすいレポートを作成できます。データをグループ化すること

で、レコードをグループに分け、グループごとに概要やサマリーデータを表示することができます。グループの区切りは、グループ

化式に基づいて行われます。この式は、1 つ以上のレコードセットフィールドに基づいて作成されることが普通ですが、必要に応じ

てさらに複雑な式にすることもできます。

FlexReport でグループ化を実行するには、C1FlexReport.Groups を使用します。

たとえば、特定の肩書きや役職に該当する従業員の名前をリストすることにします。この場合は、Title(肩書き)でリストをグループ

化します。以下の手順は、従業員リストを Title でグループ化する方法を示します。この例では、「FlexReport クイックスタート」で作

成したサンプルを使用します。

1. FlexReport クイックスタートプロジェクトの Form に、C1CheckBox を追加します。

2. C1CheckBox Name を「groupC1CheckBox」に、Text を「Group Report by Title」に設定します。

3. CheckedChanged イベントを c1CheckBox1_CheckedChanged という名前で作成します。

4. 次のコードを追加します。

Private grp As GroupPrivate s As SectionPrivate 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"

Visual Basic

FlexReport for WinForms  

56 Copyright © GrapeCity, Inc. All rights reserved.         

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 IfEnd Sub

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(); }

C#

  FlexReport for WinForms

57 Copyright © GrapeCity, Inc. All rights reserved.         

}

5. プロジェクトを実行します。[Employees]ボタンをクリックして、レポートをレンダリングします。

6. [Title でレポートをグループ化]チェックボックスをクリックして、レポートにグループを表示します。役職が昇順にソートされ

ていることを確認します。

小計などの集計の追加小計などの集計の追加

C1FlexReport は、すべての計算フィールドで集計式をサポートします。集計式には、Sum、Min、Max、Avg、Count、Range、Var などがあります。

すべての集計関数は引数として式を受け取り、レポート内の位置によって特定される範囲内でその式を評価します。たとえ

ば、グループヘッダーまたはグループフッター内の集計は、そのグループを対象範囲にします。レポートヘッダーまたはレポー

トフッター内の集計は、レポート全体を対象範囲にします。

たとえば、次の集計式は、集計の範囲(グループまたはレポート)内で Sales フィールドのすべての値の合計を返しま

す。Sum(Sales)

次の集計式は、レポート内のすべての値に対して消費税の合計を返します(消費税を 8.5% と仮定)。Sum(Sales *

FlexReport for WinForms  

58 Copyright © GrapeCity, Inc. All rights reserved.         

0.085)

次の例は、Count 集計を使用して、特定の役職に該当する従業員のレコードの数を計算します。

1. サンプル「データのグループ化」で作成したチェックボックスイベント(c1CheckBox1_CheckedChanged)に次のコードを

追加します。

Dim f1 As New Field()f1.Name = "CountRecords"f1.Text = "Count(GrpTitle)"f1.Left = 2000f1.Top = 500f1.Width = C1FlexReport1.Layout.Width - 2000f1.Height = 400f1.Align = FieldAlignEnum.LeftMiddlef1.MarginLeft = 100f1.Calculated = Truef1.Visible = Truef1.BackColor = Color.Yellowf1.Font.Bold = Truef1.Font.Size = 10s.Fields.Add(f1)Dim tf As New TextField()tf.Name = "Text"tf.Text = "Number Of Records: "tf.Left = 0tf.Top = 500tf.Width = C1FlexReport1.Layout.Width - f1.Widthtf.Height = 400tf.Align = FieldAlignEnum.LeftMiddletf.Font.Bold = Truetf.Font.Size = 10tf.BackColor = Color.Transparenttf.BackColor = Color.Yellowtf.MarginLeft = 100tf.Visible = Trues.Fields.Add(tf)

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;

Visual Basic

C#

  FlexReport for WinForms

59 Copyright © GrapeCity, Inc. All rights reserved.         

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 でレポートをグループ化]チェックボックスをクリックして、レポートにグループを表示します。各グループのレコー

ド数が計算されることを確認します。

FlexReport for WinForms  

60 Copyright © GrapeCity, Inc. All rights reserved.         

クロス集計レポートの作成クロス集計レポートの作成

クロス集計レポートは、データを 2 次元(下方向と横方向)にグループ化します。クロス集計レポートは、情報を相互参照する形式で

大量のデータをまとめる場合に便利です。

次の手順に従って、「FlexReport クイックスタート」で作成したレポートにクロス集計レポートを作成します。

1. FlexReport クイックスタートプロジェクトの Form に、Button を追加します。

2. ボタンの Name を「crossC1Button」に、Text を「View Cross Tab-Report」に設定します。

3. Click イベントを crossC1Button_Click という名前で作成します。

4. 次のコードを記述します。

Private grp2 As GroupPrivate 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

Visual Basic

  FlexReport for WinForms

61 Copyright © GrapeCity, Inc. All rights reserved.         

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

FlexReport for WinForms  

62 Copyright © GrapeCity, Inc. All rights reserved.         

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

  FlexReport for WinForms

63 Copyright © GrapeCity, Inc. All rights reserved.         

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

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;

C#

FlexReport for WinForms  

64 Copyright © GrapeCity, Inc. All rights reserved.         

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";

  FlexReport for WinForms

65 Copyright © GrapeCity, Inc. All rights reserved.         

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 か国の従業員

の役職の内訳が表示されることを確認します。

FlexReport for WinForms  

66 Copyright © GrapeCity, Inc. All rights reserved.         

データのソートデータのソート

ソートは、データを昇順または降順に整理する方法です。

FlexReport でソートを実行するには、DataSource.SortDefinitions を使用します。

たとえば、従業員の名前のリストを昇順に表示することにします。この場合は、リストを「名(First Name)」でソートする必要がありま

す。以下の手順は、従業員リストの名前をアルファベット順にソートする方法を示します。この例では、「FlexReport クイックスタート」

で作成したサンプルを使用します。

1. FlexReport クイックスタートプロジェクトのフォームに、C1Button を追加します。

2. C1Button の Name を「sortC1Button」に設定し、Text を「Sort Report by Employee First Name」に設定します。

3. Click イベントを sortC1Button_Click という名前で作成します。

4. 次のコードを追加します。

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

bool asc = true; private void sortC1Button_Click(object sender, EventArgs e) {

Visual Basic

C#

  FlexReport for WinForms

67 Copyright © GrapeCity, Inc. All rights reserved.         

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' に対

応する従業員詳細をフィルタ処理します。

C1FlexReport1.DataSource.Filter = "EmployeeID = 2"

c1FlexReport1.DataSource.Filter = "EmployeeID = 2";

Visual Basic

C#

FlexReport for WinForms  

68 Copyright © GrapeCity, Inc. All rights reserved.         

プロジェクトを実行します。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 をエクスポートする方法を示します。

' レポート定義をロードしますC1FlexReport1.Load(@"reportFile", "reportName")

' ビューアに表示するレポートを指定しますC1FlexViewer1.DocumentSource = C1FlexReport1

' エクスポートしますC1FlexViewer1.Export()

//レポート定義をロードしますc1FlexReport1.Load(@"reportFile", "reportName");

//ビューアに表示するレポートを指定しますc1FlexViewer1.DocumentSource = c1FlexReport1;

//エクスポートしますc1FlexViewer1.Export();

FlexReport を使用したを使用した PDF へのエクスポートへのエクスポート

次のコードは、PdfFilter クラス を使用して、FlexReport をPDFへエクスポートする方法を示します。同様に、レポートを上記の

形式へエクスポートすることもできます。

Visual Basic

C#

Visual Basic

  FlexReport for WinForms

69 Copyright © GrapeCity, Inc. All rights reserved.         

' レポートオブジェクトを作成します 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)

//レポートオブジェクトを作成します 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);

C#

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 を押します。エディタを閉じ

FlexReport for WinForms  

70 Copyright © GrapeCity, Inc. All rights reserved.         

て変更を保存するには、ショートカット 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()' が定義されます。

  FlexReport for WinForms

71 Copyright © GrapeCity, Inc. All rights reserved.         

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 つの式の論理和を実行します。

FlexReport for WinForms  

72 Copyright © GrapeCity, Inc. All rights reserved.         

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

演算子演算子 説明説明

  FlexReport for WinForms

73 Copyright © GrapeCity, Inc. All rights reserved.         

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 関数の例を次にい

くつか示します。

キーワードキーワード 説明説明

FlexReport for WinForms  

74 Copyright © GrapeCity, Inc. All rights reserved.         

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 関数がサポートされていませんサポートされていません。

ArraysSelect/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 = 14MyField * 2 ' (MyField.Value * 2 と同じ)

メモ:メモ: レポートフィールドにデータベースフィールドと同じ名前を付けると、そのレポートフィールドにアクセスできなくなり

ます。

レポートのセクション名レポートのセクション名

Section オブジェクトの名前は、評価されると、オブジェクトの参照を返します。これにより、セクションのプロパティにアクセスで

きます。Section オブジェクトのデフォルトのプロパティは Name です。次に例を示します。

If Page = 1 Then [Page Footer].Visible = False

データベースフィールド名データベースフィールド名

レポートのデータセットソース内のフィールド名は、評価されると、現在のフィールドの値を返します。フィールド名にスペースま

たはピリオドが含まれる場合は、フィールド名を角かっこで囲む必要があります。次に例を示します。

  FlexReport for WinForms

75 Copyright © GrapeCity, Inc. All rights reserved.         

OrderIDUnitsInStock[Customer.FirstName][Name With Spaces]

レポート変数レポート変数

Page

Page 変数は、Page プロパティの値を取得または設定します。このプロパティは、レポートのレンダリングの開始時にコント

ロールによって初期化され、ページ区切りごとに 1 ずつ増加します。コードを使用してこの値をリセットできます。次に例を示し

ます。

If Country <> LastCountry Then Page = 1LastCountry = Country

Pages

Pages 変数は、レポートのレンダリングの終了時に総ページ数に置き換えられるトークンを返します。読み取り専用のプロパ

ティで、通常は、ページのヘッダーフィールドまたはフッターフィールドで使用されます。次に例を示します。"ページ " & Page & " / " & Pages

レポートオブジェクトレポートオブジェクト

レポートオブジェクトは、コントロールオブジェクトへの参照を返します。これにより、スクリプトや式から C1FlexReport オブジェ

クトモデル全体にアクセスできます。次に例を示します。

"フィールド:" & Report.Fields.Count

Cancel

Cancel を True に設定すると、レポートのレンダリング処理をキャンセルできます。次に例を示します。

If Page > 100 Then Cancel = true

互換性のための関数:互換性のための関数:Iif およびおよび FormatVisual 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"

FlexReport for WinForms  

76 Copyright © GrapeCity, Inc. All rights reserved.         

Format(-1234, "#.00") = "(1234.12)"Format(.1234, "#.##") = ".12"Format(.1234, "0.##") = "0.12"Format(.3, "#.##%") = "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"

String @@-@@/@@ マスクを使用して文字列を書式設定します。@ 文字は、1 文字(@ が 1 つだ

けの場合は、値文字列全体)のプレースホルダです。その他の文字はリテラ

ルとして扱われます。例:Format("AC55512", "@@-@@@/@@") ="AC-555/12"Format("AC55512", "@") = "AC55512"

@;Missing 値が null または空文字列ではない場合は、セミコロン(;)の左側の書式文字

列を使用します。null または空文字列の場合は、セミコロン(;)の右側の部分

を返します。例:Format("@;Missing", "UK") = "UK"Format("@;Missing", "") = "Missing"

VBScript には、独自の組み込み書式設定関数(FormatNumber、FormatCurrency、FormatPercent、FormatDateTimeなど)があります。ここで説明した VBA スタイルの Format 関数の代わりに、これらの関数を使用することもできます。

値の型値の型 書式文字列書式文字列 説明説明

集計関数集計関数

集計関数は、レンダリングされるグループのデータをまとめるために使用されます。レポートヘッダーフィールドで使用すされた

集計関数は、データセット全体の集計値を返します。グループのヘッダーまたはフッターで使用された集計関数は、そのグ

ループの集計値を返します。

FlexReport の集計関数はすべて、次の 2 つの引数を受け取ります。

グループ全体で集計される VBScript 式を含む文字列。

フィルタ(ドメイン集計)として使用される VBScript 式を含む文字列(オプション)。フィルタ式は、各値が集計される前に

評価されます。フィルタが False を返すと、その値はスキップされて、集計結果に含まれません。

FlexReport では、次の集計関数が定義されています。

関数関数 説明説明

Avg 現在のグループ内の式の平均値。たとえば、次の式は、グループ全

体の平均売上高と特定の製品の平均売上高を計算しま

す。Avg(SalesAmount)Avg(SalesAmount, ProductType = 3)

Sum グループ内のすべての値の合計。

  FlexReport for WinForms

77 Copyright © GrapeCity, Inc. All rights reserved.         

Count グループ内で null 以外の値を持つレコードの数。式にアスタリスク

(*)を使用すると、すべてのレコードを数えることができます。たとえ

ば、次の式は、住所の値が有効な(null ではない)従業員の数と従

業員の総数をカウントします。Count(Employees.Address)Count(*)

CountDistinct グループ内で null 以外の値を持つレコードの数(重複する値は数

えない)。

Min、Max 式の最小値および最大値。例:"Max Sale = " &Max(SaleAmount)

Range 式の最小値と最大値の範囲。

StDev、Var 現在のグループ内の式の標準偏差および分散。SQL や MicrosoftExcel と同様に、標本(n-1)の式を使用して値が計算されます。

StDevP、VarP 現在のグループ内の式の標準偏差および分散。SQL や MicrosoftExcel と同様に、母集団(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 は、集計関数

を含むレポートフィールドへの参照です。コントロールは、この式を評価する際に、レポートフィールドから直接集計値を取得し

関数関数 説明説明

FlexReport for WinForms  

78 Copyright © GrapeCity, Inc. All rights reserved.         

ます。集計の再計算は行いません。

レポートの完全なサンプルについては、ComponentOne Samples フォルダにある Nwind.xml レポート定義ファイルの

「Employee Sales by Country」レポートを参照してください。

FlexReport オブジェクトの分割の管理オブジェクトの分割の管理

レポートの作成はデータの表示方法が鍵なので、各オブジェクトをその高さと幅に応じて体裁よく表示することが重要です。

FlexReports では、セクションやサブセクションをページ間で分割するかどうかを設定できます。それには、SplitBehavior プロ

パティを SplitIfNeeded または KeepTogether に設定します。同様に、フィールドや境界線の分割を SplitHorzBehaviorプロパティと SplitVertBehavior プロパティで制御します。

次のコードは、セクションとサブセクションの SplitBehavior を設定します。

' 必要に応じてセクションを分割できるようにします C1FlexReport1.Sections.Header.SplitBehavior = SplitBehavior.SplitIfNeeded

' 必要に応じてサブセクションを分割できるようにします C1FlexReport1.Sections.Header.SubSections(0).SplitBehavior = SplitBehavior.SplitIfNeeded

// 必要に応じてセクションを分割できるようにします c1FlexReport1.Sections.Header.SplitBehavior = SplitBehavior.SplitIfNeeded;

// 必要に応じてサブセクションを分割できるようにします c1FlexReport1.Sections.Header.SubSections[0].SplitBehavior = SplitBehavior.SplitIfNeeded;

Visual Basic

C#

フィールドの変更フィールドの変更

VBScript は、計算フィールドで式を評価する場合にのみ使用できるわけではありません。レポートのレンダリング時に実行さ

れるスクリプトを指定することもできます。このようなスクリプトを使用して、レポートの書式設定を変更できます。これらのスク

リプトは、イベントプロパティに置かれます。イベントプロパティは Visual Basic のイベントハンドラに似ていますが、レポートを

表示するアプリケーションのスコープではなく、レポートのスコープ内でスクリプトが実行される点が異なります。

たとえば、イベントプロパティを使用すると、フィールドの Font プロパティや ForeColor プロパティをフィールドの値に基づい

て設定できます。この動作は、レポート自体に組み込まれ、レンダリングに使用されるアプリケーションに関係なく保持されま

す。

もちろん、従来のイベントも使用できます。従来のイベントは、レポートではなくアプリケーションに影響を及ぼす動作を実装す

るために使用します。たとえば、StartPage イベントのハンドラを記述して、レンダリングされているレポートに関係なく、アプリ

ケーションでページ数を更新できます。

次の表に、使用できるイベントプロパティと、その一般的な使用方法を示します。

  FlexReport for WinForms

79 Copyright © GrapeCity, Inc. All rights reserved.         

オブジェクトオブジェクト プロパティプロパティ 説明説明

C1FlexReport OnOpen レポートがレンダリングを開始すると実行されます。ConnectionString プロパティや

RecordSource プロパティを変更したり、VBScript の変数を初期化するために使用

できます。

OnClose レポートがレンダリングを終了すると実行されます。クリーンアップ作業を実行するた

めに使用できます。

OnNoData レポートのレンダリングが開始されたが、ソースレコードセットが空の場合に実行され

ます。Cancel プロパティを True に設定して、レポートの生成を中止できます。ダイ

アログボックスを表示して、レポートが表示されない理由をユーザーに知らせること

もできます。

OnPage 新しいページが開始されると実行されます。さまざまなフィールドのセクションの

Visible プロパティを状況に応じて設定するために使用できます。コントロールは、新

しいページが開始されるたびに自動的に 1 ずつ増える Page 変数を保持していま

す。

OnError エラーが発生すると実行されます。

Section OnFormat セクション内のフィールドが評価される前に実行されます。この時点で、ソースレコー

ドセット内のフィールドには、これからレンダリングされる値が反映されていますが、

レポートフィールドには反映されていません。

OnPrint セクション内のフィールドが印刷される前に実行されます。この時点で、フィールドの

評価は終了しており、条件付き書式設定を実行できます。

以下のトピックでは、これらのプロパティの一般的な使用例を示します。

値に応じたフィールドの書式設定値に応じたフィールドの書式設定

値に応じたフィールドの書式設定は、おそらく最も一般的な Section.OnPrint プロパティの使用方法です。製品別に注文数を

グループ化してリストするレポートを例にします。別のフィールドを使用して在庫数を表示する代わりに、追加注文レベルに満

たない製品の名前を赤色の太字で強調表示することにします。

コードを使用して、追加注文レベルに満たない製品を強調表示するにはコードを使用して、追加注文レベルに満たない製品を強調表示するには

追加注文レベルに満たない製品の名前を赤色の太字で強調表示するには、次のようなイベントスクリプトを使用します。

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

string script = "if (UnitsInStock& ReorderLevel) then\r\n" +

Visual Basic

C#

FlexReport for WinForms  

80 Copyright © GrapeCity, Inc. All rights reserved.         

"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 = TrueElse ProductNameCtl.ForeColor = RGB(0,0,0) ProductNameCtl.Font.Bold = FalseEnd If

4. [[OK]]をクリックして、エディタを閉じます。

コントロールは、このセクションを出力するたびに、この VBScript コードを実行します。スクリプトは、"ReorderLevel" データ

ベースフィールドの値を取得し、その値に基づいて、"ProductName" レポートフィールドの Field.Font.Bold プロパティと

Field.ForeColor プロパティを設定します。在庫が追加注文レベルに満たない製品は、製品名が赤色の太字になります。

次のスクリーンショットは、特別な効果が適用されたレポートのセクションです。

  FlexReport for WinForms

81 Copyright © GrapeCity, Inc. All rights reserved.         

データがないセクションの非表示データがないセクションの非表示

詳細セクションの OnFormat プロパティに式を指定することで、データに基づいてレポートフィールドの書式を変更できます。

たとえば、詳細セクションに画像コントロールを含むフィールドがあるが、レコードに画像データが存在しない場合に、そのレ

コードを非表示にできます。データ(この例では、レコードの画像)が存在しない場合に詳細セクションを非表示にするには、詳

細セクションの OnFormat プロパティに次のスクリプトを追加します。

If isnull(PictureFieldName) Then Detail.Visible = false Else Detail.Visible = trueEnd If

コードを使用して、データが存在しないセクションを非表示にするにはコードを使用して、データが存在しないセクションを非表示にするには

データが存在しないセクション(この例では、レコードの画像)を非表示にするには、次のようなイベントスクリプトを使用しま

す。

Visual Basic

FlexReport for WinForms  

82 Copyright © GrapeCity, Inc. All rights reserved.         

C1FlexReport1.Sections.Detail.OnFormat = "Detail.Visible = notisnull(PictureFieldName)"

c1FlexReport1.Sections.Detail.OnFormat = "Detail.Visible = notisnull(PictureFieldName)";

FlexReportDesigner を使用して、データが存在しないセクションを非表示にを使用して、データが存在しないセクションを非表示に

するにはするには

コードを記述する代わりに、C1FlexReportDesigner を使用して、詳細セクションの OnFormat プロパティの VBScript エディ

タに、次のスクリプトコードを直接入力できます。次の手順を実行します。

1. Designer のプロパティペインのドロップダウンリストから、[詳細][詳細]を選択します。これで、セクションで使用できるプロパ

ティが表示されます。

2. Section.OnFormat プロパティの横にある空のボックスをクリックし、ドロップダウン矢印をクリックして、リストから[式[式

エディタ]エディタ]を選択します。VBScript エディタエディタウィンドウが表示されます。

3. VBScript エディタエディタで、次の作業を実行します。

ウィンドウに次のスクリプトを入力します。

If isnull(PictureFieldName) ThenDetail.Visible = falseElseDetail.Visible = trueEnd Ifまたは、簡潔なスクリプトを使用することもできます。

Detail.Visible = not isnull(PictureFieldName)

C#

値に基づいたフィールドの表示値に基づいたフィールドの表示/非表示非表示

フィールドの書式を変更してフィールドのコンテンツを強調表示する代わりに、別のフィールドの Visible プロパティを True または False に設定することで、特別な効果を生成することができます。たとえば、製品名を囲む「Shapefld」という名前の新し

い図形フィールドを挿入し、その Visible プロパティを True に設定する場合は、スクリプトを次のように記述します。

If UnitsInStock < ReorderLevel Then Shapefld.Visible = TrueElseShapefld.Visible = FalseEnd If

コードを使用して、追加注文レベルに満たない製品を強調表示するにはコードを使用して、追加注文レベルに満たない製品を強調表示するには

追加注文レベルに満たない製品にボックスを表示して強調表示するには、次のようなイベントスクリプトを使用します。

Dim script As String = _ "If UnitsInStock < ReorderLevel Then" & vbCrLf & _ " BoxCtl.Visible = True" & vbCrLf & _

Visual Basic

  FlexReport for WinForms

83 Copyright © GrapeCity, Inc. All rights reserved.         

"Else" & vbCrLf & _ " BoxCtl.Visible = False" & vbCrLf & _ "End If" C1FlexReport1.Sections.Detail.OnPrint = script

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 = TrueElseShapefld.Visible = False End If

次のスクリーンショットは、特別な効果が適用されたレポートのセクションです。

C#

FlexReport for WinForms  

84 Copyright © GrapeCity, Inc. All rights reserved.         

ページカウンタのリセットページカウンタのリセット

C1FlexReport.Page 変数は、コントロールによって作成されて自動的に更新されます。ページのヘッダーまたはフッターに

ページ数を追加する場合に便利です。新しいグループの先頭で、ページカウンタをリセットするとよい場合があります。たとえ

ば、レコードを国別にグループ化しているレポートがあるとします。コードを追加するか、デザイナを使用して、ページカウンタを

リセットできます。

コードを使用する場合コードを使用する場合

新しいグループ(新しい国など)の先頭でページカウンタをリセットするには、PageFooter フィールドの Text プロパティを設定

します。次のコードを入力します。

C1FlexReport1.Fields("PageFooter").Text = "[ShipCountry] & "" "" & [Page]"

Visual Basic

C#

  FlexReport for WinForms

85 Copyright © GrapeCity, Inc. All rights reserved.         

c1FlexReport1.Fields["PageFooter"].Text = "[ShipCountry] + [Page]";

FlexReportDesigner を使用する場合を使用する場合

新しいグループ(新しい国など)の先頭でページカウンタをリセットするには、次の手順に従って、PageFooter フィールドの

Text プロパティを設定します。

1. PageFooter のページ番号フィールドをデザイナのプロパティペインのドロップダウンリストから選択するか、設計ペイン

で選択します。これで、このフィールドのプロパティが表示されます。

2. Text プロパティの横にあるボックスをクリックし、ドロップダウン矢印をクリックして、リストから[式エディタ][式エディタ]を選択しま

す。VBScript エディタエディタウィンドウが表示されます。

3. VBScript エディタエディタで、次のスクリプトを入力します。

="Page " & GroupPage(0) & " of " & GroupPages(0) & " for " & Country4. [[OK]]をクリックして、エディタを閉じます。

C#

サブセクションの追加サブセクションの追加

サブセクションは、レポートの任意のセクションに挿入できる追加セクションです。「FlexReport のセクション」で説明するよう

に、通常、FlexReport には、詳細、ヘッダー、フッター、ページヘッダー、ページフッター、グループヘッダー、およびグループ

フッターセクションが含まれます。

これらのセクションには、それぞれ少なくとも 1 つのサブセクションが含まれますが、1 つのセクションに必要な数だけサブセク

ションを追加できます。

レポートのヘッダーセクションに 1 つのサブセクションを追加するには、次のコードを使用します。

'ヘッダーセクションに 1 つのサブセクションを作成します Dim ss As SubSection = C1FlexReport1.Sections.Header.SubSections.Add() '高さを 10 mm に設定します ss.Height = 10 * 1440 / 25.4

//ヘッダーセクションに 1 つのサブセクションを作成します SubSection ss = rep.Sections.Header.SubSections.Add();// 高さを 10 mm に設定します ss.Height = 10 * 1440 / 25.4;

Visual Basic

C#

FlexReport for WinForms  

86 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReportDesigner の操作の操作

FlexReportDesigner は、FlexReport を設計するためのスタンドアロンアプリケーションです。Microsoft Access のレポートデ

ザイナに似ています。このデザイナのデフォルトの場所は C:\Program Files(x86)\ComponentOne\Apps\v4\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

このディレクトリはデフォルトのインストールパスに基づいていますが、インストールパスを変更した場合は、パスが異なる場合

があります。

FlexCommonTasks.flxr ファイルを開いたときに表示されるデザイナを次に示します。

  FlexReport for WinForms

87 Copyright © GrapeCity, Inc. All rights reserved.         

Designer のメインウィンドウには、次のコンポーネントがあります。

[ファイル]メニュー[ファイル]メニュー:レポート定義ファイルを処理(ロード、保存、インポート、エクスポートなど)するための

情報が含まれます。

[ホーム]、[挿入]、[調整]、[ページ設定]の各タブ[ホーム]、[挿入]、[調整]、[ページ設定]の各タブ:レポート定義に関連するすべての機能(編集、書式設

定、フィールド/セクションの挿入、配置/サイズ設定、ページレイアウト、プリンタ設定など)を提供します。

設計モード設計モード:[編集]、[テキスト]、[データ]などのメニュー機能へのショートカットを提供します。デフォルトで

は、[ホーム]、[挿入]、[調整]、および[ページ設定]タブで構成される設計モードが選択されます。

プレビューモードプレビューモード:レポートのプレビューを提供します。詳細については、「プレビューモード」を参照してくだ

さい。

[レポート]タブ[レポート]タブ:現在のレポート定義ファイルに含まれるすべてのレポートを一覧します。レポート名をダブ

ルクリックして、レポートをプレビューまたは編集できます。このリストを使用してレポートを名前変更、コ

ピー、削除することもできます。

[データ]タブ[データ]タブ:現在のレポート内のすべてのデータソースおよびパラメータを一覧します。このタブで、データ

ソースやパラメータの追加や編集を行うことができます。

[プロパティ]タブ[プロパティ]タブ:デザイナで選択したオブジェクトのプロパティを編集できます。

「エラー」タブ「エラー」タブ: レポートをインポートやプレビューするときに発生するエラーと警告を表示するエラータブ。

FlexReport for WinForms  

88 Copyright © GrapeCity, Inc. All rights reserved.         

ステータスバーステータスバー:デザイナで現在実行中の作業に関する情報が表示されます。フィールドが選択されている

場合、ステータスバーには、選択されているフィールドの名前、タイプ、およびデータ連結フィールド(計算

フィールド)/静的フィールドの別が表示されます。セクションが選択されている場合、ステータスバーには、

セクション名、セクションタイプ、およびセクションの表示状態(非表示かどうか)が表示されます。ロード、保

存、印刷、レンダリング、インポートなどの処理も表示されます。ステータスバーの右にあるズームスライダ

をドラッグして、選択したレポートをズームアウト/ズームインすることができます。

折りたたみ折りたたみ/展開グリフ展開グリフ:各セクションで、展開グリフ( )または折りたたみグリフ( )をクリックすることで、

セクション内に含まれているサブセクションを展開または折りたたむことができます。

データベースアイコンデータベースアイコン:フィールドの右上隅にデータベースアイコンが表示されている場合は、フィールドが

データソースに連結されている(計算フィールド)ことを示します。データベースアイコンが表示されていない

フィールドは、静的フィールドです。

スナップラインスナップライン:フィールドの配置に役立ちます。フィールドのサイズが拡大または縮小されると、垂直およ

び水平方向のスナップラインが表示され、フィールドを相互に相対的に配置するために役立ちます。

サブセクションサブセクション:サブセクションは、セクション内に含まれるセクションです。サブセクションは、デフォルトで

は、セクションの下部に表示され、「/<B>」、「/<C>」のように自動的に名前が付けられます。

ヘルプボタンヘルプボタン:オンラインヘルプファイルを開いたり、アプリケーションに関する情報を表示するバージョン情バージョン情

報報画面を表示するオプションを提供します。

以下のトピックでは、C1FlexReportDesigner アプリケーションを使用してレポート定義ファイルを作成、編集、使用、および保

存する方法について説明します。

[ファイル]メニュー[ファイル]メニュー

[ファイル][ファイル]メニューは、レポート定義ファイルのロードと保存、およびレポート定義のインポートとエクスポートを行うための

ショートカットを提供します。[ファイル][ファイル]メニューから、C1FlexReportDesigner アプリケーションのオプションにもアクセスでき

ます。

次の図に、[ファイル][ファイル]メニューを示します。

  FlexReport for WinForms

89 Copyright © GrapeCity, Inc. All rights reserved.         

メニューには、次のオプションがあります。

新規作成新規作成:新しいレポート定義ファイルを作成します。

開く開く:[レポート定義ファイルを開く][レポート定義ファイルを開く]ダイアログボックスを表示します。ここで、既存のファイルを選択して開くことができ

ます。

閉じる閉じる:現在のレポート定義ファイルを閉じます。

保存保存:以前に保存した場所に、レポート定義ファイルを保存します。

名前を付けて保存名前を付けて保存:[レポート定義の保存][レポート定義の保存]ダイアログボックスを開きます。ここで、レポート定義を .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 アプリケーションを閉じます。

設計モード設計モード

設計設計モードでは、選択したレポートのセクションとフィールドが表示されます。これは、デザイナがレポートを作成または修正す

るための主要な作業領域です。設計設計モードは、以下のタブで構成されています。

FlexReport for WinForms  

90 Copyright © GrapeCity, Inc. All rights reserved.         

[ホーム]タブ[ホーム]タブ:[編集]、[テキスト]、[境界線]、[書式]、[データ]、[表示]の各メニュー機能へのショートカットを提供し

ます。詳細については、「[ホーム]タブ」を参照してください。

[挿入]タブ[挿入]タブ:矢印、計算、グラフなどのさまざまなフィールドへのショートカットを提供します。詳細については、「[挿入]

タブ」を参照してください。

[調整]タブ[調整]タブ:[グリッド]、[配置]、[位置]、[サイズ]の各メニュー機能へのショートカットを提供します。詳細について

は、「[調整]タブ」を参照してください。

[ページ設定]タブ[ページ設定]タブ:[ページレイアウト]メニュー機能へのショートカットを提供します。詳細については、「[ページ設定]

タブ」を参照してください。

[ホーム]タブ[ホーム]タブ

[ホーム]タブ[ホーム]タブは、以下のグループに分けられるいくつかのメニューで構成されています。

[編集]グループ[編集]グループ:次のオプションがあります。

貼り付け貼り付け:最後にコピーされた項目を貼り付けます。

切り取り切り取り:選択項目を切り取り、レポートから除去して、任意の場所に貼り付けることができるようにします。

コピーコピー:選択項目をコピーして、任意の場所に貼り付けることができるようにします。

削除削除:選択項目を削除します。

元に戻す元に戻す:レポート定義に対して行われた最後の変更を元に戻します。

やり直しやり直し:レポート定義に対して行われた最後の変更をやり直します。

[テキスト]グループ[テキスト]グループ:次のオプションがあります。

フォントフォント:選択したテキストの現在のフォントが表示され、選択項目に対して別のフォントを選択できます。それには、フォント名の横のドロップ

ダウン矢印をクリックします。

フォントサイズフォントサイズ:選択したテキストの現在のフォントサイズが表示され、別のフォントサイズを選択できます。フォントサイズボックスに数字を入

力するか、ドロップダウン矢印をクリックしてフォントサイズを選択します。

フォントサイズを拡大フォントサイズを拡大:フォントサイズを 1 ポイント拡大します。

フォントサイズを縮小フォントサイズを縮小:フォントサイズを 1 ポイント縮小します。

太字太字:選択したテキストを太字にします(Ctrl+B キーを押すこともできます)。

斜体斜体:選択したテキストを斜体にします(Ctrl+I キーを押すこともできます)。

下線下線:選択したテキストに下線を付けます(Ctrl+U キーを押すこともできます)。

標準の配置標準の配置:自動的に、数を左詰め、他の値を右詰めに揃えます。

テキスト左揃えテキスト左揃え:テキストを左揃えします。

テキスト中央揃えテキスト中央揃え:テキストを中央揃えします。

テキスト右揃えテキスト右揃え:テキストを右揃えします。

テキスト両端揃えテキスト両端揃え:選択したテキストを両端揃えにします。

フォントの色フォントの色:選択したテキストの色を選択できます。

塗りつぶしの色塗りつぶしの色:選択したテキストの背景色を選択できます。

[境界線]グループ[境界線]グループ:次のオプションがあります。

境界線のスタイル境界線のスタイル:現在選択されているフィールドの境界線のスタイルを定義します。使用できるスタイルには、実線実線、破線破線、点線点線、1 点鎖点鎖

線線、2 点鎖線点鎖線、および透過透過があります。

境界線の色境界線の色:現在選択されているフィールドの境界線の色を定義します。

境界線の幅境界線の幅:現在選択されているフィールドの境界線の幅をツイップ単位で選択します。

[書式]グループ[書式]グループ:[書式[書式]グループには次のオプションがあります。

レポートスタイルレポートスタイル:[レポートスタイルエディタ][レポートスタイルエディタ]ダイアログボックスを開き、組み込みスタイルを選択するか、または独自のカスタムスタイルを

作成および編集できます。

書式の貼り付け書式の貼り付け:現在の選択内容にスタイルを適用します。

テーブル行テーブル行:現在の選択内容をテーブル行として書式設定します。

[書式][書式]グループの[レポートスタイル][レポートスタイル]をクリックすることで、[レポートスタイルエディタ][レポートスタイルエディタ]ダイアログボックスにアクセスできます。

  FlexReport for WinForms

91 Copyright © GrapeCity, Inc. All rights reserved.         

次の要素で構成されています。

[スタイルギャラリー]リスト[スタイルギャラリー]リスト:現在使用可能なすべての組み込みスタイルおよびカスタムスタイルが表示されます。使用可能な組み込みスタ

イルの詳細については、「スタイルギャラリー」を参照してください。

[追加]ボタン[追加]ボタン:[スタイルギャラリー]リストにカスタムスタイルを追加します。追加されるスタイルは、[追加][追加]ボタンをクリックしたときに[スタイ

ルギャラリー]リスト内で選択されているスタイルをベースとします。

[削除]ボタン[削除]ボタン:選択したカスタムスタイルを削除します。このボタンは、[スタイルギャラリー]リストでカスタムスタイルが選択されている場合

にのみ有効になります。

プロパティグリッドプロパティグリッド:プロパティの変更およびカスタムスタイルの編集を行うことができます。プロパティグリッドは、[スタイルギャラリー]リスト

でカスタムスタイルが選択されている場合にのみ使用および編集できます。

プレビューウィンドウプレビューウィンドウ:[スタイルギャラリー]リストで選択されたスタイルのプレビューを表示します。

[適用]ボタン[適用]ボタン:ダイアログボックスを閉じることなく、選択内容にスタイルを適用します。

[[OK]ボタン]ボタン:ダイアログボックスを閉じ、変更を適用し、さらにそのスタイルを現在選択されているスタイルに設定します。

[キャンセル]ボタン[キャンセル]ボタン:スタイルに対して行ったすべての変更をキャンセルします。

[データ]グループ[データ]グループ:次のオプションがあります。

データソースデータソース:このボタンをクリックすると、[メイン]と[データソースの追加]という 2 つのオプションが下にリストされます。

[メイン]オプションを使用すると、レポートの連結先であるメインデータソースを編集または削除できます。[編集][編集]または[データソースの追[データソースの追

加]加]をクリックすると、[データソース][データソース]ダイアログボックスが表示されます。このダイアログボックスで、新しいデータソースの選択、接続文字列

の変更、および SQL 文の編集を行うことができます。[データソース][データソース]オプションの横にあるドロップダウンをクリックすると、レポートに存在す

るデータソースのリストが表示されます。 [データソース][データソース]タブから、現在のデータソース内のテーブル、ビュー、ストアドプロシージャを選択で

きます。[[SQL 文]文]タブをクリックすると、現在の SQL 文が表示されます。

FlexReport for WinForms  

92 Copyright © GrapeCity, Inc. All rights reserved.         

接続文字列を変更するには、省略符ボタンをクリックします。[データリンクプロパティ][データリンクプロパティ]ダイアログボックスが開きます。SQL 文を編集または

変更するには、[クエリービルダ][クエリービルダ]ボタンをクリックします。これにより、[[SQL ビルダ]ビルダ]ダイアログボックスが開きます。

グループグループ :このボタンをクリックすると[グループ][グループ]ダイアログボックスが表示され、ここで、グループ化およびソートの基準を追加および

削除できます。詳細については、「データのグループ化」と「データのソート」を参照してください。

レポート情報レポート情報 :[レポート情報][レポート情報]ダイアログボックスが開きます。このダイアログボックスで、レポートのタイトル、作成者、サブタイトル、作

成元アプリケーション、およびキーワードを設定できます。このレポート情報をすべてのレポートに適用するように選択することもできます。

  FlexReport for WinForms

93 Copyright © GrapeCity, Inc. All rights reserved.         

VBScript エディタエディタ:[[VBScript エディタエディタ - Report.GlobalScripts]]ダイアログボックスを開きます。VBScript エディタエディタでは、ステートメントや

式を切り替えながら、複数のスクリプトを簡単に編集できます。

[表示]グループ[表示]グループ:次のオプションがあります。

プロパティプロパティ:[プロパティ][プロパティ]タブを左ペインに表示します。[プロパティ][プロパティ]タブを表示するためのショートカットキーは、[F4]です。

データデータ:[データ][データ]タブを左ペインに表示します。[データ][データ]タブを表示するためのショートカットキーは、[Shift]+[F4]です。

エラーリスト:エラーリスト:レポートをインポートやプレビューする時に発生する警告およびエラーのリストを表示します。

キャプションキャプション:デザイナパネルでセクションまたはサブセクションのキャプションを表示する方法を選択できます。選択できるオプションは、[す[す

べて]べて](すべてにストリップを表示)、[セクション][セクション](セクションにはストリップを表示し、サブセクションには表示しない)、[極細][極細](セクションの

ヘッダーストリップを表示しない)、[非表示][非表示]、[すべて展開][すべて展開]、および[すべて折りたたむ][すべて折りたたむ]です。ドロップダウンには、次のオプションがありま

す。 す

ショ

FlexReport for WinForms  

94 Copyright © GrapeCity, Inc. All rights reserved.         

ズームズーム:レポートのズームレベルを設定する値を選択できます。[Ctrl]+[+]キーまたは[Ctrl]+[-]キーを押して、デザイナパネルをズームイ

ンまたはズームアウトすることもできます。

[挿入]タブ[挿入]タブ

[挿入][挿入]タブは、レポートの設計時に挿入できる複数のフィールドで構成されています。各フィールドボタンをクリックすると、1 つのフィールドが作成され、そのプロパティが初期化されます。[挿入][挿入]タブは、次の 3 つのグループで構成されています。

[フィールド][フィールド]グループグループ:次の項目があります。

矢印矢印:十字マウスカーソルを矢印カーソルに戻します。

テキストテキスト:ソースレコードセットに連結されたフィールド、または連結されていない(静的)テキストラベルを作成します。こ

のボタンをクリックするとリストが表示され、レコードセットフィールドを選択できます。連結フィールドは、データベースか

ら取得した生データを表示するだけではありません。フィールドの Text プロパティを編集し、任意の VBScript 式を使

用できます。

RTF:RTF フィールドを作成します。このボタンをクリックするとリストが表示されます。そこから、同じレポート定義ファイ

ルに含まれる他のフィールドを選択して RTF 形式で表示できます。

段落:段落: 段落 フィールドを作成します。詳細については、「段落フィールド」を参照してください。

チェックボックスチェックボックス:Boolean 値をチェックボックスとして表示する連結フィールドを作成します。デフォルトでは、チェック

ボックスには通常のチェックマークが表示されます。フィールドを作成した後に、CheckMark.Style プロパティを変更す

  FlexReport for WinForms

95 Copyright © GrapeCity, Inc. All rights reserved.         

ることで、これをラジオボタンまたは十字マーカーに変更できます。

バーコードバーコード:バーコードを表示するフィールドを作成します。このボタンをクリックするとメニューが表示されます。そこか

ら、同じレポート定義ファイルに含まれる他のフィールドを選択してバーコードとして表示できます。詳細については、

「バーコードフィールド」を参照してください。

計算計算:計算フィールドを作成します。このボタンをクリックすると、コードエディタダイアログボックスが表示されます。そこ

で、値を評価するために使用する VBScript 式または任意の式を入力できます。このドロップダウンをクリックすると、レ

ポートの作成または印刷日時、ページ番号、ページ数、"ページ n/m"、レポート名などをレンダリングするためによく使

用される式を選択できます。

画像画像:レコードセットに格納されているデータ連結画像用のフィールドまたは静的(非連結)画像用のフィールドを作成し

ます。このボタンをクリックすると、[開く]ダイアログボックスが表示され、ロゴなどの静的(非連結)画像を選択できま

す。ドロップダウンをクリックすると、ソースレコードセット内の画像フィールドを選択できます(存在する場合。すべての

レコードセットにこのタイプのフィールドが存在するわけではありません)。

図形図形:直線、二等辺三角形、直角三角形、四角形、楕円、円弧などの幾何学図形を作成します。これらの図形を使用し

て、レポートの外観を強化できます。

サブレポートサブレポート:別のレポートを表示するフィールドを作成します。このボタンをクリックするとリストが表示され、そこから、

同じレポート定義ファイルに含まれる他のレポートを選択できます。

FlexChart:FlexChart を表示するフィールドを作成します。詳細については、「FlexChart フィールド」を参照してくださ

い。

グラフグラフ:チャートを表示するフィールドを作成します。詳細については、「チャートフィールド」を参照してください。

メモ:メモ: デフォルトでは、チャートフィールドは[挿入]タブに表示されず、レガシーチャートフィールドとして使用でき

ます。

[サブセクション][サブセクション]グループグループ:次の項目で構成されます。

追加追加:現在のセクションの下部にサブセクションを追加します。

削除削除:現在選択されているサブセクションを削除します。

上に移動上に移動:現在選択されているサブセクションを 1 つ上に移動します。

下に移動下に移動:現在選択されているサブセクションを 1 つ下に移動します。

[カスタムフィールド][カスタムフィールド]グループグループ:次の項目で構成されます。

SuperLabel フィールドフィールド:HTML 書式設定テキストをレンダリングするフィールドを作成します。フィールドのテキストプロ

パティには、レンダリングする任意の HTML テキストを設定します。

Map フィールドフィールド:地球上の領域を表示するフィールド(マップ)を作成します。詳細については、「レポート内のマップ」を

参照してください。

レポートへのフィールドの追加方法については、「FlexReport フィールドの追加」と「FlexReport カスタムフィールドの追加」を

参照してください。

[調整]タブ[調整]タブ

[調整][調整]タブには、グリッド、配置、位置、およびサイズへのショートカットがあります。次のグループで構成されます。

[グリッド]グループ[グリッド]グループ:[グリッド[グリッド]グループには次の項目があります。

グリッドにスナップグリッドにスナップ:フィールドをグリッドにスナップします。この項目が選択されている場合は、フィールドをグリッドの線

と線の間に配置することはできません。

グリッドの表示グリッドの表示:プレビューで、レポートの背景にグリッドを表示します。グリッドは、フィールドの配置と整列に役立ちま

す。デフォルトでは、このオプションが選択されています。

フィールドのロックフィールドのロック:レポート内のフィールドをロックおよびロック解除します。 目的の位置にフィールドを配置した後、そ

FlexReport for WinForms  

96 Copyright © GrapeCity, Inc. All rights reserved.         

れらのフィールドをロックして、マウスやキーボードでフィールドを不用意に移動することを防止できます。

グリッドのプロパティグリッドのプロパティ:[[FlexReportDesigner オプション]オプション]ダイアログボックスが表示されます。詳細については、

「FlexReportDesigner オプションの設定」を参照してください。

[配置]グループ[配置]グループ:[配置[配置]グループには次の項目があります。

左左:選択したフィールドを、水平方向の左に配置します。

右右:選択したフィールドを、水平方向の右に配置します。

中央中央:選択したフィールドを、水平方向の中央に配置します。 上上:選択したフィールドを、垂直方向の上に配置します。

下下:選択したフィールドを、垂直方向の下に配置します。

上下中央上下中央:選択したフィールドを、垂直方向の中央に配置します。

レポート内の要素は、水平方向と垂直方向の両方に合わせて配置することができます。たとえば、要素を左と上の両方に合

わせて配置できます。

[位置]グループ[位置]グループ:[位置][位置]グループは、要素間の間隔、および要素を階層化する方法を制御します。次の項目で構成されま

す。

左右間隔均等左右間隔均等:選択したフィールド間の左右間隔を均等化します。

左右間隔拡大左右間隔拡大:選択したフィールド間の左右間隔を拡大します。

左右間隔縮小左右間隔縮小:選択したフィールド間の左右間隔を縮小します。 上下間隔均等上下間隔均等:選択したフィールド間の上下間隔を均等化します。

上下間隔拡大上下間隔拡大:選択したフィールド間の上下間隔を拡大します。

上下間隔縮小上下間隔縮小:選択したフィールド間の上下間隔を縮小します。

グリッドにスナップグリッドにスナップ:現在選択されているフィールドを最も近いグリッド線にスナップします。

最前面に移動最前面に移動:選択したフィールドを、階層化されたすべてのフィールドの前面に配置します。

最背面に移動最背面に移動:選択したフィールドを、階層化されたすべてのフィールドの背面に移動します。

[サイズ]グループ[サイズ]グループ:[サイズ[サイズ]グループには次の項目があります。

最大高さに合わせる最大高さに合わせる:選択したすべてのフィールドの高さを最も高いフィールドに合わせます。

最小高さに合わせる最小高さに合わせる:選択したすべてのフィールドの高さを最も低いフィールドに合わせます。

最大幅に合わせる最大幅に合わせる:選択したすべてのフィールドの幅を最も広いフィールドに合わせます。

最小幅に合わせる最小幅に合わせる:選択したすべてのフィールドの幅を最も狭いフィールドに合わせます。

グリッドのサイズに合わせるグリッドのサイズに合わせる:選択したフィールドの境界を最も近いグリッド線にスナップします。

[ページ設定]タブ[ページ設定]タブ

[ページ設定][ページ設定]タブは、[ページレイアウト]メニュー機能へのショートカットを提供します。次のオプションがあります。

縦縦:レポートのレイアウトを縦縦表示に変更します(この場合、高さが幅より長くなります)。

横横:レポートのレイアウトを横横表示に変更します(この場合、高さが幅より短くなります)。

ページ設定ページ設定:プリンタの[ページ設定][ページ設定]ダイアログボックスを開きます。

プレビューモードプレビューモード

  FlexReport for WinForms

97 Copyright © GrapeCity, Inc. All rights reserved.         

プレビュープレビューモードは、現在のレポートのプレビューを表示します。プレビュープレビューモードは、以下の項目で構成されています。

[ページレイアウト]グループ[ページレイアウト]グループ:次のオプションがあります。

縦縦:レポートのレイアウトを縦縦表示に変更します(この場合、高さが幅より長くなります)。

横横:レポートのレイアウトを横横表示に変更します(この場合、高さが幅より短くなります)。

ページ設定ページ設定:プリンタの[ページ設定][ページ設定]ダイアログボックスを開きます。

[表示]グループ[表示]グループ:次のオプションがあります。

ページ区切り付きページ区切り付き :レポートのページ区切り付き表示とページ区切りなし表示を切り替えます。

パラメータパラメータ :レポートのパラメータパネルを表示または非表示にします。レポートにパラメータが含まれている場合にの

み有効です。

アウトラインアウトライン:ドキュメントのテキストのアウトラインを表示します。

サムネイル:サムネイル: 標準ビューとサムネイルビューを切り替えます。

1 ページページ:一度に 1 ページをプレビューできます。

2 ページページ:一度に 2 ページをプレビューできます。 ズームズーム:特定のパーセントに、またはウィンドウに合わせてページをズームします。ズームインのショートカットキーは

[Ctrl]+[+]、ズームアウトのショートカットキーは[Ctrl]+[-]です。

[ナビゲーション]グループ[ナビゲーション]グループ:次のオプションがあります。

最初のページ最初のページ:プレビューの最初のページに移動します。

前のページ前のページ:プレビューの前のページに移動します。

[ページ][ページ]:このテキストボックスに数字を入力すると、プレビューがそのページに移動します。

次のページ次のページ:プレビューの次のページに移動します。

最後のページ最後のページ:プレビューの最後のページに移動します。

前のビュー前のビュー:前に表示されたページに戻ります。

次のビュー次のビュー:次に表示されたページに移動します。これは、[前のビュー][前のビュー]ボタンをクリックした後にのみ表示されます。

[ツール]グループ[ツール]グループ:次のオプションがあります。

ハンドツールハンドツール:ハンドツールを使用すると、ドラッグアンドドロップ操作でプレビューを移動できます。

テキスト選択ツールテキスト選択ツール:テキスト選択ツールを使用すると、ドラッグアンドドロップ操作でテキストを選択できます。次に、こ

のテキストを別のアプリケーションにコピーして貼り付けることができます。

検索検索:[検索][検索]オプションをクリックすると、[検索][検索]ペインが開き、ドキュメント内のテキストを検索できます。テキストを検

索するには、検索対象のテキストを入力し、検索オプション(ある場合)を選択して、[検索][検索]をクリックします。

[エクスポート]グループ[エクスポート]グループ:[エクスポート]グループの各項目を選択すると、[レポートをファイルにエクスポート][レポートをファイルにエクスポート]ダイアログボッ

クスが開き、エクスポートするファイルの場所を選択できます。[エクスポート][エクスポート]グループには、次のオプションがあります。

PDF:レポートを PDF ファイルにエクスポートします。ドロップダウン矢印には、フォントが埋め込まれていない(リンクさ

れている)PDF と PDF/A(埋め込みフォント)(埋め込みフォント)のオプションがあり、PDF ファイルでシステムフォントを使用するか、選択

したフォントを埋め込むかを選択できます。

HTML:レポートを HTML ファイルにエクスポートします。次に、このテキストを別のアプリケーションにコピーして貼り付

けることができます。ドロップダウン矢印には、[プレーン[プレーン HTML]]、[ページ化[ページ化 HTML]]、[ドリルダウン[ドリルダウン HTML]]、[テー[テー

ブルベースブルベース HTML]]の各オプションがあります。プレーン HTML ファイルにエクスポートするか、矢印リンクを使用して

ページ移動できる複数の HTML ファイルにエクスポートするかなどを選択できます。

Excel:レポートを Microsoft Excel ファイルにエクスポートします。ドロップダウン矢印には、[[Microsoft Excel97]]と[[Microsoft Excel 2007 - OpenXML]]の各オプションがあります。ドキュメントを XLS ファイルまたは XLSX ファ

イルのどちらで保存するかを選択できます。

RTF:レポートをリッチテキストファイル(RTF)としてエクスポートします。

FlexReport for WinForms  

98 Copyright © GrapeCity, Inc. All rights reserved.         

Word:: レポートを Open XML Word(DOCX)形式にエクスポートします。

その他その他:[その他][その他]ドロップダウン矢印をクリックすると、[TIFF](TIFF としてエクスポート)、[圧縮メタファイル](ZIP として

エクスポート)、[BMP](ビットマップ画像)、[PNG](Portable Network Graphic)、[JPEG]、[GIF]の各レポートエクス

ポートオプションが追加で表示されます。

エクスポートの詳細については、「レポートのエクスポートと公開」を参照してください。

生成生成:

[更新][更新]ボタンがあります。[更新][更新]ボタンをクリックすると、現在のレポートが再生成されます。レポートの再生成中は、このボタ

ンが[停止][停止]に変わり、レポートの再生成を停止することもできます。

FlexReportDesigner オプションの設定オプションの設定

[[FlexReportDesigner オプション]オプション]ダイアログボックスにアクセスするには、[ファイル][ファイル]メニューをクリックし、[オプション][オプション]をク

リックします。詳細については、「[ファイル]メニュー」を参照してください。

[[FlexReportDesigner オプション]オプション]ダイアログボックスには、アプリケーションの外観と動作を制御する 5 つのタブがありま

す。各タブに含まれるタブとオプションは、次のとおりです。

[全般]タブ[全般]タブ

次のオプションがあります。

プロパティグリッドを分類するプロパティグリッドを分類する:プロパティタイプによってプロパティを分類します。プロパティグリッドにアクセスするに

は、デザインビューの左ペインの下にある[プロパティ][プロパティ]タブをクリックします。

元に戻す元に戻す/やり直しを有効にするやり直しを有効にする:アプリケーションの「元に戻す」操作と「やり直し」操作を有効にします。

フィールドプロパティをフィルタ処理するフィールドプロパティをフィルタ処理する:設定されているプロパティに基づいてプロパティグリッドをフィルタ処理しま

す。プロパティグリッドにアクセスするには、デザインビューの左ペインの下にある[プロパティ][プロパティ]タブをクリックします。

レポートリストをソートするレポートリストをソートする:[レポート][レポート]タブにリストされるレポートリストをソートします。レポートにアクセスするには、デ

ザインビューの左ペインの下にある[レポート][レポート]タブをクリックします。

  FlexReport for WinForms

99 Copyright © GrapeCity, Inc. All rights reserved.         

デザイナテーマデザイナテーマ:[組み込み][組み込み]または[テーマフォルダ][テーマフォルダ]内のオプションからテーマを設定します。

[設計ペイン]タブ[設計ペイン]タブ

次のオプションがあります。

グリッドの表示グリッドの表示:レポートプレビューウィンドウにグリッドを表示します。

グリッドにスナップグリッドにスナップ:レポートのグリッドにすべてのオブジェクトをスナップします。このオプションを選択すると、グリッド

線とグリッド線の間にはオブジェクトを配置できなくなります。

サブレポートコンテンツの表示サブレポートコンテンツの表示:レポートにサブレポートのコンテンツを表示します。

C1FlexReport.CreationGraphics を参照グラフィックとして使ってフィールドをレンダリングすを参照グラフィックとして使ってフィールドをレンダリングす

るる:C1FlexReport.CreationGraphics を参照として使用してフィールドをレンダリングします。

グリッド単位グリッド単位:グリッドの間隔を指定します。オプションには、[自動][自動]、[インチ][インチ]、[センチメートル][センチメートル]、および[カスタム][カスタム]が

あります。

グリッド間隔グリッド間隔:グリッド線の間隔を設定します。このオプションは、[グリッド単位][グリッド単位]オプションを[カスタム][カスタム]に設定した場合

にのみ有効です。

[主グリッドの色][主グリッドの色]:主グリッド線の色を設定します。

[副グリッドの色][副グリッドの色]:副グリッド線の色を設定します。

フィールドの辺の色フィールドの辺の色:レポートのフィールドの辺の色を設定します。

[保存[保存/ロード]タブロード]タブ

FlexReport for WinForms  

100 Copyright © GrapeCity, Inc. All rights reserved.         

次のオプションがあります。

起動時に最近開いたファイルを再ロードする起動時に最近開いたファイルを再ロードする:このオプションをオンにすると、C1FlexReportDesigner アプリケーショ

ンを開くたびに、最後に開いたファイルが表示されます。

レンダリングの前に変更を保存するレンダリングの前に変更を保存する:このオプションをオンにすると、レンダリングの前にレポートが保存されます。

エクスポート時にオプションを表示するエクスポート時にオプションを表示する:このオプションをオンにすると、エクスポート時にレポートのオプションが保存さ

れます。

保存時に画像を保存時に画像を XML に埋め込むに埋め込む:このオプションをオンにすると、レポートの保存時に XML に画像が埋め込まれま

す。

デフォルトのエクスポート形式デフォルトのエクスポート形式:デフォルトのエクスポート形式を設定します。エクスポートの詳細については、「レポート

のエクスポートと公開」を参照してください。

[接続]タブ[接続]タブ

  FlexReport for WinForms

101 Copyright © GrapeCity, Inc. All rights reserved.         

トランザクション分離レベルのオプションがあります。

[スクリプトエディタ]タブ[スクリプトエディタ]タブ

FlexReport for WinForms  

102 Copyright © GrapeCity, Inc. All rights reserved.         

次のオプションがあります。

自動構文チェック自動構文チェック:[[VBScript エディタ]エディタ]ダイアログボックスで構文を自動的にチェックするかどうかを指定します。

構文の色指定構文の色指定:[[VBScript エディタ]エディタ]ダイアログボックスで構文テキストを自動的に色分けするかどうかを指定します。

フォントフォント:[[VBScript エディタ]エディタ]ダイアログボックスで使用されるテキストの外観を定義します。

[警告]タブ[警告]タブ

  FlexReport for WinForms

103 Copyright © GrapeCity, Inc. All rights reserved.         

次のオプションがあります。

起動時に更新の有無を確認する起動時に更新の有無を確認する:このオプションをオンにすると、C1FlexReportDesigner アプリケーションを開いたと

きに更新の有無が確認されます。

Crystal Reports からのインポート:からのインポート:RAS API が無効な場合は警告するが無効な場合は警告する:このオプションをオンにすると、CrystalReports を C1FlexReportDesigner にインポートする際に、RAS API が無効な場合は警告されます。

上の各タブで、[OK]をクリックすると変更が保存され、[キャンセル]をクリックすると、[[FlexReportDesigner オプション]オプション]ダイ

アログボックスで行った変更がキャンセルされます。

スタイルギャラリースタイルギャラリー

[スタイルギャラリー][スタイルギャラリー]ダイアログボックスには、レポートの書式設定に使用できるすべての組み込みスタイルおよびカスタムス

タイルの詳細が表示されます。組み込みスタイルには、Vista と Office 2007 のテーマを含む、標準の Microsoft AutoFormatテーマが含まれています。[ホーム][ホーム]タブを選択し、[レポートスタイル][レポートスタイル]をクリックすることで、C1FlexReportDesigner アプリ

ケーションからスタイルギャラリースタイルギャラリーにアクセスできます。

次の組み込みスタイルがあります。

スタイル名 プレビュー

Access 2007

スタイル名 プレビュー

Oriel(スパイス)

FlexReport for WinForms  

104 Copyright © GrapeCity, Inc. All rights reserved.         

Access 2003

Apex(ひらめき)

Aspect(シック)

Civic(クール)

Concourse(ビジネ

ス)

ComponentOne

Equity(ジャパネスク)

Flow(リゾート)

Origin(アース)

Paper(ペーパー)

Solstice(フレッシュ)

Technic(テクノロ

ジー)

Trek(トラベル)

Urban(アーバン)

Verve(ネオン)

Windows Vista

スタイル名 プレビュー スタイル名 プレビュー

  FlexReport for WinForms

105 Copyright © GrapeCity, Inc. All rights reserved.         

Foundry(エコロジー)

Median(デザート)

Metro(メトロ)

Module(モジュール)

None

Northwind(ノース

ウィンド)

Office(オフィス)

Opulent(キュート)

Bold(太字)

Casual(カジュアル)

Compact(コンパク

ト)

Corporate(コーポ

レート)

Formal(フォーマル)

Soft Gray(ソフトグ

レー)

Verdana(ヴァーダ

ナ)

WebReport

スタイル名 プレビュー スタイル名 プレビュー

FlexReport for WinForms  

106 Copyright © GrapeCity, Inc. All rights reserved.         

複数のサブセクションの追加複数のサブセクションの追加

通常、FlexReport には、詳細、ヘッダー、フッター、ページヘッダー、ページフッター、グループヘッダー、グループフッターの各セクショ

ンが含まれます。これらのセクションには、それぞれ少なくとも 1 つのサブセクションが含まれます。1 つのセクションに、任意の数の

サブセクションを追加できます。

サブセクションは、親セクションに存在するデータに関する追加情報を提供する場合に便利です。他のセクションと同じ方法でデータ

フィールドを追加できます。また、サブセクションに図形フィールドを追加するだけで、レポートを見栄えよくすることができます。

複数のサブセクションを追加するには複数のサブセクションを追加するには

以下の手順では、レポートの詳細セクションに複数のサブセクションを追加します。

1. 詳細詳細セクションをクリックします。既に「Detail/ <A>」という名前のサブセクションがあることを確認します。

2. [挿入][挿入]タブに移動し、[サブセクション][サブセクション]グループから[追加][追加]をクリックします。これで、詳細セクションに 1 つのサブセクション

が追加され、自動的に「Detail/ <B>」という名前が付けられます。

3. [サブセクション]グループから[追加][追加]を再度クリックし、もう 1 つのサブセクションを追加します。これで、「Detail/ <C>」という

名前のサブセクションが追加されます。

以下の手順では、サブセクションに 1 つのフィールドを追加します。

4. [挿入][挿入]タブに移動し、[サブセクション][サブセクション]グループから図形図形フィールドをクリックします。

5. サブセクション Detail/ <B> に、図形図形フィールドをドロップします。

6. プロパティペインで、Shape プロパティを Line に設定します。選択ハンドルをドラッグして、直線の長さを調整します。

7. レポートをプレビュー表示します。

  FlexReport for WinForms

107 Copyright © GrapeCity, Inc. All rights reserved.         

詳細セクションのすべてのフィールドの後に直線が描画されます。

FlexReport フィールドの追加フィールドの追加

FlexReport では、極めて簡単にフィールドを追加できます。C1FlexReportDesigner の[挿入][挿入]タブには、利用可能なフィールド

がすべて用意されています。目的のフィールドをクリックし、それをレポートにドロップするだけです。

以下のセクションでは、さまざまなフィールドのタイプ、プロパティ、およびレポートに追加する方法について説明しています。

フィールドの追加に使用するデータベースは NWind_ja.mdb です。

FlexChart フィールドフィールド

FlexReportDesigner には、新しいフィールドタイプとして FlexChart フィールド(ベータ)が用意されています。FlexChartフィールドは、柔軟なデータ連結、複数のチャートタイプ、グループ化、データ集計をサポートし、FlexReport に簡単にデータ視

覚化機能を追加できるようにします。FlexChart の詳細については、FlexChart のドキュメントを参照してください。

FlexReport for WinForms  

108 Copyright © GrapeCity, Inc. All rights reserved.         

FlexChartフィールドとデータの連結フィールドとデータの連結

レポートに FlexChart フィールドを追加する場合、下の縦棒グラフの例に示すように、表示するチャートにデータを設定するに

は、チャートをデータに連結する必要があります。次の手順は、FlexReportDesigner アプリケーションで FlexChart フィールド

をデータに連結する方法を示します。

1. C1FlexReportDesigner で新しいレポートを作成します。

2. [データ][データ]タブで、メインデータソースを C1Nwind.mdb データベースの Products テーブルと連結します。

3. [挿入][挿入]タブで、FlexChart フィールドを選択し、それをヘッダーセクションに挿入します。

4. FlexChart を選択します。

5. プロパティウィンドウで、ChartType ドロップダウンから目的のチャートタイプ(ここでは縦棒グラフ)を設定します。

6. [Series]に移動し、その横にある省略符ボタンをクリックします。

7. 系列コレクションエディタで、[追加]ボタンをクリックして系列を追加します。

8. [Data]に移動し、DataSourceName を Main に設定します。

9. Label を ProductID に設定します。

10. XExpression を ProductID に設定します。

11. YExpression を UnitPrice に設定します。

12. エディタを閉じます。

13. [プレビュー]をクリックします。

  FlexReport for WinForms

109 Copyright © GrapeCity, Inc. All rights reserved.         

FlexChartFieldととFlexChartの違いの違い

FlexChart フィールドは、FlexChart からほとんどのプロパティを継承します。ただし、FlexChart フィールドはレポートを作成す

る場合に使用されるため、いくつかのプロパティとその特性が FlexChart とは異なります。FlexChart フィールドと FlexChart は連結のプロパティが異なり、コントロールをデータに連結する際に、この 2 つのコントロールに大きな違いが現れます。次の表

に、FlexChartField(FlexReport)と FlexChart(WinForms)のハイレベルなオブジェクトモデルの違いを示します。

FlexChartField((FlexReport)) FlexChart((WinForms))

- AccessibleDescription

- AccessibleName

- AccessibleRole

- AllowDrop

Anchor Anchor

AutoHeight -

AutoWidth AutoWidth

AxisX AxisX

AxisY AxisY

Background BackColor

- BackgroundImage

- BackgroundImageLayout

- Binding

- BindingMode

- BindingX

FlexReport for WinForms  

110 Copyright © GrapeCity, Inc. All rights reserved.         

Bookmark -

Border -

BodersPlitHorzMode -

BordersSplitVertMode -

- CausesValidation

CategoryGroups -

ChartType ChartType

- ContextMenuStrip

- Cursor

DataLabel DataLabel

- DataMember

- DataSource

- Dock

DataSourceName -

- Enabled

Font Font

Footer Footer

- ForeColor

ForcePageBreak -

- GenerateMember

Header Header

Height -

Hyperlink -

- ImeMode

Left -

Legend Legend

- LegendToggle

- Location

- Locked

- Margin

MarginBottom -

MarginLeft -

MarginRight -

MarginTop -

- MaximumSize

  FlexReport for WinForms

111 Copyright © GrapeCity, Inc. All rights reserved.         

- MinimumSize

- Modifiers

Options Options

OutlineLabel -

OutlineParent -

- Padding

Palette Palette

PlotMargin PlotMargin

PlotStyle PlotStyle

- RenderMode

RightToLeft RightToLeft

Rotated Rotated

- SelectedIndex

- SelectedMode

- SelectionStyle

Series Series

SeriesGroups -

- Size

- SmoothingMode

SplitHorzBehavior -

SplitVertBehavior -

Stacking Stacking

Tag -

- Text

- ToolTip

- ttCopy の ToolTip

Top -

Visible -

Width -

XLabelExpression -

- UseWaitCursor

- Visible

Zorder -

次の表に、系列オブジェクトの比較を示します。

FlexChartField FlexChart

FlexReport for WinForms  

112 Copyright © GrapeCity, Inc. All rights reserved.         

AltStyle AltStyle

Binding

BindingMode

BindingX

ChartType ChartType

DataMember

DataSource

DataSourceName

Hyperlink

Label

Name

Style Style

SymbolMarker SymbolMarker

SymbolSize SymbolSize

SymbolStyle SymbolStyle

Visibility Visibility

XExpression

Y1Expression

Y2Expression

Y3Expression

YExpression

FlexChart フィールドのデータオブジェクトモデルフィールドのデータオブジェクトモデル

次の表に、FlexChart フィールドのオブジェクトとその主なプロパティを一覧します。

FlexChartField

プロパティ:プロパティ: DataSourceName、DataLabel.Content

CategoryGroups

プロパティ:プロパティ: GroupExpression、SortExpression、Sort、FilterExpression、FilterOutName

FlexChartSeries

プロパティ:プロパティ: DataSourceName、XExpression、YExpression、Label

SeriesGroups

プロパティ:プロパティ: GroupExpression、SortExpression、Sort、FilterExpression、FilterOutName

サポートされているチャートタイプサポートされているチャートタイプ

  FlexReport for WinForms

113 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport の FlexChart フィールドでは、C1.Chart.ChartType プロパティを使用してチャートタイプを設定できます。面、スプ

ライン面、横棒、バブル、縦棒、散布図、折れ線、折れ線シンボル、スプライン、スプラインシンボル、ローソク足、

HiLoOpenClose、ファンネルの 13 種類のチャートタイプを使用してデータを視覚化することができます。チャートタイプ

は、C1FlexReportDesigner のプロパティウィンドウで ChartType プロパティを使用して簡単に選択できます。

面グラフ:面グラフ:面グラフは Y 軸のデータポイント間を接続し、系列と X 軸の間の領域を埋めることで、データ系列を描画します。系

列は、それぞれ前の系列の上に表示されます。

スプライン面グラフ:スプライン面グラフ:スプライン面グラフは面グラフに似ています。唯一の違いは、直線ではなくスプラインでデータポイント間を

接続し、スプラインで囲まれた領域を塗りつぶすことです。

横棒グラフ:横棒グラフ:横棒グラフは、さまざまなカテゴリの値を比較したり、データ系列内の経時的な変動を表示します。これは、データ

系列を同じ色と幅の棒形式の集合として表し、各棒の長さは値によって決定されます。このチャートは、X 軸にプロットされる

データ系列を横棒として表示し、カテゴリまたは項目を Y 軸に配置します。

FlexReport for WinForms  

114 Copyright © GrapeCity, Inc. All rights reserved.         

縦棒グラフ縦棒グラフ:縦棒グラフは、横棒グラフと同様に、データ系列の経時的な変動を表現したり、複数の項目を比較します。1 つ以

上の項目の値を縦棒として Y 軸に表示し、項目やカテゴリを X 軸に配置します。

バブルチャートバブルチャート:バブルチャートは、2 つの独立した値を組み合わせて、ポイントの y 値とサイズを示します。バブルチャート

は、各ポイントの付加的なデータ値をポイントのサイズを変えて表すために使用されます。Y 配列要素は、デカルト座標位置を

決定し(XY プロットグラフと同様)、Y1 要素値は、各ポイントのバブルのサイズを決定します。ポイントのサイズは、面積または

直径に基づいてエンコードできます。

  FlexReport for WinForms

115 Copyright © GrapeCity, Inc. All rights reserved.         

散布図散布図:散布図は、2 つの値を使用して各データポイントを表します。これは、複数のデータ系列の項目間の関係を表します。

このタイプのチャートは、予測データや結果データに含まれる集中度のばらつきを強調するために、科学的データを表現する

ためによく使用されます。

折れ線グラフ:折れ線グラフ:折れ線グラフは、系列内の異なるデータポイントを直線で接続することで、一定期間の傾向を表示します。これ

は、さまざまなデータグループ間の値の変化を最も効率よく示す方法です。

FlexReport for WinForms  

116 Copyright © GrapeCity, Inc. All rights reserved.         

折れ線シンボルグラフ:折れ線シンボルグラフ:折れ線シンボルグラフは、折れ線グラフと散布図グラフを組み合わせたグラフです。シンボルを使用し

てデータポイントをプロットし、データポイント間を線で接続します。

スプライングラフ:スプライングラフ:スプライングラフは折れ線グラフと似ていますが、直線ではなくスプラインを使用してデータポイント間を接続

する点が異なります。特に、曲線フィッティングを使用してデータを表現する際に使用されます。

  FlexReport for WinForms

117 Copyright © GrapeCity, Inc. All rights reserved.         

スプラインシンボル:スプラインシンボル:スプラインシンボルグラフは、スプライングラフと散布図を組み合わせたグラフです。シンボルを使用して

データポイントをプロットし、データポイント間をスプラインで接続します。

ファンネルグラフ:ファンネルグラフ:ファンネルグラフは、1 次元プロセスの連続的な段階を表現します。このチャートは、どの段階にどの程度の

割合で値が減少しているかが顕著にわかる場所として、プロセス内に潜在的な問題がある領域を特定します。

FlexReport for WinForms  

118 Copyright © GrapeCity, Inc. All rights reserved.         

株価チャート株価チャート:株価チャートは、指定された株の始値、終値、高値、および安値を表示するために財務アプリケーションで使用さ

れます。株価チャートには次のようなタイプがあります。

ローソク足チャート:ローソク足チャート:ローソク足チャートは、特殊な HiLoOpenClose チャートで、横棒グラフと折れ線グラフを合わせた

ような形式で経時的な値の範囲を表します。ローソクと呼ばれるビジュアル要素で構成され、ローソクは胴体、上ヒゲ、

下ヒゲの 3 つの要素から成ります。胴体は始値と終値を表現し、上ヒゲと下ヒゲはそれぞれ高値と安値を表現します。

HiLoOpenClose:: HiLoOpenClose チャートは、4 つの独立した値を組み合わせて、系列内のポイントの高値、安値、

始値、および終値を示します。株の高値および安値を表示するほか、Y2 および Y3 配列要素がそれぞれ株の始値およ

び終値を表します。

  FlexReport for WinForms

119 Copyright © GrapeCity, Inc. All rights reserved.         

グループ化と集計グループ化と集計

FlexReport では FlexChart フィールドを使用して、FlexReport 内に FlexChart をレンダリングし、その中でグループ化と集計

を実行できます。データのグループ化と集計を行うレポートを作成してみます。

次の図は、データのグループ化と集計が行われる FlexChart フィールドを含む FlexReport を示します。

FlexReport for WinForms  

120 Copyright © GrapeCity, Inc. All rights reserved.         

FlexChart 内でデータのグループ化と集計を行うレポートを作成するには、次の手順を実行します。

1. C1FlexReportDesigner アプリケーションで、Report ウィザードウィザードを使用して新しいレポートを作成します。

2. 次の SQL 文を指定して、レポートをメインメインデータソースに連結します。

SELECT Categories.*, Categories.CategoryID as CategoryID, Products.* FROMCategories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID

3. Header セクションに SubSection を追加し、それに FlexChart フィールドを追加します。

4. プロパティプロパティウィンドウで AxisX を展開し、LabelAngle プロパティの値を -10 に設定します。

5. [AxisX]→[Style]に移動し、Font プロパティを Arial, 9pt, Regular に、StrokeColor を Olive に、StrokeWidth を 30に設定します。

6. [AxisY]に移動し、Font プロパティを Arial, 9pt, Regular に、StrokeColor を Olive に、StrokeWidth を 15 に設定し

ます。

7. Border Color を Black に、Style を Solid に、Width を 10 に設定します。

8. [CategoryGroups]に移動し、その横にある省略符ボタンをクリックします。

DataGroup コレクションエディタコレクションエディタが開きます。

9. DataGroup コレクションエディタコレクションエディタで、[追加][追加]ボタンをクリックしてデータグループを追加し、その GroupExpression をCategoryID に設定します。

10. エディタを閉じます。

11. [フッター]→[コンテンツ]に移動し、それを[カテゴリ[カテゴリ/系列別グループ]系列別グループ]に設定します。

12. [ヘッダー]→[コンテンツ]に移動し、それを[カテゴリ別製品数][カテゴリ別製品数]に設定します。

13. [凡例]→[タイトル]に移動し、それを[追加注文レベル][追加注文レベル]に設定します。

14. [Series]に移動し、その横にある省略符ボタンをクリックします。

  FlexReport for WinForms

121 Copyright © GrapeCity, Inc. All rights reserved.         

15. 系列コレクションエディタ系列コレクションエディタで、[追加][追加]ボタンをクリックして系列を追加します。

16. [Data]→[YExpression]に移動し、その値を Count(*) に設定します。

Count(*) によって FlexChartField に集計データを設定しています。

17. エディタを閉じます。

18. [SeriesGroups]に移動し、その横にある省略符ボタンをクリックします。

19. データグループコレクションエディタデータグループコレクションエディタで、[追加][追加]ボタンをクリックして系列を追加し、その GroupExpression をRecordLevel に設定します。

20. エディタを閉じます。

21. [XLabelExpression]に移動し、それを CategoryName に設定します。

22. [プレビュー][プレビュー]ボタンをクリックしてプレビューモードに切り替え、レポートを表示するプレビューモードを開始します。

FlexChart ナビゲーションナビゲーション

FlexChart フィールドでは、FlexChartField または特定の Series の Hyperlink プロパティを介して、別のレポート、URL、または

スクリプトに移動できます。

ある年の年間注文合計と月間売上高を表示するとします。これらのタスクはどちらも、FlexReport で FlexChart のナビゲー

ション機能を使用して実現できます。一方のレポートのグラフでは年間注文合計を表示し、他方のレポートのグラフでは月間

売上高と共に、月ごとの注文総数と注文合計額を表示します。系列の 1 つがクリックされると、月間売上高を表示する年を渡

してグラフに移動します。

系列から他のレポートまたはレポート内のデータに移動するレポートを作成してみます。

1. C1FlexReportDesigner アプリケーションで、レポートウィザードレポートウィザードを使用して、Orders Report と Sales Report の 2つの新しいレポートを作成します。

2. 次の SQL 文を指定して、レポートをMainデータソースに連結します。

SELECT o.OrderDate, od.Quantity * od.UnitPrice AS OrderItemSum FROM Orders AS o,[Order Details] AS od WHERE o.OrderId = od.OrderId

3. レポートにパラメータ pYear を追加し、その DataType を Integer に、Prompt を Year に、Value を 2012 に設定しま

す。

4. Orders Report に 1 つの FlexChart フィールドを追加し、Sales Report に 2 つの FlexChart フィールドを追加しま

す。

5. Orders Report の FlexChart フィールドを選択します。

6. プロパティプロパティウィンドウで、[Series]に移動し、その横にある省略符ボタンをクリックします。

7. 系列コレクションエディタ系列コレクションエディタで、[追加][追加]ボタンをクリックして系列データグループを追加します。[Data]→[YExpression]に移動し、その値を Sum(OrderItemSum) に設定します。

8. [Hyperlink]→[LinkTarget]に移動し、それを Bookmark に設定します。

9. ParameterValues の横にある省略符ボタンをクリックし、pYear という名前のパラメータを追加し、それに

=Year(OrderDate) 値を設定します。ParametersValues エディタを閉じます。

10. [Hyperlink]→[Report]に移動し、Sales Report を設定します。

11. エディタを閉じます。

12. [SeriesGroups]に移動し、その横にある省略符ボタンをクリックします。

13. データグループコレクションエディタデータグループコレクションエディタで、[追加][追加]ボタンをクリックして系列を追加し、その GroupExpression をYear(OrderDate) に設定します。

14. エディタを閉じます。

15. Sales Report の最初の FlexChart フィールドを選択します。

16. プロパティプロパティウィンドウで、[Series]に移動し、その横にある省略符ボタンをクリックします。

17. 系列コレクションエディタ系列コレクションエディタで、[追加][追加]ボタンをクリックして系列を追加します。

18. [Hyperlink]→[LinkTarget]に移動し、それを Bookmark に設定します。

19. Bookmark を =Month(OrderDate) に設定します。

20. エディタを閉じます。

21. [SeriesGroups]に移動し、その横にある省略符ボタンをクリックします。

22. データグループコレクションエディタデータグループコレクションエディタで、[追加][追加]ボタンをクリックして系列を追加し、その GroupExpression をMonth(OrderDate) に設定します。

23. エディタを閉じます。

FlexReport for WinForms  

122 Copyright © GrapeCity, Inc. All rights reserved.         

24. Sales Report で 2 つ目の FlexChart を選択します。

25. プロパティプロパティウィンドウで、[Series]に移動し、その横にある省略符ボタンをクリックします。

26. 系列コレクションエディタ系列コレクションエディタで、[追加][追加]ボタンをクリックして系列データグループを追加します。[Data]→[YExpression]に移動し、その値を Sum(OrderSum) に設定します。

27. エディタを閉じます。

28. Orders Report を選択し、[プレビュー][プレビュー]ボタンをクリックしてプレビューモードに切り替え、FlexReport で FlexChart ナビゲーションがどのように機能するかを確認します。

テキストフィールドテキストフィールド

テキストテキストフィールドは、データを表示するために最もよく使用されるレポートフィールドです。以下を挿入するために使用されます。

データ連結テキストフィールド

非連結(静的)テキストラベル

FlexReportDesigner アプリケーションを使用してデータ連結テキストフィールドを追加するには

1. C1FlexReportDesigner で新しいレポートを作成します。 2. そのレポートを Products テーブルに連結します。 3. 製品のテキストフィールド CategoryName が表示されるグループヘッダーを作成します。

4. [挿入][挿入]タブに移動し、[テキスト][テキスト]フィールドアイコンをクリックします。(データソースに連結された)すべてのデータフィールドデータフィールドが

リストされます。

5. レポートのグループヘッダーセクションに CategoryName データフィールドを追加します。

  FlexReport for WinForms

123 Copyright © GrapeCity, Inc. All rights reserved.         

6. レポートをプレビュー表示します。

FlexReportDesigner を使用して非連結(静的)テキストラベルを追加するには

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. 次のようにフィールドを配置します。

FlexReport for WinForms  

124 Copyright © GrapeCity, Inc. All rights reserved.         

7. レポートをプレビュー表示します。

パラグラフフィールドパラグラフフィールド

1 つのフィールド内で複数の書式設定テキスト、データベースフィールド、スクリプト、パラメータ、計算フィールドを使用するに

は、パラグラフパラグラフフィールドの使用が最適です。編集モードのパラグラフフィールドでは、次の操作を行うことができます。

静的テキストを入力します。

[Ctrl]+[Enter]キーを押して新しい行を挿入します。

テキストの任意の部分にフォント/前景色/背景色を設定します。

1 つのフィールド内にテキストと一緒に式(DB フィールド値と同様に)を挿入します。

任意のフィールドで[Alt]+[Enter]キーを押してプロパティを開きます。

任意の式を右クリックし、[式の編集]を選択して式エディタを開きます。

  FlexReport for WinForms

125 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReportDesigner アプリケーションでパラグラフフィールドを追加するには

1. C1FlexReportDesigner で新しい FlexReport を作成します。

2. それを Products テーブルと連結します。

3. [挿入]タブからレポートにパラグラフパラグラフフィールドを追加します。

4. パラグラフパラグラフフィールドをダブルクリックして編集モードに入ります。

5. 「Product:」と入力します。

データベースフィールドを挿入するには

1. 編集モードで、パラグラフフィールドを右クリックし、[式の挿入][式の挿入]を選択します。

2. 式エディタで、[データベースフィールド][データベースフィールド]ドロップダウンから[ProductID]を選択します。

3. [完了][完了]をクリックします。

4. Product:{ProductID} を選択し、リポンを使用して[前景色][前景色]を緑に設定します。

編集モードで新しい行を変更するには

1. 編集モードで、[Ctrl]+[Enter]キーを押します。

2. 次の行で、静的テキスト「Unit Price is」を入力し、上記の手順を使用して UnitPrice データベースフィールドを挿入しま

FlexReport for WinForms  

126 Copyright © GrapeCity, Inc. All rights reserved.         

す。

3. {UnitPrice} を太字に設定します。

スクリプトを挿入するには

1. テキスト「UnitPrice is {UnitPrice}」の後に、「We have」と入力します。

2. 右クリックし、[式の挿入][式の挿入]を選択します。

3. 次のスクリプトを追加します:Iif(UnitsInStock > 0, UnitsInStock, "No")4. [完了][完了]をクリックします。

5. このスクリプト式の後に、静的テキスト「units in stock」を入力します。

6. 編集モードでこのスクリプトを選択し、太字に設定します。

7. [Ctrl]+[Enter]キーを押します。

8. 新しい行で右クリックし、[式の挿入][式の挿入]を選択します。

9. 次のスクリプトを入力します:Iif(Discontinued, "This product is no longer available", "") /10. [完了][完了]をクリックします。

11. 上記のスクリプトを選択し、[強調表示色][強調表示色]を「Orange, Accent 6 Lighter 60%」に、[前景色][前景色]を赤に設定します。

12. レポートをプレビュー表示します。

チェックボックスフィールドチェックボックスフィールド

チェックボックスチェックボックスフィールドは、「はい/いいえ」をビジュアルに表現するために使用されます。チェックボックスフィールドは、デ

フォルトでは右側にテキストが付いた白抜きボックスとして表示されます。このフィールドはブール値を受け取ります。true に評

価されると、チェックボックスにチェックマークが表示されます。

FlexReportDesigner アプリケーションでデータ連結チェックボックスを追加するには

1. C1FlexReportDesigner で新しい FlexReport を作成します。

2. それを Products テーブルと連結します。[Product Name]、[Quantity Per Unit]、[Stock]、[Discontinued]の各

フィールドを選択します。

3. [挿入]タブから、[チェックボックス][チェックボックス]フィールドをクリックし、[Discontinued]データフィールドを選択します。

4. そのデータフィールドをレポートの詳細セクション(グループヘッダーの Discontinued ラベルの下)にドロップします。

5. プロパティペインから、CheckAlign を CenterMiddle に設定します。

  FlexReport for WinForms

127 Copyright © GrapeCity, Inc. All rights reserved.         

6. レポートをプレビュー表示します。

バーコードフィールドバーコードフィールド

FlexReport のバーコードバーコード機能を使用すると、さまざまな業界標準のバーコードをレポート内のバーコードフィールドに統合でき

ます。バーコードフィールドはすばやく簡単に生成できます。バーコードフィールドをレポートにドロップし、バーコードシンボル

を選択し、テキストを指定すれば完了です。

FlexReport のバーコード機能は、バーコードに関連付けられたプロパティによって拡張されています。読み取りエラーをなくす

ために、チェックサムを自動的に追加しながら値をエンコードしています。

FlexReport for WinForms  

128 Copyright © GrapeCity, Inc. All rights reserved.         

バーコードには、C1.Win.Barcode アセンブリが使用されます。

バーコードシンボルバーコードシンボル

バーコードシンボルは、文字データをバーコードの太いバー、細いバー、およびスペースから成るパターンに変換するために

使用されるエンコードスキームを指定します。FlexReport で使用されるバーコードシンボルを次の表に示します。

スタイル名 例 説明

Ansi39

ANSI 3 of 9(Code 39)は、大文字、数

字、- , * $ / + % を使用します。これがデ

フォルトのバーコードスタイルです。

Ansi39x ANSI Extended 3 of 9(Extended Code39)は、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 は数字だけを使用しま

す。

  FlexReport for WinForms

129 Copyright © GrapeCity, Inc. All rights reserved.         

Code39 Code 39 は、大文字、数字、% * $ /. , - +を使用します。

Code39x Extended Code 39 は、ASCII 文字セット

全体を使用します。

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 + データフィールド)

FlexReport for WinForms  

130 Copyright © GrapeCity, Inc. All rights reserved.         

シンボルチェック文字(「スタート

コード値 + 各文字位置と各文字値

の積」を 103 で除算。この剰余値

がチェックサム)。

ストップ文字

末尾のクワイエットゾーン(空白領

域)

データセクションの 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-StateCustomer Barcode)は、米国内の郵便に

使用される 65 本のバーコードです。

JapanesePostal これは、日本の郵便制度で使用される

バーコードです。20 桁の英数字をエン

コードします。これには、7 桁の郵便番号

の後に、必要に応じて番地や部屋番号な

どの情報が含まれます。エンコードする

データにはハイフンを含めることができま

す。

Matrix_2_of_5 Matrix 2 of 5 は、3 本の黒バーと 2 本の

白バーから成る比較的高密度のバーコー

ドです。

MicroPDF417 MicroPDF417 は、PDF417 から派生され

た 2 次元多段バーコードです。Micro-PDF417 は、データをできる限り小さなサ

イズの 2 次元シンボル(最大 150 バイト、

英数字 250 文字、数字 366 桁)にエン

コードする必要があるアプリケーション用

に設計されています。

MicroPDF417 では、可変長のアプリケー

ション識別子(AI)のフィールド区切り文字

として FNC1 文字を挿入することができま

す。

  FlexReport for WinForms

131 Copyright © GrapeCity, Inc. All rights reserved.         

FNC1 文字を挿入するには、実行時に

Text プロパティに "\n"(C# の場合)また

は "vbLf"(VB の場合)を設定します。

MSI MSI Code は数字だけを使用します。

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 SpaceSymbology:RSS)です。

RSS14Stacked RSS14Stacked は、RSS14Truncated と同

様にインジケータデジットを含む EAN.UCC情報を使用しますが、幅が狭い場合、2 段に積み重ねられます。

RSS14Stacked では合成オプションを設定

できます。[タイプ][タイプ]ドロップダウンリストか

らバーコードのタイプを選択し、[値][値]フィー

ルドで合成バーコードの値を指定できま

す。

FlexReport for WinForms  

132 Copyright © GrapeCity, Inc. All rights reserved.         

RSS14StackedOmnidirectional RSS14StackedOmnidirectional は、

RSS14 と同様に全方向型スキャンを含む

EAN.UCC 情報を使用しますが、幅が狭い

場合、2 段に積み重ねられます。

RSS14Truncated RSS14Truncated は、RSS14 と同様に

EAN.UCC 情報を使用しますが、POS でス

キャンされない小さな品目に使用するため

に、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 です。

  FlexReport for WinForms

133 Copyright © GrapeCity, Inc. All rights reserved.         

UPC_A UPC-A は、数字(11 個の数字とチェック

デジット)だけを使用します。

UPC_E0 UPC-E0 は数字だけを使用します。ZeroSuppression の UPC シンボルに使用され

ます。Caption プロパティには、6 桁の

UPC-E コードまたは完全な 11 桁(必須の

コードタイプ 0 を含む)の UPC-A コードを

入力する必要があります。11 桁のコード

が入力された場合、バーコードコントロー

ルは、可能であればそれを 6 桁の UPC-Eコードに変換します。11 桁のコードを 6 桁のコードに変換できない場合は、何も表示

されません。

UPC_E1 UPC-E1 は数字だけを使用します。主に小

売業界で在庫ラベルに使用されます。

UPC-E1 の入力文字列の長さは数字 6 個です。

バーコードフィールドは、プロパティペインで BarCode プロパティを使用することで、FlexReportDesigner に直接挿入できま

す。Barcode を使用して、バーコードフィールドのバーコードのタイプを設定することもできます。

以下のバーコードは、FNC1 文字をサポートしています。

EAN128FNC1MicroPDF417RSSExpandedRSSExpandedStacked

バーコードのプロパティバーコードのプロパティ

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:: できるだけ広いフィールド領域を使用するようにバーコード画像を拡大縮小します。拡大縮小の

FlexReport for WinForms  

134 Copyright © GrapeCity, Inc. All rights reserved.         

方法は、バーコードタイプによって異なります。たとえば、Code128 のような Bar タイプのバーコードで

は高さが拡大され、Matrix、Rss、Composite などのバーコードでは高さと幅が同じ割合で拡大縮小され

ます。

SupplementSpacing:: メインバーコードと補助バーコードの間隔を指定します。

さまざまなバーコードスタイルに応じて BarcodeOptions から公開されるその他のオプションは次のとおりです。

Code49:

Grouping:: バーコードでグループ化を使用します。値は True または False です。

Group:: バーコードをグループ化する際のグループ番号を取得または設定します。有効な値は 0 ~ 8 です。

DataMatrix::

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 の範囲の整数値を取ります。

  FlexReport for WinForms

135 Copyright © GrapeCity, Inc. All rights reserved.         

RssExpandedStacked::

RowCount:: 積み重ねる段数を指定します。

バーコードのクワイエットゾーンは、C1FlexReportDesigner のプロパティペインで MarginBottom、MarginLeft、MarginRight、および MarginTop プロパティを使用して簡単に指定できます。

計算フィールド計算フィールド

生データを使用しないフィールドを作成するには、計算計算フィールドが最適です。計算フィールドには、実行時に評価される式が設定さ

れます。これらの式を使用して、データベースに保存されていないデータ値を生成します。

計算フィールドのドロップダウンには、定義済みの式がいくつか用意されています。

FlexReportDesigner アプリケーションを使用して定義済みの計算フィールドを追加するには

1. C1FlexReportDesigner で新しい FlexReport を作成します。

2. [挿入][挿入]タブから、ページフッターセクションに[作成日]と[ページ n/m]の 2 つの計算計算フィールドを追加します。

3. 設計領域で、これらの計算フィールド内の式を確認します。

4. レポートをプレビュー表示します。

FlexReport for WinForms  

136 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReportDesigner アプリケーションで、計算フィールドを定義し、そのフィールドを追加するには

1. 新しいレポートを作成します。 2. そのレポートを Orders Details テーブルに連結します。 3. グループヘッダーで、合計価格のラベルを表示するためのテキストテキストフィールド Total を追加します。

4. [データ][データ]タブに移動し、メインデータソースを右クリックして、[計算フィールドの追加][計算フィールドの追加]を選択します。VBScript エディタが表示

されます。

5. VBScript エディタエディタで、次の式を記述します。

Quantity*UnitPrice

6. 前述した計算フィールドを次のようにドロップします。

  FlexReport for WinForms

137 Copyright © GrapeCity, Inc. All rights reserved.         

7. レポートをプレビュー表示します。

画像フィールド画像フィールド

画像画像フィールドは、データ連結された画像または静的な画像を挿入するために使用されます。画像フィールドをクリックすると、レポー

トに挿入する画像ファイルを選択するように求めるダイアログボックスが表示されます。選択した画像がコピーされ、レポートファイル

と同じディレクトリに置かれます。レポートファイルをアプリケーションに埋め込まない場合は、このファイルをアプリケーションと共に配

布する必要があります。レポートファイルをアプリケーションに埋め込むと、非連結ピクチャファイルもすべて埋め込まれます。

FlexReportDesigner アプリケーションを使用して画像フィールドを追加するには

1. C1FlexReportDesigner で新しいレポートを作成します。 2. そのレポートを Products テーブルに連結します。 3. 製品のテキストフィールド Image が表示されるグループヘッダーを作成します。

4. [挿入][挿入]タブに移動し、[画像][画像]フィールドアイコンのドロップダウンをクリックします。

5. [Picture]を選択し、画像フィールドをレポートのグループヘッダーセクションに追加します。

FlexReport for WinForms  

138 Copyright © GrapeCity, Inc. All rights reserved.         

6. レポートをプレビュー表示します。

図形フィールド図形フィールド

図形フィールドは、レポートに幾何学図形を表示するために使用されます。直線は区切りとしてよく使用されます。四角形は

フィールドのグループを強調表示したり、テーブルやグリッドを作成するために使用されます。

式で図形の表示/非表示を定義するためのルールを設定することもできます。たとえば、追加注文レベルが在庫数に満たない

製品の名前を四角形で囲む場合は、レポートの OnPrint プロパティに次の式を記述して、図形の表示/非表示をいつオンにす

るかを定義できます。

If UnitsInStock < ReorderLevel Then Shapefld.Visible = True Else Shapefld.Visible = False End If

このシナリオの詳細については、「値に基づいたフィールドの表示/非表示」を参照してください。

  FlexReport for WinForms

139 Copyright © GrapeCity, Inc. All rights reserved.         

サブレポートフィールドサブレポートフィールド

サブレポートサブレポートフィールドは、レポートにサブレポートを挿入するために使用されます。サブレポートは、別のレポート(メインレポート)の

フィールド内に配置された通常のレポートです。サブレポートは、通常、メインレポート内の現在の値に基づく詳細情報をマスター/詳細関係として表示する目的で設計されます。

次の例では、メインレポートにはカテゴリが表示され、詳細セクション内のサブレポートには現在のカテゴリに対する製品の詳細が表

示されます。

Categories テーブルと Products テーブルに基づくマスター/詳細レポートを作成するには、カテゴリレポート(マスタービュー)と製品

レポート(詳細ビュー)を作成する必要があります。

手順手順 1:マスターレポートの作成:マスターレポートの作成

1. FlexReport ウィザードウィザードを使用して、基本レポート定義を作成します。

1. Northwind データベース(ComponentOne Samples\Common フォルダの C1NWind.mdb)から Categories テーブ

ルを選択します。

2. レポートに CategoryName および Description フィールドを挿入します。

FlexReport for WinForms  

140 Copyright © GrapeCity, Inc. All rights reserved.         

2. C1FlexReportDesigner アプリケーションで、[設計][設計]ボタンをクリックして、レポートの編集を開始します。

3. ページヘッダーおよびヘッダーセクションの Visible プロパティを False に設定します。

4. 詳細セクションで、DescriptionCtl を選択し、それを CategoryNameCtl の真下に移動します。

5. プロパティペインを使用して、外観の設定(Background)を変更します。

6. [プレビュー][プレビュー]ボタンを選択すると、カテゴリレポートは次の図のように表示されます。

手順手順 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 つのレポートがあります。次の

手順では、サブレポートを作成します。

  FlexReport for WinForms

141 Copyright © GrapeCity, Inc. All rights reserved.         

1. Designer の[レポート]リストから、[[Categories Report]](マスターレポート)を選択します。

2. 設計モードで、[挿入][挿入]タブの[フィールド][フィールド]グループから[サブレポート][サブレポート]アイコンをクリックし、ドロップダウンメニューか

ら[[Products Report]]を選択します。

3. レポートの詳細セクションで、マウスポインタをクリックおよびドラッグして、サブレポートのフィールドを作成します。

手順手順 4:サブレポートとマスターレポートのリンク:サブレポートとマスターレポートのリンク

マスター/詳細関係は、サブレポートフィールドの SubreportFilter プロパティで制御します。このプロパティには、フィルタ条件として

評価されてサブレポートのデータソースに適用できる式を設定する必要があります。

Report Designer では、この式を自動的に作成できます。次の手順を実行します。

1. サブレポートフィールドを右クリックし、メニューから[サブレポートのリンク][サブレポートのリンク]を選択します。

[サブレポートのリンク][サブレポートのリンク]ダイアログボックスが表示されます。ここで、リンク先のフィールドを選択できます。

FlexReport for WinForms  

142 Copyright © GrapeCity, Inc. All rights reserved.         

設計領域のサブレポートフィールドは次のように表示されます。

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 番目のデータポイントを表示します。棒が横向きに置かれる場合は横棒グラフと呼ばれ、棒が縦向きに置かれる場合は縦

棒グラフと呼ばれます。

次の図は、横棒横棒グラフを表します。

  FlexReport for WinForms

143 Copyright © GrapeCity, Inc. All rights reserved.         

次の図は、縦棒縦棒グラフを表します。

バブルチャートバブルチャート:バブルチャートは、2 つの独立した値を組み合わせて、ポイントの y 値とサイズを示します。バブルチャート

は、各ポイントの付加的なデータ値をポイントのサイズを変えて表すために使用されます。Y 配列要素は、デカルト座標位置を

決定し(XY プロットグラフと同様)、Y1 要素値は、各ポイントのバブルのサイズを決定します。ポイントのサイズは、面積または

直径に基づいてエンコードできます。

散布図散布図:散布図は、2 つの値を使用して各データポイントを表します。このタイプのチャートは、統計的手法によって変数間の

関係を定量化(通常、線形回帰分析)するためによく使用されます。

FlexReport for WinForms  

144 Copyright © GrapeCity, Inc. All rights reserved.         

円グラフ円グラフ:円グラフは、各系列を円のスライスとして描画します。円の数は、データ内のポイントの数を表します。各円は、各系

列の n 番目のデータポイントを表示します。円グラフをカスタマイズして、凡例やラベルを表示することもできます。詳細につい

ては、「チャートプロパティ」を参照してください。

ドーナツグラフ:ドーナツグラフ:

ドーナツグラフは、内径がゼロでない円グラフです。円グラフと機能的には同じですが、とりわけ 3D 効果付きで表示する際な

どに見栄えをよくするために使用できます。円グラフと同様に、各ドーナツは、各データポイントの全体に対する割合として各

系列を表示します。複数のデータポイントが指定されている場合は、グラフに複数のドーナツが表示されます。

ドーナツグラフは、円グラフの InnerRadius プロパティをゼロ以外の値に設定することで作成できます。InnerRadius 値は、円

全体の半径に対する割合を表します。InnerRadius プロパティには、各チャートグループの円オブジェクトでアクセスできます。

レーダーチャートレーダーチャート:レーダーチャートは、データセットごとにレーダー線に沿って y 値を描画します(x 値は、ラベル以外は無視さ

れます)。データに一意のポイントが n 個ある場合、グラフ面は、n 個の等しい角度のセグメントに分割され、360/n 度の間隔

でレーダー線(各ポイントを表す)が描画されます。デフォルトでは、最初のポイントを表すレーダー線が垂直に描画されます

(90 度)。レーダーチャートはさらにカスタマイズが可能です。詳細については、「チャートプロパティ」を参照してください。

  FlexReport for WinForms

145 Copyright © GrapeCity, Inc. All rights reserved.         

階段グラフ階段グラフ:階段グラフは、データポイントどうしを線で結んで系列を描画する XY プロットグラフの形式の 1 つです。これらの

チャートは、X の値が特定の値になると Y の値が突然変化するという、値が離散的に変化する場合によく使用されます。最も

わかりやすい例としては、時間の経過に伴う小切手口座の残高の変化があります。時間の経過(X 値)と共に、預金が発生し

たり、小切手が切られたりします。そのたびに、小切手口座の残高(Y 値)は、徐々にではなく突発的に変更されます。時間が

経過しても預金が発生せず小切手も切られない場合、その期間の残高(Y 値)は変わりません。

折れ線グラフ折れ線グラフ:折れ線グラフは、データポイントをつないで各系列を描画します。これは、さまざまなデータグループ間の値の

変化を最も効率よく示す方法です。これらのグラフは、長期にわたるトレンドやパフォーマンスを示す場合によく使用されます。

株価チャート株価チャート:株価チャートは、指定された株の始値、終値、高値、および安値を表示するために財務アプリケーションで使用

されます。株価チャートには次のようなタイプがあります。

ローソク足:ローソク足: ローソク足チャートは、特殊なタイプの HiLoOpenClose チャートで、始値と終値の関係、および高値と安

値の関係を示す際に使用されます。ローソク足チャートでは HiLoOpenClose チャートと同じ価格データ(高値、安値、

始値、終値)が使用されます。ただし、ローソク足チャートには太いローソク状の実体が含まれており、その色と大きさ

で始値と終値の関係に関する追加情報が示されます。たとえば、長い白抜きのローソクは買い圧力を示し、長い塗りつ

FlexReport for WinForms  

146 Copyright © GrapeCity, Inc. All rights reserved.         

ぶされたローソクは売り圧力を示します。

ローソク足チャートは、ローソク、上ヒゲ、および下ヒゲで構成されています。ローソクの胴体部分(始値と終値の間の

バー)は、株価の始値と終値を示しています。ローソクの上下にある細い線(上ヒゲおよび下ヒゲ)は、株価の高値/安値の範囲を表現しています。空洞のローソクは、株価が上昇したこと(終値が始値より高い)を示しています。白抜きの

ローソクでは、胴体部分の下端が始値を示し、上端が終値を示します。塗りつぶされたローソクは、株価が下降したこ

と(始値が終値より高い)ことを示しています。塗りつぶされたローソクでは、胴体部分の上端が始値を示し、下端が終

値を示します。

C1Chart は、高値に対して Y 値、安値に対して Y1、始値に対して Y2、終値に対して Y3 を使用して、ローソク足チャー

トを作成します。C1Chart は、線の色の値を使用して、株価の下落を表すローソクを自動的に塗りつぶします。

HiLo:: HiLo チャートは、2 つの独立した値を組み合わせて、系列内の各ポイントの高値と安値のデータを提供します。

HiLo チャートは、指定された株価の高値と安値を表示するために、主に財務アプリケーションで使用されます。HiLoチャートの各系列の Y および Y1 配列の要素が「高」値と「安」値を表します。

HiLoOpenClose:: HiLoOpenClose は、HiLo チャートに似ていますが、4 つの独立した値を組み合わせて、系列内の

ポイントの高値、安値、始値、および終値を提供します。株の高値および安値を表示するほか、Y2 および Y3 配列要素

がそれぞれ株の始値および終値を表します。

ヒストグラムヒストグラム:ヒストグラムは、生データ値のコレクションから度数分布をプロットします。これは、グループを形成するデータに

よく使用され、生データのコレクションを計測して、定義された区間内に分布するデータ値の数をプロットすることで生成されま

す。元の値は、ヒストグラムのデータではなく度数を生成するために使用されます。棒グラフに似ていますが、棒グラフが一般

  FlexReport for WinForms

147 Copyright © GrapeCity, Inc. All rights reserved.         

に質的変数に使用されるのに対して、ヒストグラムは量的変数に使用されることに注意する必要があります。

ヒストグラムと棒グラフは、外観は類似していますが、機能は異なります。棒グラフがデータポイントから作成されるのに対し

て、ヒストグラムはデータの度数分布から作成されます。以下のチャートは、棒グラフとヒストグラムの違いを示しています。ど

ちらのチャートも、使用している Y データはまったく同じです。棒グラフ(上)は、各年の平均気温を発生年ごとに示しています。

ヒストグラム(下)は、入力として同じ気温データを使用していますが、各区間内に分布する気温の数を自動的に集計し、結果

のヒストグラムを描画しています。わかりやすいように、各区間の個数を示したグラフラベルが区間の上部に追加されていま

す。

ヒストグラムは、量的変数のデータ分布にある際だった特徴を特定するために役立ちます。量的変数の重要な特性は次のと

おりです。

典型的な値を明らかにします。

データは一般的な形状になります。データ値は、中央から対称に分布する場合も非対称に分布する場合もあります。

データグループから離れた値がある場合、それらは異常値として示されます。

データ値は標準値に近い場合も遠い場合もあります。

分布は、単一のピークを形成する場合と、複数のピークや谷を形成する場合があります。

チャートタイプをヒストグラムとして選択するには、[チャートグループ][チャートグループ]→[グループ[グループ 0]]に移動し、[チャートタイプ][チャートタイプ]を[ヒストグラ

ム]に設定します。

ポーラポーラチャートチャート:ポーラチャートは、系列ごとに x 座標と y 座標を(theta,r)として描画します。theta は原点からの回転角度で

あり、r は原点からの距離です。theta は、度(デフォルト)またはラジアンを単位として指定できます。X 軸は円なので、X 軸の

最大および最小値は固定されています。系列は、個別に描画することも、積層にして描画することもできます。ポーラチャート

はさらにカスタマイズが可能です。詳細については、「チャートプロパティ」を参照してください。

FlexReport for WinForms  

148 Copyright © GrapeCity, Inc. All rights reserved.         

3D チャートチャート

円柱グラフ円柱グラフ:円柱グラフは、横棒および縦棒グラフのバリエーションです。横棒または縦棒が円柱として表されます。円

柱グラフは、両端が同じ楕円形の底面になります。横棒グラフや縦棒グラフと同様に、円柱棒グラフは、個々の項目ま

たは項目グループの比較に適しています。

円錐グラフ円錐グラフ:円錐グラフは、3D 横棒および縦棒グラフのバリエーションです。横棒または縦棒が円錐として表されま

す。円錐グラフの基本形は、三角形の回転体です。底面はフラットな円形で、湾曲した側面の頂点に 1 つのポイントが

あります。

ピラミッドグラフピラミッドグラフ:ピラミッドグラフは、3D 横棒および縦棒グラフのバリエーションです。横棒または縦棒がピラミッドとし

て表されます。ピラミッドグラフは、底面の形以外は円錐グラフに似ています。ピラミッドグラフは、地理的用途でよく使

用されます。

設計時サポート設計時サポート

FlexReport のチャートチャートフィールドは、チャートを簡単に操作するための設計時サポートとして、設計時エディタとコレクションエ

  FlexReport for WinForms

149 Copyright © GrapeCity, Inc. All rights reserved.         

ディタを備えています。

チャートチャートフィールドには、次の設計時エディタを使用します。

チャートプロパティ

チャートデータソース

チャート視覚効果

これらのエディタを呼び出すには、チャートフィールドを右クリックし、必要なエディタを選択します。

チャートプロパティ

このエディタでは、簡単な対話式の方法で新しいチャートの作成または既存のチャートの変更を行うことができます。チャート

のタイプを選択するためのオプションがあります。また、チャートのヘッダー、フッター、凡例、チャート領域、およびプロット領域

の外観設定に加えて、x および y 軸の追加プロパティ設定も含まれます。[チャートプロパティ]ダイアログボックスには、開発

しているチャートのデザインを詳細に調整するためのオプションもあります。次の要素で構成されています。

[ギャラリー項目][ギャラリー項目]:[チャートプロパティ]ダイアログボックスの左ペインの[ギャラリー項目]には、チャートのチャートタイ

プやサブタイプを選択するオプションがあります。チャートタイプのすべての選択項目については、「チャートタイプ」を参

照してください。さまざまな単純なチャートタイプの中から選択することも、複合型をクリックして、チャートにさらに機能

を追加することもできます。

[単純型]タブ[単純型]タブ:[単純型]タブでは、多くの単純なチャートタイプの中から 1 つを選択できます。さらに、より特殊なチャー

トの 1 つを、単純なチャートタイプの横にあるリストボックスから選択します。

FlexReport for WinForms  

150 Copyright © GrapeCity, Inc. All rights reserved.         

[複合型]タブ[複合型]タブ:[複合型]タブでは、1 つのチャートグループを使用するか、それとも 2 つのチャートグループを使用する

かを指定できます。また、各グループのドロップダウンボックスで、作成するチャートのタイプを選択できます。グループ

ごとに、グループを積み重ねるか、3D にするかなどを選択できます。

メモ:[グループ 1]のデータに対してチャートタイプを選択しないと、[チャートプロパティ]ダイアログボックスの左ペイン

のリストボックスに、[グループ 1]のデータの要素は表示されません。

チャートデータソース

チャートデータエディタで、チャートデータからデータを設定することでチャートを連結できます。チャート内のデータ系列を追加

または削除し、各データ系列のラベルおよび色を指定し、[積み重ねデータの表示]チェックボックスをオンにしてデータを積み

上げることができます。

チャート視覚効果

  FlexReport for WinForms

151 Copyright © GrapeCity, Inc. All rights reserved.         

視覚効果は、データ系列、ヘッダー、フッターなどの Chart2D コントロールの要素を視覚的に機能拡張するために使用する

ツールです。既存のすべてのプロジェクトで、このツールが提供する新しい機能を使用できます。[視覚効果]デザイナからいく

つかの簡単な手順を実行することで、チャートの外観を劇的に改善できます。

チャートチャートフィールドには、次のコレクションエディタを使用します。

ValueLabel コレクションエディタコレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[チャート領域][チャート領域]→[軸[軸 X]]→[値ラ[値ラ

ベル]ベル]からアクセスできます。詳細については、ValueLabel コレクションエディタのドキュメントを参照してください。

ChartDataSeries コレクションエディタコレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[チャートグループ][チャートグループ]→[グ[グ

ループループ 0]]→[チャートデータ][チャートデータ]→[カテゴリグループ][カテゴリグループ]からアクセスできます。詳細については、ChartDataSeries コレク

ションエディタのドキュメントを参照してください。

ChartLabel コレクションエディタコレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[チャートラベル][チャートラベル]→[デフォルトラ[デフォルトラ

ベルスタイル]ベルスタイル]→[ラベルコレクション][ラベルコレクション]からアクセスできます。詳細については、Label コレクションエディタのドキュメント

を参照してください。

ChartVisualEffectsStyle コレクションエディタコレクションエディタ:このコレクションエディタには、[プロパティ]ペインの[視覚効果][視覚効果]→[ス[ス

タイル]タイル]からアクセスできます。詳細については、VisualEffectsStyle コレクションエディタのドキュメントを参照してくださ

い。

チャートデータのプロットチャートデータのプロット

FlexReport for WinForms  

152 Copyright © GrapeCity, Inc. All rights reserved.         

単純な 2D チャートをプロットする手順は次のようになります。

1. C1FlexReportDesigner アプリケーションを開きます。

2. C1FlexReport ウィザードを使用して新しいレポートを作成するか、既存のレポート定義を開きます。

3. 詳細セクションにチャートチャートフィールドを追加します。

メモ:メモ: レポートにレガシーチャートレガシーチャートフィールドを追加するには、それを[挿入][挿入]タブに追加する必要があります。これ

には、デザイナで[ファイル][ファイル]→[オプション][オプション]に移動し、[挿入][挿入]タブの[レガシーチャートの表示][レガシーチャートの表示]ボタンを選択しま

す。

4. チャートフィールドを右クリックし、[チャートプロパティ][チャートプロパティ]→[単純型][単純型]→[横棒][横棒]を選択します。

5. チャートフィールドを右クリックし、[チャートデータソース][チャートデータソース]を選択します。

6. [単純な[単純な 2D チャート]チャート]をクリックし、[単純な[単純な 2D チャートの生成]チャートの生成]チェックボックスをオンにします。

7. チャートの 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 for WinForms

153 Copyright © GrapeCity, Inc. All rights reserved.         

非連結チャートでのデータのプロット非連結チャートでのデータのプロット

FlexReport では、データソースにチャートを連結しなくても、チャートにデータを追加できます。非連結モードで直接 X および

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]]に移動します。

FlexReport for WinForms  

154 Copyright © GrapeCity, Inc. All rights reserved.         

4. 必要に応じて、ColumnCount および RowCount プロパティを目的の値に設定します。ここでは、ColumnCount とRowCount の両方のプロパティを 0 に設定します。

5. GridData プロパティの横にある省略符ボタンをクリックします。

6. 1 次元配列エディタ次元配列エディタでデータを入力し、閉じます。

7. [プレビュー][プレビュー]ボタンをクリックしてプレビューモードに切り替え、レポートを表示するプレビューモードを開始します。

複数の系列を持つチャート複数の系列を持つチャート

  FlexReport for WinForms

155 Copyright © GrapeCity, Inc. All rights reserved.         

場合によっては、複数のデータセットまたは複数の系列を持つチャートを作成する必要があります。このようなチャートを作成

するには、各系列の値を設定する必要があります。

例として、C1Nwind.mdb データベースの Products テーブルで、カテゴリ ID(Category ID)に対応する単価(Unit Price)、在庫数(Units in Stock)、および追加注文レベル(Reorder Level)を表示することにします。次の手順で、このシナリオを実現で

きます。

1. チャートチャートフィールドを右クリックし、[チャートデータソース][チャートデータソース]を選択します。

2. [[2D チャートグループチャートグループ 0]]をクリックし、[系列値][系列値]をクリックします。

3. プラス記号をクリックし、選択した[系列ラベル][系列ラベル]を指定し、ドロップダウンリストから[値][値]を指定します。[スタイル][スタイル]タブ

の[塗りつぶし][塗りつぶし]オプションから、系列に色を追加することもできます。この例では、複数系列チャートに対して次のデー

タを指定しました。

系列ラベル系列ラベル 値値 スタイル|塗りつぶしスタイル|塗りつぶし

Unit Price UnitPrice 青紫

Units in Stock UnitsinStock ペールターコイズ

Reorder Level ReorderLevel 濃いピンク

凡例を作成するには

2. [レガシーチャート[レガシーチャート]]フィールドを右クリックします。

3. [チャートプロパティ][チャートプロパティ]を選択します。

4. [外観][外観]→[凡例][凡例]に移動します。

5. [表示][表示]チェックボックスをオンにし、[テキスト][テキスト]として「Legend」と記述します。

グループ化されたレポート内のチャートグループ化されたレポート内のチャート

FlexReport for WinForms では、複数のグループを持つレポートを作成できます。たとえば、1 つの単純なレポートにすべて

の製品をリストするのではなく、製品をカテゴリ別にグループ化できます。各グループには、ヘッダーセクションとフッターセク

ションがあり、グループのタイトルや小計などの情報を表示できます。

グループヘッダーにチャートを追加すると、そのチャートには現在のグループのデータだけが表示されます。それに対して、レ

ポートヘッダーやレポートフッターにチャートを追加すると、そのチャートにはレポートのすべてのデータが表示されます。

次に、レポートデザイナに表示されるレポート定義の模式図を示します。これは、レポートヘッダーとグループヘッダーにそれ

ぞれチャートチャートフィールドを追加した場合の効果も示しています。

レポートヘッダーセクションレポートヘッダーセクション

ここに追加されたチャートフィールドは、

レポート全体に対して 1 つのチャートを生成します。

このチャートは、レポートのデータソース内の

すべてのデータを表示します。

ページヘッダーセクションページヘッダーセクション

グループヘッダーセクション(グループヘッダーセクション(CategoryName))

ここに追加されたチャートフィールドは、

CategoryName 値ごとに 1 つのチャートを生成します。

各チャートは、現在の CategoryName 内の

すべてのデータを表示します。

詳細セクション詳細セクション

FlexReport for WinForms  

156 Copyright © GrapeCity, Inc. All rights reserved.         

グループフッターセクション(グループフッターセクション(CategoryName))

ページフッターセクションページフッターセクション

レポートフッターセクションレポートフッターセクション

この例を使用して、各カテゴリのレポートデータをチャートで視覚化してみます。

レガシーチャートレガシーチャートフィールドをグループヘッダーセクション(CategoryName)に追加し、「チャートデータのプロット」の説明に

従ってチャートを作成します。チャートの X および Y 値として ProductName および UnitPrice を指定し、UnitPrice として[系[系

列値]列値]の[値][値]を指定します。

次の画像は、このレポートのスクリーンショットです。グループヘッダー、グループヘッダー内のチャート、およびいくつかの詳

細レコードが表示されています。

上のチャートは、"Condiments" カテゴリ内の製品の単価を示しています。下のチャートは、"Confections" カテゴリ内の製品

の単価を示しています。

  FlexReport for WinForms

157 Copyright © GrapeCity, Inc. All rights reserved.         

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 アプリケーションにデフォルトでロードされる組み込みの標準カスタムフィールドです。

SuperLabelMaps

これらのカスタムフィールドを実装するためのソースコードは次のようになります。<customfields><item value="C1.Win.FlexReport.CustomFields;C1.Win.FlexReport.CustomFields.SuperLabel"/><item value="C1.Win.FlexReport.CustomFields;C1.Win.FlexReport.CustomFields.Map" /></customfields>

FlexReport for WinForms  

158 Copyright © GrapeCity, Inc. All rights reserved.         

マップカスタムフィールドマップカスタムフィールド

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 ファイルをマップにロードして表示できます。

  FlexReport for WinForms

159 Copyright © GrapeCity, Inc. All rights reserved.         

トラッキングトラッキング

マップフィールドによって表示されるマップは、マップ上に表示されるデータを自動的に中央揃えおよびズームインできます。こ

の動作は次の 2 つの要素によって決定されます。

マップフィールド全体に指定される AutoCenter プロパティと AutoZoom プロパティの値、および自動的な中央揃え/ズームを微調整するためのいくつかの関連プロパティ

(AutoZoomPadLon、AutoZoomPadLat、MaxAutoZoom、RoundAutoZoom)。

データが「トラッキング」される場合は、レイヤによって表される空間データ。トラッキング(空間データの特定の部分を

自動的な中央揃えとズームに使用するかどうかなど)は、レイヤの Track プロパティによって決定されます。また、KMLレイヤの場合は、特定の KML 項目をトラッキングするかどうかを決定する式を指定できます。

スタイルスタイル

マップ要素の視覚属性は主にスタイルによって定義されます。スタイルにはいくつかの種類があります(ポイントマーカー

スタイル、線スタイル、KML 項目スタイル)。適用可能な種類は、たとえば、ポイントレイヤはポイントマーカースタイルを

使用し、線レイヤは線スタイルを使用するというように、コンテキストによって決まります。通常、スタイルは、データ依存の

式(実際のスタイルが実行時のデータによって決まる)として指定され、デフォルトで使用されるフォールバックスタイルを

持ちます。スタイル式の指定および評価方法について次に説明します。

マップカスタムフィールドには、次の 3 つのスタイルコレクションが含まれます。

MarkerStylesLineStylesKmlItemStyles

これらのスタイルは、マップマップ上に定義されているすべてのレイヤと、現在のレポート内の他のマップマップフィールドでも使用できま

す。各コレクション内のスタイルは、インデックス、または名前(Name プロパティを使用。推奨)のいずれかによってアクセス可

能です。スタイル式が文字列と評価された場合は、その文字列を使用して一致するスタイルが検索されます。最初は、現在の

マップを検索し、これが失敗した場合は、現在のレポート内の他のすべてのマップを検索します(種類が一致するスタイルだけ

が検索されます。たとえば、ポイントマーカースタイルの場合は、MarkerStyles コレクションだけが検索されます)。

空間位置空間位置

ポイントおよび線レイヤでは、データの空間位置を次の 2 つの方法で指定できます。

実行時に経度/緯度ペアとして評価される 2 つの式として。通常、これらは、データソースに格納された対応するデータ

フィールド(経度と緯度)を直接参照します。

MapLocation として。これは、1 つの文字列として評価される式(または式リスト)です。この文字列から、外部のオン

ラインサービス(Google マップ)を使用して、対応する空間位置を取得できます。指定した MapLocation にセミコロン

が含まれる場合は、セミコロン区切りの式リストとして扱われます。式はそれぞれ個別に評価された後、結合されてクエ

リーとして使用されます。典型的な MapLocation は次のようになります。

"Address;City;PostalCode;Country"

これは、Address、City、PostalCode、Country の各フィールドをデータソースから取得した後、それらを結合して、外部

サービスへのクエリーを実行します。

MapLocation の使用は、インターネットアクセスに非常に時間がかかる場合があることに注意してください。そのた

め、デフォルトでは、取得された空間データはローカルディスクファイルに格納されます。このファイルのパス

は、Map.GeoCachePath プロパティで指定されます。デフォルトでは、このファイルの名前は「geocache.xml」で、レ

ポート定義と同じディレクトリに格納されます。ジオキャッシングの無効化は推奨されません。

ポイントレイヤポイントレイヤ

ポイントレイヤを使用すると、データソースのレコードごとに 1 つずつ、ポイント位置マーカーが表示されます。マーカーの位置

は、「空間位置」で説明したように、経度/緯度ペア、または MapLocation によって指定されます。以下に、ポイントレイヤの

重要な側面を説明します。

FlexReport for WinForms  

160 Copyright © GrapeCity, Inc. All rights reserved.         

データアクセス:データアクセス:実行時にポイントレイヤが処理される際は、レコードソース(レイヤ自身の 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=CountryKML 項目ごとに、他の項目式が現在の項目の国に対応するデータを使用して評価されるようにします。

ItemTrackExpr:: 指定された場合は、項目を使用してマップを自動的に中央揃え/ズームするかどうかを決定します。

空のままにすると、true と見なされます。

ItemVisibleExpr:: 指定された場合は、項目の表示/非表示を決定します。空のままにすると、true と見なされます。

ItemStyleExpr:: この式が(現在のマップまたはレポート内の他の任意のマップの)KmlItemStyles コレクション内の

有効なスタイル名として評価された場合は、このスタイルが項目に適用されます。これは、たとえば、州の合計注文数

などのデータ値に応じて、各州を異なる色で塗りつぶす場合に使用できます。

ItemStyle.ItemNameExpr::KML 項目スタイル自身が、1 つの計算されたプロパティとして、項目の名前を保持してい

  FlexReport for WinForms

161 Copyright © GrapeCity, Inc. All rights reserved.         

ます。これを使用して、マップ上にレンダリングされる名前を隠したり、それをレポートデータ(合計注文数など)に置き

換えることができます。

凡例凡例

マップは、関連する凡例をマップ境界内にレンダリングできます。凡例をマップの境界の外に簡単に配置できるように、凡例を

レポート内の任意のマップフィールドに関連付けることができます。これにより、別のマップを説明する凡例を保持するだけの

空のマップフィールドを追加できます。

凡例は、マップマップフィールドの Legends コレクション内に格納されます。凡例を追加するには、このコレクションに項目を追加し

ます。マップの境界内の凡例の位置は、LegendAlignment プロパティによって決定されます。Orientation は、凡例内の項

目を垂直方向(デフォルト)と水平方向のどちらで配置するかを決定します。他のいくつかのプロパティを使用して、凡例の外

観を微調整できます。

凡例内の項目は Items コレクションによって表されます。凡例の Automatic プロパティが True に設定されている場合、この

コレクションには、現在のマップの KML 以外のレイヤからデータを自動的に挿入できます。その場合、Items コレクションは編

集できません。それ以外の場合は、凡例項目を手動で追加する必要があります。

次のタイプの凡例項目がサポートされています。

LegendLayerStyleItem:レイヤスタイルを表します。デザイナで、凡例項目によって表される既存のレイヤまたはスタ

イルを選択できます。選択したレイヤスタイルに応じて、凡例項目はポイントマーカー(ポイントレイヤ/スタイルの場

合)、線(線レイヤ/スタイルの場合)、または色見本(KML 項目スタイルの場合)を表します。

LegendColorSwatchItem:任意の色見本を表します。

LegendTextItem:任意のテキストを表します。

マップカスタムフィールドの追加マップカスタムフィールドの追加

マップマップフィールドの基礎を理解できたので、ここでは、都市ごとに集計された従業員、納入業者、顧客を表示するレポートにマップを追

加します。

次の手順を実行します。

1. 基本のレポートを作成します。基本のレポートを作成します。

デザイナで新しいレポートを追加し、データソースとして C1NWind.mdb を指定して、次の SQL クエリーを使用します。 Customers and Suppliers by City

2. メインマップを追加します。メインマップを追加します。

マップをレポートのヘッダーに追加します。

レポートデザイナで、ヘッダーの下端を下方向にドラッグして、マップのための領域を空けます。

マップカスタムフィールドアイコン(地球儀)をクリックし、ヘッダー上にドラッグします。

3. マップのプロパティを調整します。マップのプロパティを調整します。

マップのプロパティを次のように設定します(以下はデフォルト値以外のみ)。

AutoCenter:FalseAutoZoom:FalseCenterLatitude:10CenterLongitude:15ShowScale:TrueTileSource:VirtualEarthArielZoomLevel:.55

4. レイヤを追加します。レイヤを追加します。

Layers コレクションの横にある楕円ボタンをクリックして、LayerBase コレクションエディタコレクションエディタを開きます。メンバ「Employees」、「Suppliers」、および「Customers」を追加し、それぞれのプロパティを次に示すように設定します。

FlexReport for WinForms  

162 Copyright © GrapeCity, Inc. All rights reserved.         

設計領域は次のようになります。

  FlexReport for WinForms

163 Copyright © GrapeCity, Inc. All rights reserved.         

5. レポートをプレビュー表示します。

FlexReport for WinForms  

164 Copyright © GrapeCity, Inc. All rights reserved.         

SuperLabel カスタムフィールドカスタムフィールド

SuperLabel フィールドは、レポートに HTML テキストを挿入するために使用されます。

マップカスタムフィールドの追加で作成したレポートに SuperLabel フィールドを追加してみます。

1. レポートを開きます。

2. ページヘッダーの Visible プロパティを True に設定します。

3. SuperLabel フィールドをレポートのページヘッダーセクションにドロップします。

4. プロパティペインで、Text プロパティを次のテキストに設定します。

SuperLabel.Text

  FlexReport for WinForms

165 Copyright © GrapeCity, Inc. All rights reserved.         

<html><body><font color="Red">Customers and Suppliers by City</font></body></html>

5. デザイナには、SuperLabel フィールドが次のように表示されます。

6. レポートをプレビュー表示します。

FlexReport for WinForms  

166 Copyright © GrapeCity, Inc. All rights reserved.         

パラメータの操作パラメータの操作

パラメータの使用パラメータの使用

FlexReport のレポートパラメータを使用して、以下のタスクを実行できます。

データ連結

計算フィールドの式の作成

サブレポートの作成

  FlexReport for WinForms

167 Copyright © GrapeCity, Inc. All rights reserved.         

複数値パラメータの追加によるフィールドへの複数値の受け渡し

レポートへの値の暗黙的な受け渡し

カスケードパラメータを使用した大量データの管理

レポートへのパラメータの追加レポートへのパラメータの追加

レポートにパラメータを追加する手順は次のとおりです。

1. C1FlexReportDesigner.exe アプリケーションを実行します。

2. 新しいレポートを作成します。レポートをデータソースに連結します。これはメインデータソースです。レポートが設計

モードで開かれます。

3. [データ][データ]タブをクリックします。

4. [データソース][データソース]を右クリックし、[データソースの追加][データソースの追加]をクリックして、パラメータを指定するためのデータソースを追加

します。レポートに追加するパラメータと同じ数のデータソースを追加します。詳細については、「複数のデータソースの

追加」を参照してください。

5. [パラメータ][パラメータ]を右クリックし、コンテキストメニューから[パラメータの追加][パラメータの追加]を選択します。

6. パラメータを使用して実行するタスクに応じて、[プロパティ][プロパティ]ペインからパラメータのプロパティを設定します。

FlexReport for WinForms  

168 Copyright © GrapeCity, Inc. All rights reserved.         

この後のセクションでは、パラメータを使用して実行できるさまざまなタスクについて説明します。

データ連結データ連結

レポートパラメータでデータ連結を実行するには、次の手順に従います。

2. C1FlexReportDesigner.exe アプリケーションを実行します。

3. 新しいレポートを作成します。レポートをデータソースに連結します。これはメインデータソースです。レポートが設計

モードで開かれます。

4. [データ][データ]タブをクリックします。

5. [データソース][データソース]を右クリックし、[データソースの追加][データソースの追加]を選択します。[データソース][データソース]ダイアログボックスが表示されま

す。

6. DataSource1 などのデータソースデータソースを選択し、新しいデータソースを作成して、[接続]、[データプロバイダ]、[接続文字

列]などを設定します。

7. [プロパティ][プロパティ]ペインから Name プロパティを設定することで、DataSource1 の名前を変更できます。ここでは、Nameを dsCategories に変更しました。

8. [パラメータ][パラメータ]を右クリックし、[パラメータの追加][パラメータの追加]を選択して、パラメータを追加します。

9. [プロパティ][プロパティ]ペインで、AllowedValuesDefinition の横にある省略符ボタンをクリックしま

す。[[AllowedValuesDefinition エディタ]エディタ]ダイアログボックスが表示されます。

  FlexReport for WinForms

169 Copyright © GrapeCity, Inc. All rights reserved.         

10. 図のように、[データソースから][データソースから]ラジオボタンを選択し、データソースをパラメータに連結するために[データソース]、

[ラベル]、および[値]を選択します。[OK]をクリックします。

11. [プロパティ][プロパティ]ペインから、DataType を[[AllowedValuesDefinition エディタ]エディタ]の[値][値]のデータタイプと同じ値に設定し

ます。ここでは、Value=CategoryID は整数なので、DataType を整数に設定します。

計算フィールド計算フィールド

1. C1FlexReportDesigner.exe アプリケーションを実行します。

2. 新しいレポートを作成します。それを Products テーブルに連結します。レポートが設計モードで開かれます。

3. [データ][データ]タブをクリックします。

4. [データソース][データソース]を右クリックし、[データソースの追加][データソースの追加]を選択します。[データソース][データソース]ダイアログボックスが表示されます。

5. 別のデータソースを追加し、それを Products テーブルに連結します。このデータソースはパラメータ用として追加します。この

データソースの名前を「dsProducts」と指定します。

6. [パラメータ][パラメータ]を右クリックし、[パラメータの追加][パラメータの追加]を選択して、パラメータ Parameter0 を追加します。

7. [プロパティ][プロパティ]ペインで、AllowedValuesDefinition の横にある省略符ボタンをクリックします。[[AllowedValuesDefinitionエディタ]エディタ]ダイアログボックスが表示されます。

8. [データソースから][データソースから]ラジオボタンを選択し、[データソース]として[dsProducts]、[ラベル]として[ProductName]、および[値]

として[ProductName]を選択します。[[OK]]をクリックします。

9. もう 1 つのパラメータ Discount を追加します。

10. メインデータソースを編集します。次の SQL 文を記述します。

Select * from Products where ProductName=Parameter011. [挿入][挿入]タブで、[フィールド]グループから計算計算フィールドを追加します。VBScript エディタエディタが開きます。

12. エディタで次の式を入力します。

UnitPrice*Discount13. 計算フィールドを詳細セクションにドロップします。また、ページヘッダーセクションに、「Discounted Price」を表示するためのテ

キストフィールドを追加します。

FlexReport for WinForms  

170 Copyright © GrapeCity, Inc. All rights reserved.         

14. レポートをプレビュー表示します。Parameter0 から製品名を選択し、Discount パラメータに割引値を入力します。[パラメータ[パラメータ

の適用]の適用]をクリックすると、割引された価格が計算されます。

サブレポートサブレポート

サブレポートは、メインレポートに存在するデータに関する追加情報を表示する場合に便利です。レポートにパラメータを渡すように、

  FlexReport for WinForms

171 Copyright © GrapeCity, Inc. All rights reserved.         

サブレポートにパラメータを渡して、サブレポート内のデータ値間の関係を形成することもできます。

たとえば、メインレポート内に並べてレンダリングされるサブレポートにデータをフェッチするとします。このようなシナリオを実現するに

は、次の手順に従います。

1. C1FlexReportDesigner.exe アプリケーションを実行します。

2. 非連結モードで、メインレポートの新しいレポート定義を作成します。

3. もう 1 つのレポートを作成し、それを C1NWind.mdb にある Photos レポートに連結します。

4. [挿入][挿入]タブからサブレポートサブレポートフィールドをクリックします。利用できるレポートがすべて表示されます。

5. 2 つのサブレポートサブレポートフィールドをドロップして横に並べます。

6. 2 つのパラメータを追加します。これらのパラメータは、2 つのサブレポートに 1 つずつ渡されます。

7. 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 Place13. メインレポートを選択し、左側のサブレポートフィールドをクリックします。横の省略符をクリックすると、[[ParameterValues エエ

ディタ]ディタ]が表示されます。次のように名前と値を設定します。

14. 同様に、右側のサブレポートフィールドに対して、[名前][名前]を「prmPlace」、[値][値]を「prmRightPlace.Value」に設定します。デザイ

ンビューでは、次の図のようにレポートが表示されます。

15. レポートをプレビュー表示します。

FlexReport for WinForms  

172 Copyright © GrapeCity, Inc. All rights reserved.         

2 つのパラメータプロンプト(2 つのサブレポートに 1 つずつ)に値(場所)のリストが表示されていることがわかります。値を選択

し、[パラメータの適用][パラメータの適用]をクリックします。ここでは、左側のサブレポートで Chaumont、右側のサブレポートで Cote d'Azur を選択し

ました。

パラメータのカスケードパラメータのカスケード

カスケードパラメータは、一方のパラメータの値のリストがもう一方のパラメータで選択されている値に依存する場合に使用さ

れます。したがって、パラメータは 2 つ存在します。一方のパラメータのデータ値をリストするために使用されるデータソース

が、もう一方のパラメータによって変更されます。

たとえば、選択されたカテゴリに属する製品リストから製品を選択する場合は、以下を実行する必要があります。

1. 新しいレポートを作成します。そのレポートを C1NWind.mdb 内の Order Details に連結します。

2. 2 つのデータソース(2 つのパラメータに 1 つずつ)を追加します。

パラメータ prmCategory に値を渡すための dsCategoryパラメータ prmProduct に値を渡すための dsProduct

3. dsCategories を右クリックし、[編集][編集]を選択してデータソースを編集します。データプロバイダと接続文字列を設定し、

  FlexReport for WinForms

173 Copyright © GrapeCity, Inc. All rights reserved.         

次の SQL 文を記述します。

select * from categories

4. dsProducts に対して上記の手順を繰り返します。次の SQL 文を記述します。

select * from products where categoryid = prmCategory

5. メインメインデータソースを右クリックし、[編集][編集]を選択し、メインデータソースに対する SQL 文を記述します。

select * from [order details] where productid = prmProduct

6. 2 つのパラメータを追加します。

カテゴリを選択するための prmCategoryprmCategory パラメータで選択されたカテゴリに属する製品を選択するための prmProduct

7. 次のように、2 つのパラメータに対して AllowedValuesDefinition プロパティを設定します。

prmCategory prmProduct

データソースデータソース dsCategory dsProduct

ラベルラベル CategoryName ProductName

値値 CategoryID ProductID

8. [プレビュー]をクリックします。

FlexReport for WinForms  

174 Copyright © GrapeCity, Inc. All rights reserved.         

カテゴリを選択すると、そのカテゴリ内の製品のリストが、もう 1 つのパラメータに表示されます。次に、製品を選択し、[パラ[パラ

メータの適用]メータの適用]をクリックします。ここでは、Condiments カテゴリに含まれる Aniseed Syrup 製品のデータが表示されていま

す。

複数値パラメータ複数値パラメータ

複数値パラメータは、1 つのパラメータに対して複数の値を渡すことができるパラメータコレクションです。ユーザーは、データ

のリストから複数のデータを選択できます。

FlexReportDesigner アプリケーションでは、Parameter.MultiValue を True に設定することで、パラメータを複数値にするこ

とができます。

  FlexReport for WinForms

175 Copyright © GrapeCity, Inc. All rights reserved.         

複数値パラメータのあるレポートをプレビューすると、そのパラメータに連結された値のリストが表示されます。ここから、レ

ポートにレンダリングする値を選択できます。

パラメータの暗黙的な受け渡しパラメータの暗黙的な受け渡し

パラメータを暗黙的に渡すことで、レポートのレンダリング中に、ユーザープロンプト(ユーザー操作)なしでパラメータの値を渡

すことができます。

パラメータを暗黙的に渡すには、パラメータプロパティを定義し、Parameter.Hidden プロパティを True に設定します。

複数のデータソースの追加複数のデータソースの追加

FlexReport 定義には、複数のデータソースを設定することができます。FlexReportDesigner を使用してレポートに新しいデー

タソースを追加することは、とても簡単です。メインデータソースに連結された既存のレポートにデータソースを追加する手順

FlexReport for WinForms  

176 Copyright © GrapeCity, Inc. All rights reserved.         

は、次のとおりです。

1. [データ][データ]タブをクリックします。

2. [データソース][データソース]ノードを右クリックします。

3. [データソースの追加][データソースの追加]を選択します。

または

1. [ホーム][ホーム]タブをクリックします。

2. [データソース][データソース]オプションのドロップダウンをクリックします。

3. [データソースの追加][データソースの追加]をクリックします。

4. [データソース][データソース]ダイアログボックスが表示されます。[データソース]オプションの横にあるドロップダウンから、

DataSource1、DataSource2 などを選択して必要な数のデータソースを追加します。後で、データソースの Name プロ

パティからこれらのデータソースの名前を変更できます。

  FlexReport for WinForms

177 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport のデータソースの変更のデータソースの変更

新しいデータ連結レポートを作成する場合は、最初にデータソースを選択します。FlexReportDesigner アプリケーションを使

用すると、レポートやその要素の連結先になるすべてのデータソースを簡単に編集できます。

FlexReportDesigner を使用してレポートのデータソースを変更/編集する手順は、次のとおりです。

1. [データ][データ]タブをクリックします。

2. [データソース][データソース]ノードを展開します。

3. 編集するデータソースを右クリックし、[編集][編集]を選択します。

または

1. [ホーム][ホーム]をクリックします。

2. [データソース][データソース]オプションのドロップダウンをクリックします。

3. データソースを選択し、[編集][編集]をクリックします。

FlexReport for WinForms  

178 Copyright © GrapeCity, Inc. All rights reserved.         

4. [データソース][データソース]ダイアログボックスが表示されます。新しいデータソースを選択し、接続文字列を変更し、SQL 文を編集

したら、完了です。

FlexReportDesigner でデータのソート化でデータのソート化

FlexReportDesigner を使用すると、レポート内のデータを簡単にソートできます。レポートのデータをソートする手順は、次の

とおりです。

1. C1NWind.mdb を通してメインデータソースに連結された新しいレポート(Products Report)を作成します。次の図のよ

  FlexReport for WinForms

179 Copyright © GrapeCity, Inc. All rights reserved.         

うなレポートになるように、テキストフィールドと計算フィールドとして Product Name、Quantity Per Unit、および Stockを選択します。

2. Product Name に基づいてデータがソートされたレポートを表示するには、設計設計モードに移行します。

3. [データ][データ]タブをクリックします。

4. [データソース][データソース]ノードを展開します。

5. レポートの連結先のメインデータソースを展開します。

6. [ソート定義][ソート定義]を右クリックします。

FlexReport for WinForms  

180 Copyright © GrapeCity, Inc. All rights reserved.         

7. [ソート定義の追加][ソート定義の追加]を選択します。[ソート定義][ソート定義]ダイアログボックスが表示されます。

8. [[ProductName]]を選択し、[昇順][昇順]チェックボックスをオンにして、[[OK]]をクリックします。

9. レポートをプレビュー表示します。

  FlexReport for WinForms

181 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport のプレビューと印刷のプレビューと印刷

レポートを設計したら、レポートをプレビューしたり、印刷することができます。どちらのタスクも、いくつかのボタンをクリックす

るだけで実行できます。

デザイナで新しいレポートを作成したり、既存のレポートを開くと、レポートは設計モードで表示されます。

レポートをプレビューするには、[プレビュー] をクリックするか、ショートカットキーの[F5]を押します。

レポートを印刷するには、[ファイル][ファイル]メニューに移動し、[印刷] をクリックするか、ショートカットキーの[Ctrl]+[P]を押します。[印刷]オプションは、[プレビュー][プレビュー]モードでのみ有効です。[印刷]ダイアログボックスでは、プリンタの設定を

指定できます。

FlexReport for WinForms  

182 Copyright © GrapeCity, Inc. All rights reserved.         

[ページレイアウト]グループにあるオプションを使用して、ページ設定を編集することもできます。

FlexReportDesigner でのレポートのインポートでのレポートのインポート

FlexReportDesigner アプリケーションの最も強力な機能の 1 つは、Microsoft Access(.mdb)や Crystal Reports(.rpt)で作

成したレポートをインポートできることです。

この機能を使用するには、コンピュータに Access がインストールされている必要があります。デザイナにレポートをインポート

したら、Access は必要ありません。

  FlexReport for WinForms

183 Copyright © GrapeCity, Inc. All rights reserved.         

Access ファイルからレポートをインポートするには、[ファイル][ファイル]メニューをクリックし、メニューから[インポート][インポート]を選択します。イ

ンポートするファイルの名前の入力を求めるダイアログボックスが表示されます。

Microsoft Access レポートのインポートレポートのインポート

Microsoft Access ファイルをインポートするには、Microsoft Access ファイル(MDB または ADP)を選択します。デザイナがファイルをスキャ

ンし、インポートするレポートを選択するためのダイアログボックスが表示されます。

このダイアログボックスで、インポート処理を開始する前に、現在定義されているすべてのレポートを消去するかどうかも指定できます。

インポート処理は、ソースレポートのほとんどの要素を処理できます。ただし、次に挙げる要素は例外です。

イベントハンドラコードイベントハンドラコード

Access レポートは、VBA、マクロ、およびフォームを使用してレポートを動的に書式設定できます。C1FlexReport でも動的な書式設定

が可能ですが、C1FlexReport では VBScript だけが使用されるため、レポートのコードはすべて手作業で変換する必要があります。

フォーム指向のフィールドタイプフォーム指向のフィールドタイプ

FlexReport for WinForms  

184 Copyright © GrapeCity, Inc. All rights reserved.         

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(請求書)(請求書)

  FlexReport for WinForms

185 Copyright © GrapeCity, Inc. All rights reserved.         

処理は不要です。

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# でコードを書く場合でコードを書く場合

FlexReport for WinForms  

186 Copyright © GrapeCity, Inc. All rights reserved.         

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 に変換されました。

内部または外部データソースに連結されたレポートは、元のデータソースパスに変更を行う必要なく、インポートして実行でき

  FlexReport for WinForms

187 Copyright © GrapeCity, Inc. All rights reserved.         

ます。

FlexReportDesigner アプリケーションは、Crystal Reports をインポートする際に、次の変換をサポートします。

セクションセクション/サブセクションサブセクション

レポートヘッダー

ページヘッダー

グループヘッダー

詳細

グループフッター

ページフッター

レポートフッター

フィールドフィールド

テキストボックス

グラフ

ボックス

直線

ピクチャ

チェックボックス

サブレポート(手動によるパスの訂正が必要)

画像フィールド - BLOBField(ピクチャ)、OLEObject(ピクチャ)

データベースフィールド

クロスセクションボックスコントロール

特殊なフィールド特殊なフィールド

時刻書式

ページ番号

機能機能

テキストフィールドとデータベースフィールドを組み合わせた複雑な式("テキストテキスト" + [式式])、および集計

グループ化

パラメータ サマリーフィールド

パーセンテージ集計

テキストボックス書式(通貨、日付など)

KeepTogether(フィールド、セクション、サブセクション、グループ)

複数の結合クエリー

ハイパーリンク

テキストの回転

指定された順序でのグループ化

書式設定書式設定

テキストの書式設定

境界線

背景

次の画像は、FlexReportDesigner にインポートされた Crystal Report を示します。

FlexReport for WinForms  

188 Copyright © GrapeCity, Inc. All rights reserved.         

次の画像は、CRReportDesigner にインポートされた Crystal Report を示します。

  FlexReport for WinForms

189 Copyright © GrapeCity, Inc. All rights reserved.         

メモメモ: レポートをインポートする前に、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 ファイルを作成します。

非埋め込み(リンク)フォン

トを使用した PDF(*.pdf)Adobe の Acrobat ビューアまたはブラウザプラグインを備えたコンピュータ上で表示できる

PDF ファイルを作成します。

埋め込みフォントを使用し

た PDF/A(*.pdf)可搬性の高い埋め込みフォント情報を含む PDF ファイルを作成します。

RTF(*.rtf) 一般的なワードプロセッサ(Microsoft Word や WordPad)で開くことができる RTF ファイルを

作成します。これは、ページ付き XML ドキュメントまたは Open XML ドキュメントとして保存でき

ます。

Microsoft Excel 97(*.xls) Microsoft Excel で開くことができる XLS ファイルを作成します。

Microsoft Excel2007/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 へのエクスポートへのエクスポート

FlexReport for WinForms  

190 Copyright © GrapeCity, Inc. All rights reserved.         

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 では、フィールド、セクション、および

サブセクションの背景色を設定できます。背景色には、単色またはグラデーションを使用できます。

  FlexReport for WinForms

191 Copyright © GrapeCity, Inc. All rights reserved.         

次の画像は、背景色が設定されていないレポートヘッダーを示します。

レポートヘッダーに背景色を設定するには

1. 設計モードで、レポートのヘッダーヘッダーセクションを選択します。

2. プロパティプロパティペインで、Background プロパティの横にあるドロップダウンをクリックします。カラーパレットが開きます。

3. 背景の色を選択します。タブ([Web]、[システム]、[カスタム]、および[グラデーション])から色を選択できます。

4. レポートをプレビュー表示します。

5. 背景にグラデーション(直線状または放射状)を設定することもできます。グラデーションを設定するには、設計モードに

切り替えます。 6. レポートのヘッダーヘッダーセクションを選択します。

7. プロパティプロパティペインで、Background プロパティの横にあるドロップダウンをクリックします。[グラデーション]タブに移動

し、以下に示すオプションを使用して設定を編集します。

FlexReport for WinForms  

192 Copyright © GrapeCity, Inc. All rights reserved.         

8. 直線状のグラデーションを指定します。スライダをドラッグして、グラデーションの開始と終了を変更することもできま

す。

9. レポートをプレビュー表示します。レポートヘッダーは、次のように表示されます。

境界線境界線

FlexReportDesigner では、フィールド、セクション、およびサブセクションの境界線を簡単に設定できます。

フィールド/セクションを囲む境界線を設定するには

1. 周囲に境界線を表示するフィールドフィールドを選択します。

2. プロパティペインで、Borders プロパティの横にある省略符を選択します。[境界線プロパティ][境界線プロパティ]ダイアログボックスが開きます。

  FlexReport for WinForms

193 Copyright © GrapeCity, Inc. All rights reserved.         

3. 線の[スタイル][スタイル]と[幅][幅]を選択し、表示する境界線境界線([左]、[上]、[右]、[下]のすべて、いずれか 1 つ、または組み合わせ)を

選択します。色を選択し、[[OK]]をクリックします。

4. レポートヘッダーに角丸境界線を挿入してみます。レポートヘッダーレポートヘッダーを選択します。

5. 上記と同様に、線スタイル、線の幅、境界線、および色を設定します。

6. 角の[半径[半径 X]]と[半径[半径 Y]]を設定します。

7. レポートをプレビュー表示します。

FlexReport for WinForms  

194 Copyright © GrapeCity, Inc. All rights reserved.         

角丸を挿入する場合は、次の点に注意してください。

半径 X の範囲は、0 からフィールドの幅までです。

半径 Y の範囲は、0 からフィールドの高さまでです。

  FlexReport for WinForms

195 Copyright © GrapeCity, Inc. All rights reserved.         

レポートおよびドキュメントビューア(レポートおよびドキュメントビューア(C1FlexViewer コントロール)コントロール)

C1FlexViewer コントロールは、C1Report、C1FlexReport、SSRS、C1Document などのさまざまなドキュメントタイプをプレ

ビューするために使用できるプレビューコントロールです。対話式のユーザーフレンドリな UI を備えており、パラメータの表示/リセット、レポートレンダリングのリフレッシュ、アウトラインにて階層の表示、ブックマークを使用したレポートの場所へのジャン

プなどを行うことができます。詳細については、以下のトピックを参照してください。

FlexViewer の主な特長の主な特長

FlexViewer の主要な機能は次のとおりです。

使いやすい使いやすい UIFlexViewer は、対話式で使いやすく完全な機能を備えたリボンベースの最新の 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 ツールバーツールバー

FlexReport for WinForms  

196 Copyright © GrapeCity, Inc. All rights reserved.         

以下の画像のように、コントロールの上部に FlexViewer ツールバーが表示されます。

ツールバーの上部は、以下のショートカットコマンドボタンで構成されます。

コマンドボタンコマンドボタン コマンドボタン名コマンドボタン名 説明説明

戻る 前に開いたページに戻ることができます

進む 次のページに進むことができます

コピーするテキストの選択 コピーするテキストを選択します

FlexViewer ツールバーのすべてのコマンドボタンは、以下に示すグループに分かれます。

グループグループ グループ内のコマンドボタングループ内のコマンドボタン 説明説明

印刷レイアウト、停止、更新、パ

ラメータ、アウトライン、サムネイ

レポートページを印刷レイアウトで表示したり、

ビューを更新したり、プレビューを停止します。

パラメータを表示したり、レポートページのアウト

ラインやサムネイルを表示することもできます

ドキュメントの最初のページに移

動、ドキュメントの前のページに

移動、現在のページ番号、現在

のドキュメントのページ数、ド

キュメントの次のページに移動、

ドキュメントの最後のページに移

動、戻る、進む、ページセット

レポートの最初、最後、前、次のページに移動

できます。現在のページ番号が表示され、前後

に移動できます。[ページセット]ボタンを使用す

ると、ページではなくページのセットに移動でき

ます

ズーム、実際のサイズ、ページ

幅、ページ全体

[ズーム]ボタンを使用して[ズーム]ダイアログ

ボックスを開くことができます。[実際のサイズ]

は、ページを通常サイズの 100% にズームしま

す。[ページ幅]は、ウィンドウ幅に合わせてペー

ジをズームします。[ページ全体]は、ウィンドウ

に合わせてページをズームします

縦、横、ページ設定 レポートページの方向を縦長モードまたは横長

モードに変更できます。[ページ設定]では、現

在のレポートのページ設定を変更できます。

印刷、エクスポート、検索、ハン

ドツール、テキスト選択ツール、

テキストのコピー

レポートを印刷およびエクスポートできます。[検

索]ボタンを使用して、レポートのテキストを検索

できます。[ハンドツール]を使用して、マウスで

ウィンドウでスクロールできます。[テキスト選択

ツール]を使用して、コピーするテキストを選択

できます。[テキストのコピー]ボタンを使用し

て、選択テキストをコピーできます

  FlexReport for WinForms

197 Copyright © GrapeCity, Inc. All rights reserved.         

レポートのビューの回転レポートのビューの回転

FlexViewer では、要件に合わせて柔軟に、さまざまな角度にレポートビューを回転させることができます。レポートビューをさ

まざまな角度に回転させるには、C1FlexViewer クラスの RotateView プロパティを設定します。RotateView プロパティは、

ビューの回転角度を記述する FlexViewerRotateView 列挙に含まれる次の値を受け取ります。

NoRotation: ビューに回転が適用されません。

Rotation180: ビューを 180 度回転します。

Rotation90Clockwise: ビューを時計回りに 90 度回転します。

Rotation90CounterClockwise: ビューを反時計回りに 90 度回転します。

設計時のレポートビューの回転設計時のレポートビューの回転

次の手順を実行して、設計時に FlexViewer でレポートビューを回転させることができます。

1. FlexViewer コントロールを右クリックし、プロパティを選択します。

2. プロパティプロパティウィンドウで、表示されたリストから RotateView プロパティの値を選択して、さまざまな角度でレポートを回

転させます。

プログラムによるレポートビューの回転プログラムによるレポートビューの回転

レポートビューを回転させるには、最初にレポートを作成してロードし、次に FlexViewer コントロールでレポートをプレビュー

する必要があります。その後、FlexViewerRotateView 列挙を使用してレポートビューを回転させます。次のコード

は、FlexViewerRotateView 列挙の使用例を示します。

c1FlexViewer1.RotateView = FlexViewerRotateView.Rotation90Clockwise

C#

c1FlexViewer1.RotateView = FlexViewerRotateView.Rotation90Clockwise;

Visual Basic

FlexReport for WinForms  

198 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport とと FlexViewer の連結の連結

レポートをレンダリングするには、FlexViewer コントロールにレポートを連結する必要があります。レポート定義を作成し、

データソースを定義して C1FlexReport コンポーネントにロードしたら、レポートをプリンタやプレビューコントロール

C1FlexViewer にレンダリングしたり、別のファイル形式にエクスポートすることができます。

C1FlexViewer コントロールでレポートをプレビューするには、次の手順に従います。

1. ツールボックスから、C1FlexViewer コントロールをダブルクリックしてプロジェクトに追加します。

2. プロパティウィンドウで、C1FlexViewer.Dock プロパティを Fill に設定します。

3. マウスで Windows フォームを選択し、ドラッグしてサイズ変更します。この例では、プレビューパネルが見やすくなるよ

うに、フォームを 600x500 にサイズ変更しました。

4. フォームをダブルクリックし、Form_Load イベントハンドラに次のコードを入力します。

'レポート定義をロードしますC1FlexReport1.Load(@"..\..\Products Report.flxr", "Products Report")'レポートをプレビュー表示しますC1FlexViewer1.DocumentSource = C1FlexReport1

'レポート定義をロードしますc1FlexReport1.Load(@"..\..\Products Report.flxr", "Products Report");'レポートをプレビュー表示しますc1FlexViewer1.DocumentSource = c1FlexReport1;

Visual Basic

C#

  FlexReport for WinForms

199 Copyright © GrapeCity, Inc. All rights reserved.         

FlexReport for WinForms  

200 Copyright © GrapeCity, Inc. All rights reserved.         

タスク別ヘルプタスク別ヘルプ

タスクベースのヘルプは、ユーザーが .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 + 1if 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 = vbWhiteendif

8. [プレビュー][プレビュー]ボタンをクリックして、交互表示の背景を持つレポートをプレビュー表示します。

  FlexReport for WinForms

201 Copyright © GrapeCity, Inc. All rights reserved.         

メモ:メモ: レポートの完全なサンプルについては、ComponentOneSamples\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 プロパティで、各パラメータのプロパティを次のように指定します。

pCondition pHighlightColor

値 ラベル - Unit price greater than 50、値 - CInt(1) ラベル - Red、値 - Red

ラベル - Unit price greater than 100、値 - CInt(2) ラベル - Green、値 - Green

FlexReport for WinForms  

202 Copyright © GrapeCity, Inc. All rights reserved.         

7. 設計モードで、プロパティペインの上にあるドロップダウンリストから[詳細][詳細]を選択します(このセクションに、条件付き

書式設定を追加するフィールドが含まれるため)。

8. OnFormat プロパティを見つけ、そのプロパティの横にある省略符省略符ボタンをクリックします。

9. VBScript エディタエディタが表示されます。コードエディタで次の式を入力します。

row = row + 1if row mod 2 = 1 Then rowColor = Rgb(238, 214, 200)Else rowColor = "Transparent"EndIfdoHighlight = Falseif pCondition = 1 Then doHighlight = UnitPrice > 50ElseIf pCondition = 2 Then doHighlight = UnitPrice > 100ElseIf pCondition = 3 Then doHighlight = UnitsInStock > 50EndIfif doHighlight Then textColor = pHighlightColorElse textColor = Rgb(90, 70, 50)EndIfDetail.BackColor = rowColorfor i = 0 to Detail.Fields.Count - 1 Detail.Fields(i).BackColor = rowColor Detail.Fields(i).ForeColor = textColorNext

10. レポートをプレビュー表示します。

  FlexReport for WinForms

203 Copyright © GrapeCity, Inc. All rights reserved.         

メモ:メモ: レポートの完全なサンプルについては、ComponentOneSamples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定

義ファイルの「Conditional Formatting」レポートを参照してください。使用するデータベース C1NWind.mdbも、ComponentOne Samples フォルダにあります。

カスタム用紙サイズの指定カスタム用紙サイズの指定

デフォルトでは、C1FlexReport は、デフォルトの用紙サイズとデフォルトのプリンタを使用してレポートを作成します。

用紙のサイズと方向は、PaperSize プロパティと Orientation プロパティを使用して指定できます。ただし、選択した用紙サイ

ズを現在のプリンタで使用できるかどうかがレンダリング前にチェックされ、選択した設定が無効な場合は、デフォルトの用紙

サイズに変更されます。

使用可能なプリンタに関係なく、特定の用紙サイズを指定して使用する場合は、PaperSize プロパティを Custom に設定

し、Layout.CustomWidth プロパティと Layout.CustomHeight プロパティにページのサイズ(ツイップ単位)を設定します。

FlexReportDesigner を使用してレポートにを使用してレポートに 8.5" x 25" のカスタム用紙サイズを指定するにはのカスタム用紙サイズを指定するには

1. C1FlexReportDesigner を開きます。

2. 新しいレポートを作成するか、既存のレポートを開きます。C1FlexReportDesigner にレポートを開いたら、レポートの

プロパティを変更することができます。

FlexReport for WinForms  

204 Copyright © GrapeCity, Inc. All rights reserved.         

3. 設計モードで、プロパティペインの上にあるドロップダウンリストからレポートを選択します。

4. Layout を見つけ、プロパティノードを展開して、すべての使用可能なプロパティを表示します。

5. 次のプロパティを設定します。

CustomHeight=36000CustomWidth=12472PaperSize=Custom

このように指定すると、インストールされているプリンタや実際に使用できる用紙サイズに関係なく、独自の用紙サイズを使用

できます。

メモ:メモ: レポートの完全なサンプルについては、ComponentOneSamples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定

義ファイルの「Custom Paper Size」レポートを参照してください。使用するデータベース C1NWind.mdbも、ComponentOne Samples フォルダにあります。

動的ページヘッダーの追加動的ページヘッダーの追加

状況に応じてレポートのページごとに異なるページヘッダーを表示する動的ページヘッダーを生成したい場合があります。そ

れには、PageHeader の OnFormat プロパティを使用します。

たとえば、レポートの偶数ページと奇数ページに異なるレポートヘッダーを表示したいとします。動的ページヘッダーを使用し

てレポートを作成するには、次の手順を実行します。

1. C1FlexReportDesigner を開きます。

2. 新しいレポートを作成するか、既存のレポートを開きます。

3. 設計設計モードに切り替えてレポートの編集を開始します。

4. PageHeader セクションに2つのサブセクション、OddPageHeader と EvenPageHeader を追加します。

OddPageHeader セクションは奇数ページに表示され、EvenPageHeader セクションは偶数ページに表示されます。

5. 上記の各サブセクションに、テキストフィールドやパラグラフフィールドを追加し、奇数および偶数ページにヘッダーを表

示するための式を含めます。

6. PageHeader の OnFormat プロパティに移動し、プロパティの横にある省略符をクリックします。

7. VBScript エディタが表示されます。エディタで次の VBScript 式を入力します。odd = (page mod 2 <> 0)PageHeader.SubSections(0).Visible = oddPageHeader.SubSections(1).Visible = not odd

8. レポートの最初のページにページヘッダーを表示しないようにするには、レポートの Layout.PageHeader プロパティ

を NotWithReportHdr に設定します。

9. レポートをプレビュー表示します。

  FlexReport for WinForms

205 Copyright © GrapeCity, Inc. All rights reserved.         

メモメモ: レポートの完全なサンプルについては、ComponentOneSamples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定

義ファイルの「Dynamic Page Header」レポートを参照してください。使用するデータベース C1NWind.mdbも、ComponentOne Samples フォルダにあります。

ガターマージンの作成ガターマージンの作成

ガターマージンは、マージンに追加される特別なスペースです(綴じ代など)。ガターマージンがあると、ページをバインダーや

冊子などにまとめやすくなります。

レポートにガターマージンを追加するには、奇数ページの左マージンを大きくします。それには、奇数ページでは

Layout.MarginLeft の値を大きくし、偶数ページではデフォルト値を使用します。

レポートにガターマージンを作成するには、次の手順を実行します。

1. C1FlexReportDesigner を開きます。

2. 新しいレポートを作成するか、既存のレポートを開きます。

3. 設計モードで、プロパティウィンドウのドロップダウンリストから[詳細]を選択します。これで、セクションで使用できるプ

ロパティが表示されます。

4. レポートの OnOpen プロパティに移動し、省略符ボタンをクリックします。VBScript エディタが表示されます。エディタで

次の VBScript 式を入力します。cnt = 0

FlexReport for WinForms  

206 Copyright © GrapeCity, Inc. All rights reserved.         

gutter = report.layout.marginleftmarginRight = report.layout.marginRight

5. レポートの OnOpen プロパティに移動し、省略符ボタンをクリックします。VBScript エディタが表示されます。エディタ

で次の VBScript 式を入力します。if page mod 2 = 1 then Report.layout.marginleft = gutter Report.Layout.marginright = marginRightelse Report.layout.marginleft = gutter - 1440 Report.Layout.marginright = marginRight + 1440EndIf

6. レポートをプレビュー表示します。

メモメモ: レポートの完全なサンプルについては、ComponentOneSamples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定義ファイルの「Gutter」レポートを参照してください。使用するデータベース C1NWind.mdbも、ComponentOne Samples フォルダにあります。

グループ化とソートグループ化とソート

このトピックでは、"Groups and Sorting" レポートを使用して、グループ化、グループの合計、小計、ソートがレポートでどのように行われるかを示し

ます。

グループ化グループ化

グループ化により、レコードの共通する属性に基づいてレコードのグループを作成することができます。たとえば、このレポートでは、同じ

EmployeeID を持つすべてのレコードが 1 つのグループにまとめられて EmployeeGroup になっています。FlexReport のグループ化機能の詳細に

ついては、「データのグループ化」を参照してください。

  FlexReport for WinForms

207 Copyright © GrapeCity, Inc. All rights reserved.         

このレポートには、EmployeeGroup と OrderGroup という 2 つのグループが含まれており、それぞれ EmployeeID と OrderID をグループ化の基

準としています。ここでは、EmployeeGroup が最初に追加され、次に OrderGroup が追加されています。そのため、データはまず Employee ID に基づいてグループ化され、次に、このグループ内に Order ID に基づいてサブグループが作成されます。

レポートでは、グループの合計と小計も計算できます。合計や小計を計算するには、TextField で =Sum(OrderSum) 式を使用します。この式を含

む TextField を EmployeeGroup ヘッダーセクションにドロップすると、従業員別の全注文の売上高合計が計算され、これがグループの合計になり

ます。同様に、この同じ式を含む TextField を OrderGroup フッターセクションにドロップすると、グループの小計が計算されます。

ソートソート

ソートを使用して、データを昇順または降順に整理することができます。FlexReport では、グループはグループ式を使用してソートされます。ただ

し、Group.SortExpression プロパティを使用してグループのソート方法を変更することができます。式には集計関数を含めることができます。たと

えば、このレポートでは、集計関数を含む Sum(OrderSum) 式を使用してグループがソートされます。ソートの詳細については、「データのソート」を

参照してください。

このレポートでは、EmployeeGroup が売上高合計に基づいて降順でソートされます。しかし、グループをアルファベット順にソートすることもできま

す。また、パラメータパラメータパネルでソートオプションを指定することもできます。この方法については、以下の手順を参照してください。

FlexReportDesigner でレポートを作成するにはでレポートを作成するには

手順手順 1:ゼロからのレポートの作成:ゼロからのレポートの作成

手順手順 2:データソースへのレポートの接続:データソースへのレポートの接続

手順手順 3:計算フィールドとパラメータの追加:計算フィールドとパラメータの追加

手順手順 4:データのグループ化およびソート:データのグループ化およびソート

手順手順 5:レポートの表示:レポートの表示

手順手順 1:ゼロからのレポートの作成:ゼロからのレポートの作成

1. C1FlexReportDesigner を開き、[ファイル][ファイル]→[新規][新規]に移動します。

2. [レポート][レポート]タブの[新しいレポート][新しいレポート]ドロップダウンをクリックし、[空のレポート][空のレポート]を選択してレポートを作成します。

手順手順 2:データソースへのレポートの接続:データソースへのレポートの接続

1. [データ][データ]タブに切り替えてメインデータソースを右クリックし、[編集][編集]を選択して[データソース][データソース]ウィザードを開いて編集を開始します。

2. [データプロバイダ][データプロバイダ]ドロップダウンから[[OLEDB データプロバイダ]データプロバイダ]を選択し、[接続文字列][接続文字列]テキストボックスの隣にある省略符ボタンをクリッ

クして、C1NWind.mdb ファイルを選択します。

3. [[SQL ステートメント]ステートメント]タブで、次の 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 = Employees.EmployeeID

手順手順 3:計算フィールドとパラメータの追加:計算フィールドとパラメータの追加

1. [計算フィールド][計算フィールド]タブに切り替え、2 つの計算フィールドを追加し、次のプロパティを設定します。

Name FullName OrderSum

Expression FirstName & " " & LastName UnitPrice * Quantity

2. [データ][データ]タブで、[パラメータ][パラメータ]をクリックして[パラメータの追加][パラメータの追加]を選択し、pEmployeeSortExpression、pEmployeeSortOrder、pRepeatEmployeeHeader の 3 つのパラメータを追加します。

3. プロパティプロパティウィンドウで、パラメータのプロパティを次のように設定します。

pEmployeeSortExpression pEmployeeSortOrder pRepeatEmployeeHeader

Prompt Employees Sort Expression Employees Sort Order Repeat Employee Header

Value Sum(OrderSum) Descending False

DataType String String Boolean

FlexReport for WinForms  

208 Copyright © GrapeCity, Inc. All rights reserved.         

4. AllowedValuesDefinition プロパティの隣にある省略符ボタンをクリックして[値][値]ラジオボタンを選択し、[追加][追加]ボタンをクリックし

て、pEmployeeSortExpression パラメータと pEmployeeSortOrder パラメータの値を次のように追加します。

pEmployeeSortExpression

Label Alphabetical Sales

Value FullName Sum(OrderSum)

pEmployeeSortOrder

Label NoSort Ascending Descending

Value NoSort Ascending Descending

[追加][追加]ボタンでは、空白の値が追加されます。値を編集するには、[ラベル][ラベル]の下をダブルクリックして必要なラベルを追加し、[値][値]の下をダ

ブルクリックして必要な値を追加します。

手順手順 4:データのグループ化およびソート:データのグループ化およびソート

1. 設計設計モードに切り替えてレポートの編集を開始します。

2. [ホーム][ホーム]タブで[グループ][グループ]をクリックし、EmployeeGroup を追加し、次に OrderGroup を追加します。

グループは、[グループ]ウィザードに表示される順番でネストされます。したがって、EmployeeGroup の後に OrderGroup を追加したので、

OrderGroup は EmployeeGroup のサブグループとして追加されます。

3. [グループ][グループ]ウィザードで、新しく作成したグループのプロパティを次のように設定します。

EmployeeGroup OrderGroup

GroupBy EmployeeID OrderID

KeepTogether KeepFirstDetail KeepWholeGroup

Sort Ascending NoSort

ShowGroupFooter True True

ShowGroupHeader True True

OutlineLabel =FullName -

4. [[OK]]をクリックして、[グループ][グループ]ウィザードを閉じます。

5. EmployeeGroup_Header に[挿入][挿入]タブから TextField を 3 つ追加し、次のプロパティを設定します。

TextField1.Text =FullName

TextField2.Text Total Sales:

TextField3.Text =Sum(OrderSum)

Sum(OrderSum) は、グループの合計として、従業員別の全注文の売上高合計を計算します。

6. EmployeeGroup_Footer に ParagraphField を追加し、次の式を使用してグループの合計を表示します。

Total Sales for {FullName}:{Sum(OrderSum)}7. OrderGroup_Header を右クリックし、コンテキストメニューから[[SubSection の追加]の追加]を選択して、ヘッダーを 2 つの部分に分割します。

8. OrderGroup_Header/ <A> に TextField をさらに 6 つ追加し、次のプロパティを設定します。

TextField4.Text Order ID

TextField5.Text =OrderID

TextField6.Text Order Date

TextField7.Text =OrderDate

TextField8.Text Shipped Date

TextField9.Text =ShippedDate

9. OrderGroup_Header/ <B> に、Product Name、Unit Price、Quantity の 3 つの TextField を追加します。

10. 詳細詳細セクションに、OrderGroup_Header/ <B> の TextField に対応する 3 つの TextField を追加し、プロパティを次のように設定します。

TextField13.Text =ProductName

TextField14.Text =UnitPrice

TextField15.Text =Quantity

  FlexReport for WinForms

209 Copyright © GrapeCity, Inc. All rights reserved.         

11. OrderGroup_Footer で、Text プロパティが =Sum(OrderSum) に設定されている TextField を使用して、注文グループの小計を表示しま

す。

12. プロパティプロパティウィンドウで、プロパティリストの上にあるドロップダウンからレポート名を選択します。

13. レポートの GlobalScripts プロパティに移動し、VBScript エディタで次の式を記述します。

EmployeeGroup.SortExpression = pEmployeeSortExpression.ValueEmployeeGroup.Sort = pEmployeeSortOrder.Value

14. レポートの OnOpen プロパティに移動し、VBScript エディタで次の式を記述します。If pEmployeeSortOrder = "NoSort" Then fldSortDesc = "No Sorting"Else fldSortDesc = pEmployeeSortExpression.DisplayText & " (" & pEmployeeSortOrder.DisplayText & ")"EndIf

EmployeeGroup_Header.Repeat = pRepeatEmployeeHeader.Value

手順手順 5:レポートの表示:レポートの表示

1. レポートをプレビュー表示します。

2. プレビュープレビューモードで、[表示]グループの[パラメータ][パラメータ]をクリックしてパラメータパネルを開き、パラメータを適用します。

メモ:メモ: レポートの完全なサンプルについては、ComponentOne Samples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダに

ある FlexCommonTasks.flxr レポート定義ファイルの「Groups and Sorting」レポートを参照してください。使用するデータベース

C1NWind.mdb も、ComponentOne Samples フォルダにあります。

カスケードパラメータカスケードパラメータ

レポートで大量のデータを管理するには、カスケードパラメータを使用する必要があります。カスケードパラメータを使用する

と、あるパラメータの値リストが別のパラメータで選択された値によって変わるように、関連する一連のパラメータを定義するこ

とができます。

ここでは、pCountry と pCustomers の 2 つのパラメータを含むレポートを作成します。国の選択後に、選択した国の顧客を 1人以上選択して、それらの顧客のすべての注文をリストすることができます。このレポートのパラメータを表示するために、

FlexReport for WinForms  

210 Copyright © GrapeCity, Inc. All rights reserved.         

ReportParameter.DisplayText プロパティを使用します。

カスケードパラメータを使用するレポートを作成してみます。

1. 新しいレポートを作成し、次の SQL 文を使用してメインデータソースに連結します。Select orderid, orders.customerid, companyname, employees.firstname,employees.lastname, orderdate, RequiredDate, shippeddate, Freightfrom (orders inner join customers on orders.customerid = customers.customerid)inner join employees on orders.employeeid = employees.employeeidwhere orders.CustomerID in pCustomers

2. 計算フィールド]タブに切り替えて、次の式を使用してSalespersonという名前のフィールドを追加します。FirstName & " " & lastname

3. dsCountriesという新しいデータソースを追加し、次のSqlステートメントを使用してレポートをデータソースに連結しま

す。Select Country, Count(*) as CustomerCountfrom Customers group by Country order by Country

4. [計算フィールド] タブに切り替えて、次の式を使用してCountryDescという名前のフィールドを追加します。Country & " (" & CustomerCount & " customers)"

5. dsCustomers という名前の別のデータソースを追加し、次の SQL 文を使用してデータソースにレポートを連結します。Select CustomerID, CompanyName from Customers where Country = pCountry

6. pCountry というパラメータを追加し、プロパティウィンドウから次のプロパティを設定します。

DataType String

Prompt Country

Value Germany

7. AllowedValuesDefinitionプロパティの横にある省略記号ボタンをクリックし、From Data Source ラジオボタンを選

択して、次のプロパティを設定します。

Data Source dsCountries

Label CountryDesc

Value Country

8. pCustomers というパラメータを追加し、プロパティウィンドウから次のプロパティを設定します。

DataType String

MultiValue True

Prompt Customers

Value [MORGK, LEHMS]

9. AllowedValuesDefinition プロパティの横にある省略記号ボタンをクリックし、From Data Source ラジオボタンを選

択して、次のプロパティを設定します。

Data Source dsCustomers

Label CompanyName

Value CustomerID

10. レポートをプレビューします。

  FlexReport for WinForms

211 Copyright © GrapeCity, Inc. All rights reserved.         

メモメモ: レポートの完全なサンプルについては、ComponentOneSamples\Winforms\C1FlexReport\CS\FlexCommonTasks フォルダにある FlexCommonTasks.flxr レポート定義

ファイルの「Cascading Parameters」レポートを参照してください。使用するデータベース C1NWind.mdbも、ComponentOne Samples フォルダにあります。

FlexReport for WinForms  

212 Copyright © GrapeCity, Inc. All rights reserved.