| GrapeCity ActiveReports for .NET 12.0J > ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > レイアウト > リッチテキストとフィールドのマージ |
ActiveReportsでは、RichTextBoxコントロールを使用して、差し込み形式のレポートを作成することができます。RichTextBoxコントロールに、値の置き換え用の固定フィールド(マージフィールド)を設定すると、実行時に実際の値に置き換えることができます。このチュートリアルでは、RichTextBoxコントロールを使用したメールマージレポートの作成方法を紹介します。
このトピックでは、以下のタスクを行います。
![]() |
メモ: このチュートリアル、Northwindデータベース(Nwind.mdb)のファイルを使用しています。使用にはNorthwindデータベース(..ActiveReportsNET12\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);
|
|
レポートを表示する