ActiveReports for .NET 18.0J
データベース
ActiveReportsユーザーガイド > よくある質問 > 共通の項目(ページレポート/RDLレポート/セクションレポート) > データベース

Oracle データ ソースを使用する

設計時に直接Oracleデータソースをレポートに設定する機能は用意されていません。

セクションレポートの[レポートデータソース]ダイアログから、「Microsoft OLE DB Provider for Oracle」を選択して設定しても、内部ではSystem.Data.OleDbクラスを使用するようになっているため、エラーが発生します。 実行時に、オラクル社から提供されている「Oracle Data Provider for .NET(ODP.NET)」を使用してデータソースを取得し、セクションレポートの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以降、互換性のために残されています。
ODP.NETを使用する場合

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;
}
.NET Framework Data Provider for Oracleを使用する場合

[プロジェクト]メニューの[参照の追加]をクリックし、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;
}

関連トピック