作成日: 2022/09/27 最終更新日: 2022/09/27
文書種別
使用方法
詳細
FlexReportでは、レポートのページ数やグループのページ数を表示するためにレポート変数や関数を用意しています。
■レポートのページ数表示について
レポートのページ番号、総ページ数を表示するために、Page、Pagesというレポート変数を使用できます。
・Page変数は、レポートのレンダリングの開始時に初期化されページ区切りごとに 1 ずつ増加します。
・Pages変数は、レポートのレンダリング終了時に総ページ数に置き換えられます。
(1)レポートデザイナで設定する方法
レポートデザイナで、PageHeaderやPageFooterに配置したTextFieldのTextプロパティにこれらのレポート変数を設定します。
例えば、PageFooterセクションに配置したTextFieldのTextプロパティに以下を設定します(*1)。
以上の設定により、各ページのフッターに、ページ番号および総ページ数が描画されます。
(2)コードを用いて設定する方法
PageHeaderやPageFooterに配置したTextFieldに対して、アプリケーション内でText.Expressionの値を設定して、レポートのレンダリング時にページ数を表示させることも可能です。
例)
【ご注意】
これらの変数の値はレポートのレンダリング時に判明するので、アプリケーション内でコードを用いてページ番号や総ページ数を取得するといったことはできません。
■グループのページ数表示について
グループのページ数に対しては、GroupPage、GroupPagesという組み込み関数が用意されています。
・GroupPage関数は、グループ内の何ページ目を出力しているかを戻します。
・GroupPages関数は、現在のグループ全体の出力ページ数を戻します。
(1)レポートデザイナで設定する方法
レポートデザイナで、GroupHeaderやGroupFooterに配置したTextFieldのTextプロパティにこれらの関数を設定します。
例えば、GroupHeaderセクションに配置したTextFieldのTextプロパティに、以下を設定します(*1)。
以上の設定により、各グループのヘッダーに、グループ内のページ番号およびグループ全体のページ数が描画されます。
(2)コードを用いて設定する方法
GroupHeaderやGroupFooterに配置したTextFieldに対して、アプリケーション内でText.Expressionの値を設定して、レポートのレンダリング時にグループの総ページ数を表示させることも可能です。
例)
【ご注意】
・これらの関数の値はレポートのレンダリング時に判明するので、アプリケーション内でコードを用いてグループ番号やグループ全体のページ数を取得するといったことはできません。
・ GroupPage関数、GroupPages関数は、いずれもグループセクション内でのみ利用可能です。ページヘッダセクションなど、グループセクション外で使用した場合、期待する結果を得ることはできません。
以下に、コードを用いて設定する場合の全体的なコードを紹介します。
※事前にレポートデザイナで、PageFooter、GroupHeaderにそれぞれField1、Field2という名のTextFieldを配置したレポート定義ファイルを作成し、プロジェクトフォルダにコピーしておいてください。
※データソースは、レポートデザイナで設定済であると想定しています。
◎サンプルコード(VB)
■レポートのページ数表示について
レポートのページ番号、総ページ数を表示するために、Page、Pagesというレポート変数を使用できます。
・Page変数は、レポートのレンダリングの開始時に初期化されページ区切りごとに 1 ずつ増加します。
・Pages変数は、レポートのレンダリング終了時に総ページ数に置き換えられます。
(1)レポートデザイナで設定する方法
レポートデザイナで、PageHeaderやPageFooterに配置したTextFieldのTextプロパティにこれらのレポート変数を設定します。
例えば、PageFooterセクションに配置したTextFieldのTextプロパティに以下を設定します(*1)。
="総ページ " & [Page] & " / " & [Pages]
(*1) 直接上記文字列を設定するほか、[VBScript エディタ]を利用して設定することもできます。その場合、TextFieldのTextプロパティ右の展開マークをクリックして"<式エディタ>"を選択すると、[VBScript エディタ]ダイアログボックスが開くので、「=」を除く文字列("ページ " & [Page] & " / " & [Pages])を設定します。以上の設定により、各ページのフッターに、ページ番号および総ページ数が描画されます。
(2)コードを用いて設定する方法
PageHeaderやPageFooterに配置したTextFieldに対して、アプリケーション内でText.Expressionの値を設定して、レポートのレンダリング時にページ数を表示させることも可能です。
例)
TextField rptField = (TextField)c1FlexReport1.Fields["Field1"];
rptField.Text.Expression = "\"総ページ \" & [Page] & \" / \" & [Pages]";
【ご注意】
これらの変数の値はレポートのレンダリング時に判明するので、アプリケーション内でコードを用いてページ番号や総ページ数を取得するといったことはできません。
■グループのページ数表示について
グループのページ数に対しては、GroupPage、GroupPagesという組み込み関数が用意されています。
・GroupPage関数は、グループ内の何ページ目を出力しているかを戻します。
・GroupPages関数は、現在のグループ全体の出力ページ数を戻します。
(1)レポートデザイナで設定する方法
レポートデザイナで、GroupHeaderやGroupFooterに配置したTextFieldのTextプロパティにこれらの関数を設定します。
例えば、GroupHeaderセクションに配置したTextFieldのTextプロパティに、以下を設定します(*1)。
="グループのページ " + GroupPage() + " / " + GroupPages()
(*1) 直接上記文字列を設定するほか、[VBScript エディタ]を利用して設定することもできます。その場合、TextFieldのTextプロパティ右の展開マークをクリックして"<式エディタ>"を選択すると、[VBScript エディタ]ダイアログボックスが開くので、「=」を除く文字列("ページ:" + GroupPage() + "/" + GroupPages())を設定します。以上の設定により、各グループのヘッダーに、グループ内のページ番号およびグループ全体のページ数が描画されます。
(2)コードを用いて設定する方法
GroupHeaderやGroupFooterに配置したTextFieldに対して、アプリケーション内でText.Expressionの値を設定して、レポートのレンダリング時にグループの総ページ数を表示させることも可能です。
例)
TextField grpField = (TextField)c1FlexReport1.Fields["Field2"];
grpField.Text.Expression = "\"グループのページ \" + GroupPage() + \" / \" + GroupPages()";
【ご注意】
・これらの関数の値はレポートのレンダリング時に判明するので、アプリケーション内でコードを用いてグループ番号やグループ全体のページ数を取得するといったことはできません。
・ GroupPage関数、GroupPages関数は、いずれもグループセクション内でのみ利用可能です。ページヘッダセクションなど、グループセクション外で使用した場合、期待する結果を得ることはできません。
以下に、コードを用いて設定する場合の全体的なコードを紹介します。
※事前にレポートデザイナで、PageFooter、GroupHeaderにそれぞれField1、Field2という名のTextFieldを配置したレポート定義ファイルを作成し、プロジェクトフォルダにコピーしておいてください。
※データソースは、レポートデザイナで設定済であると想定しています。
◎サンプルコード(VB)
Imports C1.Win.FlexReport
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' レポートの読み込み
C1FlexReport1.Load("..\..\Test.flxr", "Products レポート")
C1FlexReport1.Render()
' レポートの総ページ数
Dim rptField As TextField = CType(C1FlexReport1.Fields("Field1"), TextField)
rptField.Text.Expression = """総ページ "" & [Page] & "" / "" & [Pages]"
' グループ全体のページ数
Dim grpField As TextField = CType(C1FlexReport1.Fields("Field2"), TextField)
grpField.Text.Expression = """グループのページ "" + GroupPage() + "" / "" + GroupPages()"
' プレビュー表示
C1FlexReport1.Render()
C1FlexViewer1.DocumentSource = C1FlexReport1
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.FlexReport;
namespace prj_FlexReport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// レポートの読み込み
c1FlexReport1.Load(@"..\..\Test.flxr", "Products レポート");
c1FlexReport1.Render();
// レポート全体のページ数
TextField rptField = (TextField)c1FlexReport1.Fields["Field1"];
rptField.Text.Expression = "\"総ページ \" & [Page] & \" / \" & [Pages]";
// グループ内のページ番号、ページ数
TextField grpField = (TextField)c1FlexReport1.Fields["Field2"];
grpField.Text.Expression = "\"グループのページ \" + GroupPage() + \" / \" + GroupPages()";
// プレビュー表示
c1FlexReport1.Render();
c1FlexViewer1.DocumentSource = c1FlexReport1;
}
}
}