ActiveReportsでは、スクリプトを組み込んだレポートを作成でき、このレポートをXMLベースのRPXファイル形式で保存することが可能です。RPXファイルとして保存されたレポートにスクリプトを組み込むことで、リコンパイルせずに後からレポートをロード、実行、またはビューワコントロールに表示することができます。このチュートリアルでは、以下の作業を行います。
- Visual StudioプロジェクトにActiveReportを追加する
- レポートのレイアウトを作成する
- コントロールのデータを取得するためにスクリプトを追加する
- 隔行で色を変更するスクリプトを追加する
- リソースからXMLベースのレポートをロードする
 |
メモ: このチュートリアルは、Northwindデータベース(NWind.mdb)のテーブルを使用しています。Northwindデータベース(..ActiveReportsNET9\Data\NWind.mdb)へのアクセス権限が必要です。 |
チュートリアルを完了すると、次のレポートが作成されます。
設計時のレイアウト
実行時のレイアウト
Visual StudioプロジェクトにActiveReportを追加する
- Visual Studioで新規プロジェクトを開きます。
- [プロジェクト]メニューから [新しい項目の追加]を選択します。
- [新しい項目の追加]ダイアログで[ActiveReports 9.0Jセクションレポート(XML)]を選択し、ファイルの名前を「rptScript」に変更します。
- [追加]ボタンをクリックします。
- [ソリューションエクスプローラー]で、[rptScript.rpx]ファイルを選択し、[プロパティ]ウィンドウにある[ビルドアクション]プロパティを[埋め込まれたリソース]に設定します。
詳細は「プロジェクトにレポートを追加する」を参照してください。
レポートのレイアウトを作成する
- Visual Studioツールボックスで、[ActiveReports 9セクション]ノードを展開します。「TextBox」コントロールをdetailセクション上に3つ追加し、各テキストボックスのプロパティを以下のように設定します。
TextBox1
プロパティ名 |
値 |
DataField |
ProductName |
Text |
商品名 |
Location |
0, 0in |
Size |
2.3, 0.2in |
TextBox2
プロパティ名 |
値 |
DataField |
QuantityPerUnit |
Text |
数量 |
Location |
2.4, 0in |
Size |
1.5, 0.2in |
TextBox3
プロパティ名 |
値 |
DataField |
UnitsInStock |
Text |
在庫 |
Location |
4, 0in |
Size |
1, 0.2in |
- コントロール下の余白をクリックしてDetailセクションを選択します。[プロパティ]ウィンドウからCanShrinkプロパティを「True」に設定して空白のスペースを除去します。
コントロールのデータを取得するためにスクリプトを追加する
- レポートデザイナの下部にある[スクリプト]タブをクリックし、[スクリプト]エディタを開きます。
- [スクリプト]エディタで以下のスクリプトを追加します。
 |
注意: FieldCollectionには、DataInitializeイベントまたはFetchDataイベントを使用してアクセスしてください。他のイベントからアクセスした場合、動作は保障されません。 |
Visual Basic
Visual Basicスクリプト([スクリプト]エディタ内に貼り付けます) |
コードのコピー
|
Private Shared m_cnn As System.Data.OleDb.OleDbConnection
Public Sub ActiveReport_ReportStart()
'レポートをデータソースに接続します。
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\ActiveReportsNET9\Data\Nwind.mdb"
Dim sqlString As String = "SELECT * FROM products"
m_cnn = new System.Data.OleDb.OleDbConnection(connString)
Dim m_Cmd As System.Data.OleDb.OleDbCommand = new System.Data.OleDb.OleDbCommand(sqlString, m_cnn)
If m_cnn.State = System.Data.ConnectionState.Closed Then
m_cnn.Open
End If
rpt.DataSource = m_Cmd.ExecuteReader
End Sub
Public Sub ActiveReport_ReportEnd()
'データリーダーとの接続を閉じる
m_cnn.Close
End Sub
|
C#
C#スクリプト([スクリプト]エディタ内に貼り付けます) |
コードのコピー
|
private static System.Data.OleDb.OleDbConnection m_cnn;
public void ActiveReport_ReportStart()
{
//レポートをデータソースに接続します。
string m_cnnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\ActiveReportsNET9\Data\Nwind.mdb";
string sqlString = "SELECT * FROM products";
m_cnn = new System.Data.OleDb.OleDbConnection(m_cnnString);
System.Data.OleDb.OleDbCommand m_Cmd = new System.Data.OleDb.OleDbCommand(sqlString, m_cnn);
if(m_cnn.State == System.Data.ConnectionState.Closed)
{
m_cnn.Open();
}
rpt.DataSource = m_Cmd.ExecuteReader();
}
public void ActiveReport_ReportEnd()
{
//データリーダーとの接続を閉じる
m_cnn.Close();
}
|
隔行で色を変更するスクリプトを追加する
- レポートデザイナの下部にある[スクリプト]タブをクリックし、[スクリプト]エディタを開きます。
- 隔行でDetailセクションの色を変更させるために、以下のスクリプトを追加します。
Visual Basic
Visual Basicスクリプト([スクリプト]エディタ内に貼り付けます) |
コードのコピー
|
Dim b as boolean = true
Sub Detail1_Format
if b then
Me.Detail1.BackColor = Color.AliceBlue
b= false
else
me.Detail1.BackColor = Color.Cyan
b = true
End If
End Sub
|
C#
C#スクリプト([スクリプト]エディタ内に貼り付けます) |
コードのコピー
|
bool color = true;
public void Detail1_Format()
{
if(color)
{
this.Detail1.BackColor = System.Drawing.Color.AliceBlue;
color = false;
}
else
{
this.Detail1.BackColor = System.Drawing.Color.Cyan;
color = true;
}
}
|
リソースからXMLベースのレポートをロードする
設計時にレポートを表示するには、プレビュータブをクリックします。または、レポートをViewerコントロールで開きます。
- Visual StudioのツールボックスからActiveReports ViewerコントロールをWindows フォーム上にドラッグし、Dockプロパティを「Fill」に設定します。
- Windows フォームのタイトルバーをダブルクリックし、Form_Loadイベントのイベント処理メソッドを作成します。以下のコードを追加し、RPXファイルをビューワでロードします。
Visual Basic
Visual Basicスクリプト(Form_Loadイベントの内に貼り付けます) |
コードのコピー
|
Dim sectionReport As New GrapeCity.ActiveReports.SectionReport()
Dim xtr As New System.Xml.XmlTextReader("..\..\rptScript.rpx")
sectionReport.LoadLayout(xtr)
xtr.Close()
Viewer1.LoadDocument(sectionReport)
|
C#
C#スクリプト(Form_Loadイベントの内に貼り付けます) |
コードのコピー
|
GrapeCity.ActiveReports.SectionReport sectionReport = new GrapeCity.ActiveReports.SectionReport();
System.Xml.XmlTextReader xtr = new System.Xml.XmlTextReader(@"..\..\rptScript.rpx");
sectionReport.LoadLayout(xtr);
xtr.Close();
viewer1.LoadDocument(sectionReport);
|
関連トピック