FlexReport for WinForms
FlexReport のデータ連結

You learnt how to create a report definition and save it in .flxr files using the FlexReportDesigner application. In this topic, you will see how to load the data from a data source or execute data-binding using the FlexReport component, which loads and displays data from the data source specified in the report definition file.

FlexReport でレポートを作成するには、レポート定義の他に実際のデータが必要です。通常は、データベースからデータを取得しますが、他の場所から取得することもできます。以下のセクションでは、他のソースからデータを取得する方法を確認します。

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

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

プロパティ 説明
ConnectionString The ConnectionString property specifies the database that contains the data.
RecordSource The RecordSource property specifies which table, stored procedure, or SQL command to use for retrieving the data.

The code snippet depicts how to set the data source programmatically using these properties:

C#
コードのコピー
// DataSourceを初期化します
DataSource ds = flexReport.DataSource;
ds.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\GPCTAdmin\Documents\ComponentOne Samples\Common\C1NWind.mdb";
ds.RecordSource = "Employees";

これらのプロパティを設定すると、C1FlexReport はデータソースを初期化し、これを使用してデータベースから自動的にデータをロードします。これは、「クイックスタート」で説明するコードまたはデザイナを使用したデータソースの初期化と同じです。

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

ストアドプロシージャ(sproc)は、複数のアプリケーションにまたがるロジックの一貫した実装に役立つほか、パフォーマンスを向上させ、ユーザーがデータベース内のテーブルの詳細を知る必要をなくします。ストアドプロシージャの大きな利点の 1 つは、データベースがレコードセットをフィルタ処理するためのパラメータを渡すことができることです。これにより、返されるデータセットが少量になるので、レポートをより速くより簡単に操作できます。

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

ストアドプロシージャによるレポートへのデータの挿入は、SQL 文や直接テーブルを使用する方法と違いがありません。FlexReport ウィザードの最初の画面で、省略符ボタンをクリックしてデータソースを選択します。次に、有効なデータソースのリストから[ストアドプロシージャ]を選択します。

Select the Data Source for the new report.

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

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

DataTableオブジェクトからのデータの取得

FlexReport の外部にあるデータを操作し、それを DataTable オブジェクトにロードしなければならないアプリケーションはよくあります。このような場合は、DataTable オブジェクトをレポートデータソースとして使用して、レポートのレンダリング時にデータを再ロードする無駄を省くことができます。

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

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

C#
コードのコピー
// キャッシュまたはセキュリティで保護されたカスタムプロバイダから DataTable をロードします
 DataTable dt = GetMyDataTable();
 // レポート定義をロードします(データソースを設定する前)
 c1FlexReport1.Load(@"reportFile", "reportName");
 // DataTable をデータソースとして使用します
 c1FlexReport1.DataSource.Recordset = dt;

カスタムデータソースオブジェクトからのデータの取得

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

IC1FlexReportRecordset は、事実上どのようなデータの集合にも簡単に追加できる簡潔で実装しやすいインタフェースです。これは、DataTable オブジェクトを作成し、それにすべてのデータをコピーする方法より効率的であることが多くあります。たとえば、カスタムデータソースオブジェクトを使用して、ファイルシステムやカスタム .xml ファイルまたはカスタム .flxr ファイルをラップできます。

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

C#
コードのコピー
// カスタムデータソースオブジェクトを取得します
IC1FlexReportRecordsetrs=(IC1FlexReportRecordset)GetMyCustomDataSource();
// レポート定義をロードします(データソースを設定する前)
flexreport.Load(@"reportFile","reportName");
 
// C1FlexReport コンポーネントでカスタムデータソースオブジェクトを使用します
flexreport.DataSource.Recordset=rs;
Note: WinForms .NET 5 Edition does not include rich design-time support yet. We will enhance it in the future releases.