| 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;
}
|
|