PowerTools ActiveReports for .NET 9.0J > ActiveReportsユーザーガイド > よくある質問 > 共通の項目(ページレポート、RDLレポートとセクションレポート) > データベース |
Oracle データ ソースを使用する
設計時に直接Oracleデータソースをレポートに設定する機能は用意されていません。ActiveReportsの[レポートデータソース]ダイアログから Microsoft OLE DB Provider for Oracle を選択して設定しても、ActiveReportsはSystem.Data.OleDbクラスを使用するようになっているため、エラーが発生します。 実行時に、オラクル社から提供されているOracle Data Provider for .NET(ODP.NET)を使用してデータソースを取得し、ActiveReportsのDataSourceプロパティに設定するか、 または、.NET Framework Data Provider for Oracleを使用することができます。
※ODP.NETは「Oracle Technology Network (OTN) Japan」からダウンロードすることができます。
http://www.oracle.com/technology/global/jp/index.html
メモ: .NET Framework Data Provider for Oracleを使用する方法は、.NET 4以降、互換性のために残されています。 |
OracleDataReader(接続型)使用して、バウンドレポートを作成するサンプルコードです。
Visual Basic
Visual Basicコード |
コードのコピー
|
---|---|
Dim m_cnnString As String Dim sqlString As String Dim m_cnn As OleDb.OleDbConnection Dim m_reader As OleDb.OleDbDataReader Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ' OracleDataReader(接続型)を使用したバウンドレポート。 Dim conn As New Oracle.DataAccess.Client.OracleConnection Dim cmd As New Oracle.DataAccess.Client.OracleCommand conn.ConnectionString = "User ID=scott;Password=tiger;Data Source=orcl" conn.Open() ' CommandTextにSQLを設定します。 cmd.Connection = conn cmd.CommandText = "select * from emp" ' OracleDataReaderオブジェクトを生成します。 Dim rdr As Oracle.DataAccess.Client.OracleDataReader rdr = cmd.ExecuteReader ' レポートを生成します。 Dim rpt As New SectionReport1 ' レポートのDataSourceプロパティにOracleDataReaderをセットします。 rpt.DataSource = rdr rpt.Run() Me.Viewer1.Document = rpt.Document ' Oracle接続をCloseします。 rdr.Close() conn.Close() End Sub |
C#
C#コード |
コードのコピー
|
---|---|
string m_cnnString; string sqlString; OleDb.OleDbConnection m_cnn; OleDb.OleDbDataReader m_reader; private void Form1_Load(System.Object sender, System.EventArgs e) { // OracleDataReader(接続型)を使用したバウンドレポート。 Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection(); Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(); conn.ConnectionString = "User ID=scott;Password=tiger;Data Source=orcl"; conn.Open(); // CommandTextにSQLを設定します。 cmd.Connection = conn; cmd.CommandText = "select * from emp"; // OracleDataReaderオブジェクトを生成します。 Oracle.DataAccess.Client.OracleDataReader rdr = default(Oracle.DataAccess.Client.OracleDataReader); rdr = cmd.ExecuteReader; // レポートを生成します。 SectionReport1 rpt = new SectionReport1(); // レポートのDataSourceプロパティにOracleDataReaderをセットします。 rpt.DataSource = rdr; rpt.Run(); this.Viewer1.Document = rpt.Document; // Oracle接続をCloseします。 rdr.Close(); conn.Close(); } |
DataSet(非接続型)を使用して、バウンドレポートを作成するサンプルコードです。
Visual Basic
ページレポートまたはRDLレポートを作成するには、次のコードを使用します。
VisualBasicコード |
コードのコピー
|
---|---|
Private Sub Button1_Click(...) Handles Button1.Click Dim mstrSql As New StringBuilder ' 空のページレポートを作成します。 Dim def As New GrapeCity.ActiveReports.PageReport ' レポートレイアウトを読み込みます。 def.Load(New System.IO.FileInfo("※※レポートファイル指定※※")) 'SQL作成 mstrSql.Length = 0 mstrSql.AppendLine("※※データ取得用SQL設定※※") ' LocateDataSourceイベントを発生させるため、 ' データソース設定を"Dataset Provider"に変更します。 With def.Report.DataSources(0).ConnectionProperties .DataProvider = "DATASET" .ConnectString = "" End With ' LocateDataSourceイベントのハンドラを設定します。 AddHandler def.Document.LocateDataSource, _ AddressOf pDoc_LocateDataSource ' レポートを実行します。(省略可) def.Run() ' PDFを出力します。 Dim export As New PdfExport() export.NeverEmbedFonts = "*" export.Export(def.Document, "※※出力先パス指定※※") End Sub ' 実行時のレポートのデータソースを設定するためのイベント Private Sub pDoc_LocateDataSource(ByVal sender As Object, _ ByVal args As GrapeCity.ActiveReports.LocateDataSourceEventArgs) Dim cnn As New Oracle.DataAccess.Client.OracleConnection Dim cmd As New Oracle.DataAccess.Client.OracleCommand Dim dsList As New DataSet Dim iCnt As Integer cnn.ConnectionString = "※※接続文字列※※" cmd.Connection = cnn ' DataAdapterを使用して、結果セットをDataSetに ' 格納します。 cmd.CommandText = "Select * from emp" Dim adp As New _ Oracle.DataAccess.Client.OracleDataAdapter(cmd) adp.Fill(dsList, "EmpList") ' DataSet内のDataTableをページレポートのデータソースと ' して設定します。 ' ※args.Data に設定できるのは DataTable と DataView の ' いずれかのみです。 args.Data = dsList.Tables("EmpList") End Sub |
セクションレポート(コードベース)を作成するには、次のコードを使用します。
Visual Basicコード |
コードのコピー
|
---|---|
Dim m_cnnString As String Dim sqlString As String Dim m_cnn As OleDb.OleDbConnection Dim m_reader As OleDb.OleDbDataReader Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ' DataSet(非接続型)を使用したバウンドレポート。 Dim cnn As New Oracle.DataAccess.Client.OracleConnection Dim cmd As New Oracle.DataAccess.Client.OracleCommand Dim dsList As New DataSet Dim iCnt As Integer cnn.ConnectionString = "user id=scott;password=tiger;data source=orcl" cmd.Connection = cnn ' DataAdapterを使用して、結果セットをDataSetに格納。 cmd.CommandText = "Select * from emp" Dim adp As New Oracle.DataAccess.Client.OracleDataAdapter(cmd) adp.Fill(dsList, "EmpList") ' レポートを生成します。 Dim rpt As New SectionReport1 ' レポートのDataSourceプロパティにOracleDataReaderをセットします。 rpt.DataSource = dsList.Tables("EmpList") rpt.Run() Me.Viewer1.Document = rpt.Document End Sub |
C#
ページレポートまたはRDLレポートを作成するには、次のコードを使用します。
C#コード |
コードのコピー
|
---|---|
private void Button1_Click(object sender, EventArgs e) StringBuilder mstrSql = new StringBuilder(); // 空のページレポートを作成します。 GrapeCity.ActiveReports.PageReport def = new GrapeCity.ActiveReports.PageReport(); // レポートレイアウトを読み込みます。 def.Load(new System.IO.FileInfo("YourReport")) //データセットのデータプロバイダが使用されている場合、LocateDataSourceを呼び出します。 { var _with1 = def.Report.DataSources(0).ConnectionProperties; _with1.DataProvider = "DATASET"; _with1.ConnectString = ""; } // LocateDataSourceイベントのハンドラを設定します。 { def.Document.LocateDataSource += pDoc_LocateDataSource; } // レポートを実行します。(省略可) def.Run() // PDFを出力します。 PdfExport export = new PdfExport(); export.NeverEmbedFonts = "*"; export.Export(def.Document, "OutputLocation"); // 実行時のレポートのデータソースを設定するためのイベント private void pDoc_LocateDataSource(object sender, LocateDataSourceEventArgs args) Oracle.DataAccess.Client.OracleConnection cnn = new Oracle.DataAccess.Client.OracleConnection(); Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(); DataSet dsList = new DataSet(); int iCnt = 0; cnn.ConnectionString = "※※接続文字列※※"; cmd.Connection = cnn; // DataAdapterを使用して、結果セットをDataSetに // 格納します。 { cmd.CommandText = "Select * from emp"; Oracle.DataAccess.Client.OracleDataAdapter adp = new Oracle.DataAccess.Client.OracleDataAdapter(cmd); adp.Fill(dsList, "EmpList"); } // DataSet内のDataTableをページレポートのデータソースと // して設定します。 // ※args.Data に設定できるのは DataTable と DataView の // いずれかのみです。 { args.Data = dsList.Tables("EmpList") } |
セクションレポート(コードベース)を作成するには、次のコードを使用します。
C#コード |
コードのコピー
|
---|---|
string m_cnnString; string sqlString; OleDb.OleDbConnection m_cnn; OleDb.OleDbDataReader m_reader; private void Form1_Load(System.Object sender, System.EventArgs e) { // DataSet(非接続型)を使用したバウンドレポート。 Oracle.DataAccess.Client.OracleConnection cnn = new Oracle.DataAccess.Client.OracleConnection(); Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(); DataSet dsList = new DataSet(); int iCnt = 0; cnn.ConnectionString = "user id=scott;password=tiger;data source=orcl"; cmd.Connection = cnn; // DataAdapterを使用して、結果セットをDataSetに格納。 cmd.CommandText = "Select * from emp"; Oracle.DataAccess.Client.OracleDataAdapter adp = new Oracle.DataAccess.Client.OracleDataAdapter(cmd); adp.Fill(dsList, "EmpList"); // レポートを生成します。 SectionReport1 rpt = new SectionReport1(); // レポートのDataSourceプロパティにOracleDataReaderをセットします。 rpt.DataSource = dsList.Tables("EmpList"); rpt.Run(); this.Viewer1.Document = rpt.Document; } |
[プロジェクト]メニューの[参照の追加]をクリックし、System.Data.OracleClient に対する参照を設定します。
Visual Basic
Visual Basicコード |
コードのコピー
|
---|---|
Private Sub SectionReport1_ReportStart(sender As System.Object, e As _ System.EventArgs) Handles MyBase.ReportStart ' データベースと連結します。 Dim m_cnn As OracleConnection Dim m_cnnString As String = "User ID=scott;Password=tiger;Data Source=orcl" Dim sqlString As String = "SELECT * FROM Emp" m_cnn = New OracleConnection(m_cnnString) Dim m_Cmd As OracleCommand = New OracleCommand(sqlString, m_cnn) m_cnn.Open() ' DataReaderと連結します。 Dim m_reader As OracleDataReader m_reader = m_Cmd.ExecuteReader() Me.DataSource = m_reader End Sub |
C#
C#コード |
コードのコピー
|
---|---|
private void SectionReport1_ReportStart(System.Object sender, System.EventArgs e) { // データベースと連結します。 OracleConnection m_cnn = default(OracleConnection); string m_cnnString = "User ID=scott;Password=tiger;Data Source=orcl"; string sqlString = "SELECT * FROM Emp"; m_cnn = new OracleConnection(m_cnnString); OracleCommand m_Cmd = new OracleCommand(sqlString, m_cnn); m_cnn.Open(); // DataReaderと連結します。 OracleDataReader m_reader = default(OracleDataReader); m_reader = m_Cmd.ExecuteReader(); this.DataSource = m_reader; } |