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 ウィザードの最初の画面で、省略符ボタンをクリックしてデータソースを選択します。次に、有効なデータソースのリストから[ストアドプロシージャ]を選択します。
[次へ]を選択し、ウィザードを続行します。
他の形式のデータのロードと同様に、次の 2 つのオプションがあります。
DataSource の ConnectionString プロパティと RecordSource プロパティを使用してデータソースを選択できます。
デザイナで、(省略符[...]ボタンをクリックして)DataSource ダイアログボックスを使用して接続文字列を選択し、使用するテーブルまたは sproc をリストから選択します。次に例を示します。
コードのコピー
|
|
---|---|
connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data |
この例では、ストアドプロシージャ名にスペースが含まれているため、それが角かっこで囲まれています。
任意の方法でデータソースを作成し、それを DataSource の Recordset プロパティに割り当てることができます。
この方法では、コードを記述する必要がありますが、どこかにデータがキャッシュされており、それを使用して複数のレポートを作成する場合に役立ちます。これは、上記の方法より優先されます。
使用する接続/アダプタのタイプ(OleDb、SQL、Oracle など)によって構文は異なります。簡単に正しい構文を使用するには、Visual Studio のサーバーエクスプローラーからフォームにテーブルまたは sproc をドラッグします。これで、すべての必要な要素が正しく追加されるので、コードを調べて重要な部分を確認できます。
ストアドプロシージャは、その名前を指定することでデータソースとして使用できます。sproc にパラメータがある場合は、名前をパラメータとして渡します。たとえば、MSSQL と ADVENTURE_WORKS.mdf データベースに基づいて構築されたレポート定義において、C1FlexReportDesigner で指定された SQL 要求は次のとおりです(ADVENTUREWORKS_DATA.MDF のパスは適宜調整が必要)。
コードのコピー
|
|
---|---|
PARAMETERS Employee Int 290; |
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; |