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