ActiveReportsでは、カラム形式のレイアウトを生かして、さまざまなサイズのラベルを印刷できます。
このチュートリアルでは、ラベルをレーザプリンタラベルシートに印刷するレポートを作成し、LayoutActionプロパティを使用してラベルを繰り返す方法を紹介します。この例のラベルは1x2.3インチで、シート(8x11インチ)当たり30枚のラベルを印刷します。
このトピックでは、以下のタスクを行います。
- VisualStudioプロジェクトにActiveReportを追加する
- レポートをデータソースに接続する
- レポートのレイアウトを作成する
- Detail_Formatイベントにラベルを繰り返すためにコードを追加する
- レポートを表示する
 |
メモ: このチュートリアルは、Northwindデータベース(Nwind.mdb)のテーブルを使用しています。Northwindデータベース(..ActiveReportsNET9\Data\Nwind.mdb)へのアクセス権限が必要です。 |
チュートリアルを完了すると、次のレポートが作成されます。
設計時のレイアウト
実行時のレイアウト
VisualStudioプロジェクトにActiveReportを追加する
- Visual Studioで新規プロジェクトを開きます。
- [プロジェクト]メニューから [新しい項目の追加]を選択します。
- [新しい項目を追加]ダイアログから [ActiveReports 9.0 セクションレポート(コード)]を選択し、名前を「rptLabels」に変更します。
- [追加]のボタンをクリックします。
参照は、「プロジェクトにレポートを追加する」を参照してください。
レポートをデータソースに接続する
- detailセクションのバンドでは、データソースアイコンをクリックします。

- [レポートデータソース]ダイアログでは、接続文字列の横にある[OLE DB]タブにある[作成]ボタンをクリックします。
- [データリンクプロパティ]ウィンドウでは、[Microsoft Jet 4.0 OLE DB Provider]を選択し、[次へ]ボタンをクリックして接続タブに移動します。
- (...)をクリックし、Nwind.mdbへのアクセスパスを参照します。アクセスパスを選択したら、[開く]をクリックします。
- [接続のテスト]をクリックし、データベースとの接続が成功したかどうかをチェックします。
- [OK] をクリックし、[データリンクプロパティ]ウィンドウを閉じて、レポートデータソースダイアログに戻ります。接続文字列が自動的に表示されることを確認します。
-
[OLE DB] タブにある[クエリ]フィールドでは、以下のSQLクエリを指定します。
SQLクエリ |
コードのコピー
|
SELECT ContactName, CompanyName, Address, City, PostalCode, Country FROM Customers |
- [OK] をクリックし、レポートのデザイナ面に戻ります。
レポートのレイアウトを作成する
- PageHeaderを右クリックし、[削除]をクリックして、レポートからページのヘッダとフッタのセクションを削除します。
-
[レポート]メニューでは、[レポートの設定]を選択し、マージンを以下のように変更します。
- 上マージン: 0.5
- 下マージン: 0.5
- 左マージン: 0.2
- 右マージン: 0.2
- 「レポートエクスプローラ」では、 [レポートコンテンツ]を選択し、[プロパティ]ウィンドウから[PrintWidth]プロパティを「8.1」に設定します。 (ラベルシートの幅から左余白と右余白を引いた値に設定します)
- レポートの「デザイナ面」のグレーの領域をクリックし、[プロパティ]ウィンドウからPrintWidthプロパティを「6.5」に設定します。
- Detailセクションをクリックし、[プロパティ]ウィンドウから以下のプロパティを設定します。
プロパティ名 |
値 |
CanGrow |
False |
ColumnCount |
3 |
ColumnDirection |
AcrossDown |
ColumnSpacing |
0.2 |
Height |
1 |
KeepTogether |
True |
- 「レポートエクスプローラ」では、 [フィールド]ノードを展開し、[バウンドフィールド]ノードを展開します。以下のフィールドをドラッグし、各テキストボックスのプロパティを以下のように変更します。
TextBox1
プロパティ名 |
値 |
DataField |
ContactName |
Location |
0, 0 in |
Size |
2.5, 0.2 in |
Font Bold |
True |
TextBox2
プロパティ名 |
値 |
DataField |
CompanyName |
Location |
0, 0.2 in |
Size |
2.5, 0.2 in |
TextBox3
プロパティ名 |
値 |
DataField |
Address |
Location |
0, 0.4 in |
Size |
2.5, 0.2 in |
TextBox4
プロパティ名 |
値 |
DataField |
City |
Location |
0, 0.6 in |
Size |
2.5, 0.2 in |
TextBox5
プロパティ名 |
値 |
DataField |
PostalCode |
Location |
0, 0.8 in |
Size |
1.45, 0.2 in |
TextBox6
プロパティ名 |
値 |
DataField |
Country |
Location |
1.5, 0.8 in |
Size |
1, 0.2 in |
- すべてのテキストボックスを選択し、[プロパティ]ウィンドウから、CanGrowプロパティを「False」に設定します。これにより、テキストは重複されませんが、フィールドのデータがコントロールのサイズに合わない場合、トリミングされる可能性があります。
レポートをこの時点でプレビューすると、ページ上に各ラベルが1回ずつ表示されます。
Detail_Formatイベントにラベルを繰り返すためにコードを追加する
- Detailセクションをダブルクリックし、レポートのDetail_Formatイベントのイベント処理メソッドを作成します。
- 3つの列に対して各ラベルを繰り返すには、以下のコードを追加します。
Visual Basic
Visual Basicコード (Formatイベント内に貼り付けます) |
コードのコピー
|
'各ラベルを3回印刷します。
Static counter As Integer
counter = counter + 1
If counter <= 2 Then
Me.LayoutAction = GrapeCity.ActiveReports.LayoutAction.MoveLayout Or GrapeCity.ActiveReports.LayoutAction.PrintSection
Else
Me.LayoutAction = GrapeCity.ActiveReports.LayoutAction.MoveLayout Or GrapeCity.ActiveReports.LayoutAction.NextRecord Or GrapeCity.ActiveReports.LayoutAction.PrintSection
counter = 0
End If
|
C#
C#コード (Formatイベントの上に貼り付けます) |
コードのコピー
|
int counter=0;
|
C#コード (Formatイベント内に貼り付けます) |
コードのコピー
|
//各ラベルを3回印刷します。
counter = counter + 1;
if (counter <= 2)
{
this.LayoutAction = GrapeCity.ActiveReports.LayoutAction.MoveLayout|GrapeCity.ActiveReports.LayoutAction.PrintSection;
}
else
{
this.LayoutAction = GrapeCity.ActiveReports.LayoutAction.MoveLayout|GrapeCity.ActiveReports.LayoutAction.NextRecord|GrapeCity.ActiveReports.LayoutAction.PrintSection;
counter = 0;
}
|
レポートを表示する
- 設計時にレポートを表示するには、プレビュータブをクリックします。
または