PowerTools ActiveReports for .NET 11.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
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#
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; } |