PowerTools ActiveReports for .NET 9.0J > ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > レイアウト > リッチテキストとフィールドのマージ |
ActiveReportsでは、RichTextBoxコントロールを使用して、差し込み形式のレポートを作成することができます。RichTextBoxコントロールに、値の置き換え用の固定フィールド(マージフィールド)を設定すると、実行時に実際の値に置き換えることができます。このチュートリアルでは、RichTextBoxコントロールを使用したメールマージレポートの作成方法を紹介します。
このトピックでは、以下のタスクを行います。
メモ: このチュートリアル、Northwindデータベース(Nwind.mdb)のファイルを使用しています。Northwindデータベース(..ActiveReportsNET9\Data\ |
チュートリアルを完了すると、次のレポートが作成されます。
Visual StudioプロジェクトにActiveReportを追加する
詳細は、「プロジェクトにレポートを追加する」を参照してください。
レポートをデータソースに接続する
SQLクエリ |
コードのコピー
|
---|---|
SELECT Customers.CustomerID, Customers.CompanyName, Customers.ContactName, Customers.Address, Customers.City, Customers.Region, Customers.Country, Customers.PostalCode, Orders.OrderID, Orders.OrderDate, [Order Subtotals].Subtotal FROM Customers INNER JOIN ([Order Subtotals] INNER JOIN Orders ON [Order Subtotals].OrderID = Orders.OrderID) ON Customers.CustomerID = Orders.CustomerID |
レポートのレイアウトを作成する
プロパティ名 | 値 |
---|---|
DataField | CustomerID |
Height | 2.5 |
KeepTogether | True |
プロパティ名 | 値 |
---|---|
Height | 1.1 |
KeepTogether | True |
NewPage | After |
プロパティ名 | 値 |
---|---|
Height | 0.8 |
BackColor | Coral |
Label
プロパティ名 | 値 |
---|---|
Location | 0, 0 in |
Size | 6.5, 0.65 in |
Text | GraepeCity |
Font Size | 36 |
Font Bold | True |
プロパティ名 | 値 |
---|---|
Location | 4, 0 in |
Size | 1, 0.2 in |
Name | txtSubtotal1 |
OutputFormat | Currency |
Visible | False |
SummaryType | SubTotal |
SummaryGroup | GroupHeader1 |
メモ:txtSubtotal1は非表示であるが、[RichTextBox]コントロールの中で表示する値と書式を提供するために必要です。 |
RichTextBox
プロパティ名 | 値 |
---|---|
Location | 0, 0 in |
Size | 6.5, 2.1 in |
AutoReplaceFields | True |
Label1
プロパティ名 | 値 |
---|---|
Location | 0.875, 2.25 in |
Size | 1, 0.2 in |
Text | 注文番号 |
Font Bold | True |
Label2
プロパティ名 | 値 |
---|---|
Location | 1.875, 2.25 in |
Size | 1, 0.2 in |
Text | 注文日付 |
Font Bold | True |
Label3
プロパティ名 | 値 |
---|---|
Location | 4.375, 2.25 in |
Size | 1, 0.2 in |
Text | 金額 |
Font Bold | True |
Alignment | Right |
TextBox1 (OrderID)
プロパティ名 | 値 |
---|---|
Location | 0.875, 0 in |
Size | 1, 0.2 in |
TextBox2 (OrderDate)
プロパティ名 | 値 |
---|---|
Location | 1.875, 0 in |
Size | 1, 0.2 in |
OutputFormat | MM/dd/yy |
TextBox3 (Subtotal)
プロパティ名 | 値 |
---|---|
Location | 4.375, 0 in |
Size | 1, 0.2 in |
OutputFormat | Currency |
Alignment | Right |
Label
プロパティ名 | 値 |
---|---|
Location | 5.15, 0.8 in |
Size | 1.35, 0.2 in |
Text | 以上 |
Label
プロパティ名 | 値 |
---|---|
Location | 0, 0 in |
Size | 6.5, 0.2 in |
Text | GrapeCity, 401 Parkplace, Suite 411, Kirkland, WA 98033 |
Alignment | Center |
RichTextコントロールにフィールドとテキストを追加する
RichTextコントロールに貼り付けます |
コードのコピー
|
---|---|
[!ContactName] 様 お世話になっております。貴方の昨年の受注合計は一覧のように[!SubTotal]となっております。どうぞご確認ください。ご不明な点は1-800-DNT-CALLまでご連絡いただきますようお願い申し上げます。 |
FetchDataイベントを使用して、データソースから情報を取得する
Visual Basic
Visual Basicコード (FetchDataイベントの上に貼り付けます) |
コードのコピー
|
---|---|
Dim region As String |
Visual Basicコード (FetchDataイベント内に貼り付けます) |
コードのコピー
|
---|---|
'地域がない場合は、何も表示しない If Fields("Region").Value Is System.DBNull.Value Then region = "" Else '地域がある場合、カンマとスペースを追加する region = ", " + Fields("Region").Value End If |
C#
C#コード (FetchDataイベントの上に貼り付けます) |
コードのコピー
|
---|---|
string region; |
C#コード (FetchDataイベント内に貼り付けます) |
コードのコピー
|
---|---|
if(Fields["Region"].Value is System.DBNull) region = ""; else region = ", " + Fields["Region"].Value.ToString(); |
RichTextBoxコントロールで、各レコードのフィールド値を更新するコードを追加する
Visual Basic
Visual Basicコード ( GroupHeader Formatイベント内に貼り付けます) event. |
コードのコピー
|
---|---|
'今日の日付に変更する Me.RichTextBox1.ReplaceField("Date", System.DateTime.Today.Date.ToShortDateString()) 'FetchDataイベントの返却値を使用する Me.RichTextBox1.ReplaceField("Region", region) |
C#
C#コード (GroupHeader Formatイベント内に貼り付けます) |
コードのコピー
|
---|---|
// 今日の日付に変更する this.richTextBox1.ReplaceField("Date", System.DateTime.Today.Date.ToShortDateString()); //FetchDataイベント返却値を使用する this.richTextBox1.ReplaceField("Region", region); |
グループ小計値をRichTextフィールドに表示するコードを追加する
Visual Basic
メモ: レポートを表示する直前に、小計フィールドの最終的な集計値を取得するには、Formatイベントの代わりにBeforePrintイベントを使用します。セクションイベントの使用の詳細については、「セクションレポートのイベント」のトピックを参照してください。 |
Visual Basicコード (GroupHeaderのBeforePrintイベント内に貼り付けます) |
コードのコピー
|
---|---|
'非表示の小計フィールドから値を使用する Me.RichTextBox1.ReplaceField("SubTotal", Me.txtSubtotal1.Text) |
C#
C#コード (GroupHeaderのBeforePrint内に貼り付けます) |
コードのコピー
|
---|---|
//非表示の小計フィールドから値を使用する this.richTextBox1.ReplaceField("SubTotal", this.txtSubtotal1.Text); |
レポートを表示する