レポートのデータソース(接続文字列やSQL文など)は、動的に変更できますか?
対象製品
ActiveReports for .NET 9.0J
詳細
レポートのデータソース(接続文字列やSQL文など)を動的に設定する方法は、レポートの形式によって異なります。以下の内容をご覧ください。
レポートの作成前(Runメソッド実行前またはReportStartイベント内)にこのプロパティを更新することで、レポートのデータソースを動的に変更することが可能です。具体的な方法については、製品ヘルプの以下の内容をご参照ください。
ActiveReportsユーザーガイド
- 基本操作
- セクションレポートの基本操作
- セクションレポートでのデータ連結
- 実行時にデータソースを変更する
- サンプルとチュートリアル
- チュートリアル
- セクションレポートのチュートリアル
- データ
- 実行時にレポートデータソースを変更する
- よくある質問
- セクションレポート
- データベース
- 「ODBCデータ ソースを使用する」
- 「レポートのデータソースにストアドプロシージャを使用する」
- 「CSVや配列データを元にレポートを作成する」
- Web
- 「Web上で動的なレポートを作成する(1)」
- 「Web上で動的なレポートを作成する(2)」
- 共通の項目(ページレポート、RDLレポートとセクションレポート)
- データベース
- 「Oracle データ ソースを使用する」
また、製品ヘルプの以下のトピックで解説している付属のサンプルでは、DataReaderやDataTableなど、さまざまな形式のデータクラスをレポートのデータソースに設定する方法を紹介しています。あわせてご参照ください。
ActiveReportsユーザーガイド
- サンプルとチュートリアル
- サンプル
- セクションレポートのサンプル(Standard)
- Data
- データバウンド サンプル
ActiveReportsユーザーガイド
- 基本操作
- ページレポート/RDLレポートの基本操作
- データ連結
- 実行時にレポートとデータソースの連結
- 実行時にOleDBデータソースと連結する
なお、上記の製品ヘルプでは実行時に新規のデータソースを設定する方法をご紹介しておりますが、デザイン時に設定したデータソースを、実行時に変更することも可能です。
以下のサンプルコードは、デザイン時に設定したデータソースの接続文字列と、データセットのSQL文を変更する一例です。
◆サンプルコード(VB.NET)
◆サンプルコード(C#)
なお、上記のようにデータセットの内容(SQL)を動的に変更することは可能ですが、フィールド構成は常に同じになるようにしてください。
セクションレポートの場合
セクションレポートのデータソースは、DataSourceプロパティから設定することが可能です。レポートの作成前(Runメソッド実行前またはReportStartイベント内)にこのプロパティを更新することで、レポートのデータソースを動的に変更することが可能です。具体的な方法については、製品ヘルプの以下の内容をご参照ください。
ActiveReportsユーザーガイド
- 基本操作
- セクションレポートの基本操作
- セクションレポートでのデータ連結
- 実行時にデータソースを変更する
- サンプルとチュートリアル
- チュートリアル
- セクションレポートのチュートリアル
- データ
- 実行時にレポートデータソースを変更する
- よくある質問
- セクションレポート
- データベース
- 「ODBCデータ ソースを使用する」
- 「レポートのデータソースにストアドプロシージャを使用する」
- 「CSVや配列データを元にレポートを作成する」
- Web
- 「Web上で動的なレポートを作成する(1)」
- 「Web上で動的なレポートを作成する(2)」
- 共通の項目(ページレポート、RDLレポートとセクションレポート)
- データベース
- 「Oracle データ ソースを使用する」
また、製品ヘルプの以下のトピックで解説している付属のサンプルでは、DataReaderやDataTableなど、さまざまな形式のデータクラスをレポートのデータソースに設定する方法を紹介しています。あわせてご参照ください。
ActiveReportsユーザーガイド
- サンプルとチュートリアル
- サンプル
- セクションレポートのサンプル(Standard)
- Data
- データバウンド サンプル
ページレポート/RDLレポートの場合
ページレポートやRDLレポートのデータソースを動的に設定する具体的な方法については、製品ヘルプの以下の内容をご参照ください。ActiveReportsユーザーガイド
- 基本操作
- ページレポート/RDLレポートの基本操作
- データ連結
- 実行時にレポートとデータソースの連結
- 実行時にOleDBデータソースと連結する
なお、上記の製品ヘルプでは実行時に新規のデータソースを設定する方法をご紹介しておりますが、デザイン時に設定したデータソースを、実行時に変更することも可能です。
以下のサンプルコードは、デザイン時に設定したデータソースの接続文字列と、データセットのSQL文を変更する一例です。
◆サンプルコード(VB.NET)
Private Sub Form1_Load(...) Handles MyBase.Load
' レポートインスタンスを生成します。
Dim rpt As New GrapeCity.ActiveReports.PageReport()
' レポート定義のファイルをロードします。
rpt.Load(New System.IO.FileInfo("PageReport1.rdlx"))
' 接続文字列を変更します
rpt.Report.DataSources(0).ConnectionProperties.DataProvider = "OLEDB"
rpt.Report.DataSources(0).ConnectionProperties.ConnectString _
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Reels.mdb"
' 変更するSQL文を定義します
Dim tmpQuery As [String] = "Select Top 10 * From Movie"
' SQL文を変更します
rpt.Report.DataSets(0).Query.CommandText = _
GrapeCity.ActiveReports.Expressions.ExpressionInfo.Parse(tmpQuery, _
GrapeCity.ActiveReports.Expressions.ExpressionResultType.[String])
Dim pageDocument As New GrapeCity.ActiveReports.Document.PageDocument(rpt)
Viewer1.LoadDocument(pageDocument)
End Sub
' レポートインスタンスを生成します。
Dim rpt As New GrapeCity.ActiveReports.PageReport()
' レポート定義のファイルをロードします。
rpt.Load(New System.IO.FileInfo("PageReport1.rdlx"))
' 接続文字列を変更します
rpt.Report.DataSources(0).ConnectionProperties.DataProvider = "OLEDB"
rpt.Report.DataSources(0).ConnectionProperties.ConnectString _
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Reels.mdb"
' 変更するSQL文を定義します
Dim tmpQuery As [String] = "Select Top 10 * From Movie"
' SQL文を変更します
rpt.Report.DataSets(0).Query.CommandText = _
GrapeCity.ActiveReports.Expressions.ExpressionInfo.Parse(tmpQuery, _
GrapeCity.ActiveReports.Expressions.ExpressionResultType.[String])
Dim pageDocument As New GrapeCity.ActiveReports.Document.PageDocument(rpt)
Viewer1.LoadDocument(pageDocument)
End Sub
◆サンプルコード(C#)
private void Form1_Load(...)
{
// レポートインスタンスを生成します。
GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport();
// レポート定義のファイルをロードします。
rpt.Load(new System.IO.FileInfo("PageReport1.rdlx"));
// 接続文字列を変更します
rpt.Report.DataSources[0].ConnectionProperties.DataProvider = "OLEDB";
rpt.Report.DataSources[0].ConnectionProperties.ConnectString =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Reels.mdb";
// 変更するSQL文を定義します
String tmpQuery = "Select Top 10 * From Movie";
// SQL文を変更します
rpt.Report.DataSets[0].Query.CommandText =
GrapeCity.ActiveReports.Expressions.ExpressionInfo.Parse(tmpQuery,
GrapeCity.ActiveReports.Expressions.ExpressionResultType.String);
GrapeCity.ActiveReports.Document.PageDocument pageDocument =
new GrapeCity.ActiveReports.Document.PageDocument(rpt);
viewer1.LoadDocument(pageDocument);
}
{
// レポートインスタンスを生成します。
GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport();
// レポート定義のファイルをロードします。
rpt.Load(new System.IO.FileInfo("PageReport1.rdlx"));
// 接続文字列を変更します
rpt.Report.DataSources[0].ConnectionProperties.DataProvider = "OLEDB";
rpt.Report.DataSources[0].ConnectionProperties.ConnectString =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Reels.mdb";
// 変更するSQL文を定義します
String tmpQuery = "Select Top 10 * From Movie";
// SQL文を変更します
rpt.Report.DataSets[0].Query.CommandText =
GrapeCity.ActiveReports.Expressions.ExpressionInfo.Parse(tmpQuery,
GrapeCity.ActiveReports.Expressions.ExpressionResultType.String);
GrapeCity.ActiveReports.Document.PageDocument pageDocument =
new GrapeCity.ActiveReports.Document.PageDocument(rpt);
viewer1.LoadDocument(pageDocument);
}
※ | RDLレポートのように、複数のデータセットを定義している場合には、DataSetsのインデックスを0以外の数値に変更してください。(DataSets(x).Nameからデータセット名を取得することも可能です。) |
なお、上記のようにデータセットの内容(SQL)を動的に変更することは可能ですが、フィールド構成は常に同じになるようにしてください。
関連情報
- レポートのデータソースにストアドプロシージャを使用する方法は?
- Oracleデータベースは使用できますか?
- コントロールのプロパティを動的に変更する方法は?
- レポートを呼び出すコード側からレポートに値を渡す方法は?
キーワード
HowTo データ