JasperReport 型のレポートを実行するコードの作成

レポート・ドライバー・プログラムは、一般的な EGL プログラムの一種です。レポート設計ファイルからコンパイルされる .jasper ファイルを使用して、レポートを実行します。

指定されたデータベース接続からデータを使用するレポート・ドライバー・プログラムの例を、以下に示します。
program reportDriverProgram type BasicProgram 
    
  function main()
    SQLLib.defineDatabaseAlias("customer", 
      "jdbc:derby:C:¥¥databases¥¥CustomerDatabase");
    SQLLib.connect("customer", "admin", "admin");
    
    myReport Report = new Report();
    myReportData ReportData = new ReportData();
    myReport.reportDesignFile = 
      "C:¥¥Workspace¥¥MyProject¥¥bin¥¥reportModel.jasper";
    myReport.reportDestinationFile = "C:¥¥temp.jrprint";
    myReport.reportExportFile = "C:¥¥MyReport.pdf";
    myReportData.connectionName = "customer";
    myReportData.sqlStatement = 
      "select * from EGL.CUSTOMER order by CUSTOMER_ID desc";
    myReport.reportData = myReportData;

    reportLib.fillReport(myReport, DataSource.sqlStatement);
    reportLib.exportReport(myReport, ExportFormat.pdf);

  end
    
end

円記号 (¥) がエスケープ・シーケンスで使用されているため、パス名には二重の円記号を使用する必要があります。

次の表では、前の例に含まれているコードを説明します。
コード 説明
SQLLib.defineDatabaseAlias("customer",
  "jdbc:derby:C:¥¥databases
    ¥¥CustomerDatabase");
SQLLib.connect("customer",
  "admin", "admin");
EGL ライブラリー SQLLib の関数を使用して、データベースに接続し、データベースの別名を定義します。
myReport Report = new Report();
レポートを表すためのレポート変数を新規作成します。
myReportData ReportData = 
  new ReportData();
レポート内のデータを表すためのレポート・データ変数を新規作成します。
myReport.reportDesignFile = 
  location;
レポート設計ファイルからコンパイルされる .jasper ファイルのロケーションを設定します。
myReport.reportDestinationFile = 
  location;
レポートの処理中に使用される一時ファイルのロケーションを設定します。
myReport.reportExportFile = 
  location;
エクスポートされるレポートのロケーションを設定します。
myReportData.connectionName = 
"customer";
前の手順で定義したデータベース別名を使用して、レポートが使用するデータベース接続を設定します。
myReportData.sqlStatement = 
  SQL statement;
レポート用のデータを提供するデータベース・アクセス文を設定します。
myReport.reportData = myReportData;
レポート変数をレポート・データ変数と関連付けます。
reportLib.fillReport(myReport, 
  DataSource.sqlStatement);
レポートにデータを記入します。
reportLib.exportReport(myReport, 
  ExportFormat.pdf);
レポートを実行し、エクスポートします。

カスタマイズされたレコードによるレポートへのデータ取り込み

次のコードの断片は、 データ・ソースとして独自の内部レコードを使用したレポートの埋め込み方法を示しています。 最初に、次のようなレコードをプログラム外部で定義します。
Record myRecord type BasicRecord
    author String;
    description String;
    title String;
end
次に、レポートの埋め込みと駆動を行う関数を記述します。
//変数宣言
myReport Report = new Report();
myReportData ReportData = new ReportData();

recArray        myRecord[];
recArrayElement myRecord;

//レポート駆動コードを含む関数
function makeReport()
    //レポート・ファイルの場所を初期化する
    myReport.reportDesignFile = 
        "c:¥¥workspace¥¥report_project¥¥" ::
        "bin¥¥report_package¥¥myReport.jasper";
    myReport.reportDestinationFile = 
        "c:¥¥temp¥¥myReport.jrprint";

    //レポート・データを取得する
    populateReportData();
    myReport.reportData = myReportData;

    //レポートにデータを埋め込む
    reportLib.fillReport(myReport, DataSource.reportData);

    //レポートを HTML 形式でエクスポートする
    myReport.reportExportFile = "c:¥¥temp¥¥myReport.html";
    reportLib.exportReport(myReport, ExportFormat.html);
end

function populateReportData()
    recArrayElement.author="Jane Austen";
    recArrayElement.title="Northanger Abbey";
    recArrayElement.description = "British Novel";
    recArray.appendElement(recArrayElement);

    recArrayElement.author = "Jane Austen";
    recArrayElement.title="Emma";
    recArrayElement.description = "British Novel";
    recArray.appendElement(recArrayElement);

    recArrayElement.author = "Charles Dickens";
    recArrayElement.title="Our Mutual Friend";
    recArrayElement.description = "British Novel";
    recArray.appendElement(recArrayElement);

    recArrayElement.author = "Gustave Flaubert";
    recArrayElement.title="Madame Bovary";
    recArrayElement.description = "French Novel";
    recArray.appendElement(recArrayElement);

    recArrayElement.author = "M. Lermontov";
    recArrayElement.title="Hero of Our Time";
    recArrayElement.description = "Russian Novel";
    recArray.appendElement(recArrayElement);
end

エクスポート・フォーマットの選択

JasperReports は、記入されたレポート・データを中間宛先ファイル (拡張子 .jrprint) として保存し、そこから複数のエクスポート・ファイルを作成することができます。記入されたレポートは PDF、HTML、XML、CSV (スプレッドシート・プログラムで読み取り可能な、コンマで区切られた値)、およびプレーン・テキストの出力として、エクスポートすることができます。レポートをエクスポートするには、EGL レポート・ドライバー・プログラム内の reportLib.exportReport() 関数で、レポート変数と、レポートのフォーマットを示すパラメーターとを指定して使用します。

reportLib.exportReport() 関数は、以下のパラメーターを認識します。
  • ExportFormat.html
  • ExportFormat.pdf
  • ExportFormat.text
  • ExportFormat.xml
  • ExportFormat.csv
例えば、次のコードを指定すると、JasperReports はレポートを PDF ファイルでエクスポートします。
myReport.ReportExportFile = "c:¥¥temp¥¥my_report.pdf";
reportLib.exportReport(myReport, ExportFormat.pdf);

重要: JasperReports は、エクスポートされたレポートを自動的に更新することはありません。 レポートの設計を変更する場合、またはデータが変更された場合は、レポートを再記入し、再度エクスポートする必要があります。


フィードバック