| GrapeCity ActiveReports for .NET 12.0J > ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > スクリプト > スクリプトと単純なレポート |
ActiveReportsでは、スクリプトを使用することで、XMLファイルに保存されたレポートレイアウトに、コードを含めることができます。RPXファイルをXMLファイルに保存するときにスクリプトを含めることで、後からデザイナを使用せずに、レポートをロード、実行し、直接ビューワコントロールに表示できます。このチュートリアルでは、スクリプトを使用し、単純なスタンドアロンレポートを作成する方法について紹介します。
このトピックでは、以下のタスクを行います。
![]() |
メモ:このチュートリアルは、Northwindデータベース(Nwind.mdb)のテーブルを使用しています。Northwindデータベース(..ActiveReportsNET12\Data\Nwind.mdb)へのアクセス権限が必要です。 |
チュートリアルを完了すると、次のようなレポートが作成されます。
Visual StudioプロジェクトにActiveReportを追加する
詳細は、「プロジェクトにレポートを追加する」を参照してくだざい。
レポートをデータソースに接続する
![]() |
ヒント: [レポートエクスプローラ]ノードの下にフィールドを表示するために以下の手順を行います。 |
| SQLクエリ |
コードのコピー
|
|---|---|
SELECT * FROM categories INNER JOIN products ON categories.categoryid =
products.categoryid ORDER BY products.categoryid, products.productid
|
|
レポートのレイアウトを作成する
| プロパティ名 | プロパティの値 |
|---|---|
| Name | GroupHeader1 |
| BackColor | LightBlue |
| CanShrink | True |
| DataField | CategoryName |
| GroupKeepTogether | All |
| KeepTogether | True |
TextBox1
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | CategoryName |
| Location | 0, 0 in |
| Size | 6.5, 0.2 in |
| BackColor | CadetBlue |
| Font Bold | True |
| Font Size | 12 |
TextBox2
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | Description |
| Location | 0, 0.2 in |
| Size | 6.5, 0.2 in |
| BackColor | CadetBlue |
Label1
| プロパティ名 | プロパティの値 |
|---|---|
| Text | 商品名 |
| Location | 0, 0.4 in |
| Size | 1, 0.2 in |
| Font Bold | True |
Label2
| プロパティ名 | プロパティの値 |
|---|---|
| Text | 在庫数 |
| Location | 5.5, 0.4 in |
| Size | 1, 0.2 in |
| Font Bold | True |
| Alignment | Right |
TextBox1
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | ProductName |
| Location | 0, 0 in |
| Size | 5.5, 0.2 in |
TextBox2
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | UnitsInStock |
| Location | 5.5, 0 in |
| Size | 1, 0.2 in |
| Alignment | Right |
| プロパティ名 | プロパティの値 |
|---|---|
| BackColor | PaleGreen |
| CanShrink | True |
TextBox1
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | TotalLabel |
| Location | 2.5, 0 in |
| Size | 3, 0.2 in |
| Font Bold | True |
TextBox2
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | ProductName |
| Location | 5.5, 0 in |
| SummaryType | Subtotal |
| SummaryFunc | Count |
| SummaryRunning | Group |
| SummaryGroup | GroupHeader1 |
| Alignment | Right |
Label1
| プロパティ名 | プロパティの値 | ||
|---|---|---|---|
| Location | 0, 0.25 in | ||
| Size | 6.5, 0.2 in | ||
| BackColor | White (小計の後に、空白スペースを作成します) | ||
| Text |
|
コントロールからデータを取得するためにスクリプトを追加する
![]() |
注意: FieldCollectionには、DataInitializeイベントまたはFetchDataイベントを使用してアクセスしてください。他のイベントからアクセスした場合、動作は保障されません。 |
Visual Basic
| Visual Basicコード(スクリプトエディタウィンドウに貼り付けます) |
コードのコピー
|
|---|---|
Private Shared m_reader As System.Data.OleDb.OleDbDataReader
Private Shared m_cnn As System.Data.OleDb.OleDbConnection
Public Sub ActiveReport_ReportStart()
'レポートのデータ接続を設定します。
rpt.DataSource = ""
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\ActiveReportsNET12\Data\NWIND.mdb"
Dim sqlString As String = "SELECT * FROM categories INNER JOIN products ON categories.categoryid = products.categoryid ORDER BY products.categoryid, products.productid"
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
m_reader = m_Cmd.ExecuteReader
End Sub
Public Sub ActiveReport_DataInitialize()
'レポートにデータフィールドを追加します。
rpt.Fields.Add("CategoryID")
rpt.Fields.Add("CategoryName")
rpt.Fields.Add("ProductName")
rpt.Fields.Add("UnitsInStock")
rpt.Fields.Add("Description")
rpt.Fields.Add("TotalLabel")
End Sub
Public Function ActiveReport_FetchData(ByVal eof As Boolean) As Boolean
Try
m_reader.Read
'データリーダからのデータを、フィールドに読み込みます。
rpt.Fields("CategoryID").Value = m_reader("categories.CategoryID")
rpt.Fields("CategoryName").Value = m_reader("CategoryName")
rpt.Fields("ProductName").Value = m_reader("ProductName")
rpt.Fields("UnitsInStock").Value = m_reader("UnitsInStock")
rpt.Fields("Description").Value = m_reader("Description")
'静的なテキストとデータを結合します。
rpt.Fields("TotalLabel").Value = m_reader("CategoryName")+ "の合計:"
eof = False
Catch
eof = True
End Try
Return eof
End Function
Public Sub ActiveReport_ReportEnd()
'データリーダと接続を切ります。
m_reader.Close
m_cnn.Close
End Sub
|
|
C#
| C#コード(スクリプトエディタウィンドウに貼り付けます) |
コードのコピー
|
|---|---|
private static System.Data.OleDb.OleDbDataReader m_reader;
private static System.Data.OleDb.OleDbConnection m_cnn;
public void ActiveReport_ReportStart()
{
//レポートのデータ接続を設定します。
rpt.DataSource = "";
string m_cnnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\ActiveReportsNET12\Data\NWIND.mdb";
string sqlString = "SELECT * FROM categories INNER JOIN products ON categories.categoryid = products.categoryid ORDER BY products.categoryid, products.productid";
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();
}
m_reader = m_Cmd.ExecuteReader();
}
public void ActiveReport_DataInitialize()
{
//レポートにデータフィールドを追加します。
rpt.Fields.Add("CategoryID");
rpt.Fields.Add("CategoryName");
rpt.Fields.Add("ProductName");
rpt.Fields.Add("UnitsInStock");
rpt.Fields.Add("Description");
rpt.Fields.Add("TotalLabel");
}
public bool ActiveReport_FetchData(bool eof)
{
try
{
m_reader.Read();
//データリーダからのデータを、フィールドに読み込みます。
rpt.Fields["CategoryID"].Value = m_reader["categories.CategoryID"].ToString();
rpt.Fields["CategoryName"].Value = m_reader["CategoryName"].ToString();
rpt.Fields["ProductName"].Value = m_reader["ProductName"].ToString();
rpt.Fields["UnitsInStock"].Value = m_reader["UnitsInStock"].ToString();
rpt.Fields["Description"].Value = m_reader["Description"].ToString();
//静的なテキストとデータを結合します。
rpt.Fields["TotalLabel"].Value = m_reader["CategoryName"].ToString() + "の合計:";
eof = false;
}
catch
{
eof = true;
}
return eof;
}
public void ActiveReport_ReportEnd()
{
//データリーダと接続を切ります。
m_reader.Close();
m_cnn.Close();
}
|
|
レポートをRPXファイルとして保存する
レポートを表示する