PowerTools ActiveReports for .NET 9.0J > ActiveReportsユーザーガイド > 基本操作 > セクションレポートの基本操作 > スクリプトでコードの使用 |
セクションレポートでは、スクリプトを使用し、コントロール、関数、クラス、名前空間などにアクセスできます。スクリプトでクラスを作成してメソッドを呼び出すか、Windowsフォームからレポートのスクリプトにコードを追加する処理を実行できます。次のトピックでは、スクリプトの基本的な使い方について説明します。
以下の手順は、Visual Studioのプロジェクトにセクションレポート(コード、またはXML)のテンプレートを追加していることを前提としています。詳細は、「プロジェクトにレポートを追加する」を参照してください。
コントロールをアクセスする
下記のサンプルコードは、Detailセクションに貼り付けたTextBox1のTextプロパティの値を「こんにちは」に変更して表示しています。
Visual Basic
Visual Basicスクリプト(Detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
Me.TextBox1.Text = "こんにちは" |
または
Visual Basicスクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
CType(rpt.Sections("Detail1").Controls("TextBox1"), TextBox).Text = "こんにちは" |
C#
C#スクリプト(Detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
this.textBox1.Text = "こんにちは"; |
または
C#スクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
((TextBox)rpt.Sections["detail"].Controls["textBox1"]).Text = "こんにちは"; |
クラス内の関数をアクセスする
AddNamedItemメソッドを使用し、スクリプトからプロジェクト内のクラスの関数をアクセスできます。データベース接続文字列やSQLクエリなどの機密情報を、RPXファイルに保存せずにスクリプトに保存する場合は便利です。
Visual Basic
Visual Basicコード |
コードのコピー
|
---|---|
Public Class clsMyItem End Class |
C#
C#コード |
コードのコピー
|
---|---|
public partial class clsMyItem { } |
Visual Basic
Visual Basicコード(クラス内に張り付けします) |
コードのコピー
|
---|---|
Public Function getMyItem() As String getMyItem = "こんにちは" End Function |
C#
C#コード(クラス内に張り付けします) |
コードのコピー
|
---|---|
public string getMyItem() { return "こんにちは"; } |
Visual Basic
Visual Basicコード(ReportStartイベントの前または内に張り付けます) |
コードのコピー
|
---|---|
Me.AddNamedItem("myItem", new clsMyItem()) |
C#
C#コード(ReportStartイベントの前または内に張り付けます) |
コードのコピー
|
---|---|
this.AddNamedItem("myItem", new clsMyItem()); |
Visual Basic
Visual Basicスクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
Me.TextBox1.Text = myItem.getMyItem() |
または
Visual Basicスクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
CType(rpt.Sections("Detail1").Controls("TextBox1"), TextBox).Text = myItem.getMyItem() |
C#
C#スクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
this.textBox1.Text = myItem.getMyItem(); |
または
C#スクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
((TextBox)rpt.Sections["detail"].Controls["textBox1"]).Text = myItem.getMyItem(); |
名前空間を参照する
AddScriptReferenceを使用し、.NETまたは他の名前空間を参照できます。AddScriptReferenceは、スクリプトがプロジェクトで初期化されていないアセンブリをアクセスする場合にのみ必要です。例えば、スクリプトで「System.Data.DataSet」をアクセスするために、"AddScriptReference("System.Data.Dll")"を呼び出して参照を追加できます。
Visual Basic
Visual Basicコード(Formのコード内に張り付けます。YourReportNameを実際のレポート名に変更します。) |
コードのコピー
|
---|---|
Private Sub runReport() Dim rpt as new YourReportName rpt.AddScriptReference("System.Data.dll") rpt.Run() End Sub |
C#
C#コード(Formのコード内に張り付けます。YourReportNameを実際のレポート名に変更します。) |
コードのコピー
|
---|---|
private void runReport() { YourReportName rpt = new YourReportName; rpt.AddScriptReference("System.Data.dll"); rpt.Run(); } |
スクリプトにコードを追加する
FormのコードビューでAddCodeメソッドを使用し、スクリプトにコードを追加できます。AddCodeメソッドでは、実行時にスクリプトでコードセグメントを挿入します。これは、データベース接続文字列やSQLクエリ文字列などの機密情報を、RPXファイルに保存せずにスクリプト内で使用する場合や、動的にスクリプトのコードを変更したい場合などに便利です。
Visual Basic
Visual Basicコード(レポートのクラス内に張り付けます) |
コードのコピー
|
---|---|
Public Function addThisCode() As String Dim sCode As String = "Public Function ShowACMessage() As String" + Environment.NewLine + "ShowACMessage = ""my Added Code""" + Environment.NewLine + "End Function" addThisCode = sCode End Function |
C#
C#コード(レポートのクラス内に張り付けます) |
コードのコピー
|
---|---|
public string addThisCode() { string sCode = "public string ShowACMessage(){return \"my Added Code\";}"; return sCode; } |
Visual Basic
Visual Basicコード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
---|---|
Me.AddCode(addThisCode())
|
C#
C#コード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
---|---|
this.AddCode(addThisCode()); |
Visual Basic
Visual Basicスクリプト(Detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
Me.TextBox1.Text = ShowACMessage() |
または
Visual Basicスクリプト(Detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
CType(rpt.Sections("Detail1").Controls("TextBox1"), TextBox).Text = ShowACMessage() |
C#
C#スクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
this.textBox1.Text = ShowACMessage(); |
または
C#スクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
((TextBox)rpt.Sections["detail"].Controls["textBox1"]).Text = ShowACMessage(); |
メソッドを呼び出すクラスを作成する
スクリプトでクラスを作成し、メソッドを呼び出すことができます。
Visual Basic
Visual Basicスクリプト(スクリプトのタブ内に張り付けます) |
コードのコピー
|
---|---|
Public Class MyFuncs Public Sub New() End Sub Public Function ShowMyString() As String Return "サンプル文字列" End Function End Class |
C#
C#スクリプト(スクリプトのタブ内に張り付けます) |
コードのコピー
|
---|---|
public class MyFuncs { public MyFuncs() { } public string ShowMyString() { return "サンプル文字列"; } } |
Visual Basic
Visual Basicスクリプト(Detail1_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
Dim f As MyFuncs = New MyFuncs() Me.TextBox1.Text = f.ShowMyString |
または
Visual Basicスクリプト(Detail1_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
Dim f As MyFuncs = New MyFuncs() CType(rpt.Sections("Detail1").Controls("TextBox1"), TextBox).Text = f.ShowMyString |
C#
C#スクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
MyFuncs f = new MyFuncs(); this.textBox1.Text = f.ShowMyString(); |
または
C#スクリプト(detail_Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
MyFuncs f = new MyFuncs(); ((TextBox)rpt.Sections["detail"].Controls["textBox1"]).Text = f.ShowMyString(); |
メモ: レポートを参照するには、従来の"rpt"も使用可能ですが、"this"(C#)または"Me"(Visual Basic)キーワードの使用を推奨します。 |