47
ミガロ.テクニカルセミナー 2 RadStudio勉強会@大阪 株式会社ミガロ. RAD事業部 営業推進課 尾崎 浩司 帳票はFastReportにおまかせ! ~印刷もPDFもラクラク開発~

RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

Embed Size (px)

Citation preview

Page 1: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

株式会社ミガロ.

RAD事業部 営業推進課

尾崎 浩司

帳票はFastReportにおまかせ! ~印刷もPDFもラクラク開発~

Page 2: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

【アジェンダ】

• FastReportにおまかせ! ~印刷もPDFもラクラク開発~

1. FastReport とは?

2. FastReport の作成手順

3. 多彩な帳票出力

4. ファイル出力

5. バンドル版と製品版について

Page 3: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

1.FastReportとは?

Page 4: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

FastReportとは?

• Delphiにおける帳票作成用VCLコンポーネント

• フォーム同様の手法による帳票レイアウト設計 コンポーネントを使用したビジュアルな設計が可能!

• Exeへの帳票用ランタイム及び帳票レイアウトの含有 クライアントPCの環境に依存しないアプリ配布が可能!

• 文字だけでなく、画像、バーコード、グラフ等の使用 多彩な帳票が設計可能!

• データセット(TDataSet)を使用したバンド設計 ノンコーディングでファイルを使用した帳票が作成可能!

• ファイル出力機能 PDFファイル等が容易に作成可能!

DelphiXE2以降に標準バンドル Delphi 2009以降で使用できる製品版 (無償評価版で確認することができます!)

Page 5: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

Delphiで使用可能な他の帳票ツールとの比較

• QuickReport / RaveReports / VB-Report / FastReport

QuickReport RaveReports VB-Report (ActiveX)

FastReport

設計手法 フォーム上に貼りつけた 帳票コンポーネントを使用 して帳票レイアウトを設計

専用のレポートデザイナを 使用して帳票レイアウトを 設計

エクセルを使用して帳票 レイアウトを設計

帳票コンポーネントから 呼び出す専用のデザイナを 使用して帳票レイアウトを 設計

レイアウト作成方法 バンド単位にレイアウト設計 バンド単位にレイアウト設計 エクセルのセルに出力 フィールドを定義

バンド単位にレイアウト設計

データベースの連携 データセットの関連付けに よる出力が可能

データセットの関連付けに よる出力が可能

プログラムにて、出力 ロジックを記述

データセットの関連付けに よる値の出力が可能

バーコード印刷 不可 可能 可能 可能

PDF出力 不可 不可 (日本語が未対応)

不可 可能

Page 6: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

2.FastReport の作成手順

Page 7: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(1)基本的なレポート作成手順

4)出力/プレビュー ロジック追加

Print/ShowReportメソッド

1)TfrxReportコンポーネントの貼りつけ

2)ダブルクリックで レポートデザイナ 起動

コンポーネントパレット

オブジェクトインスペクタ

デザイナ

3)帳票レイアウト作成

Page 8: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(2)初めてのFastReport帳票出力

• TfrxReportコンポーネント • ダブルクリックでFastReportレポートデザイナが開く

ダブルクリック

Page 9: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(2)初めてのFastReport帳票出力

• FastReportレポートデザイナ • 用紙設定 (サイズ、向き、フォント(日本語文字セット)を設定)

• Text Objectコンポーネント

Text Object コンポーネント

Page1のプロパティ --------------------------

PaperSize(サイズ) Orientation(向き)

Font(フォント)

出力する文字列を 編集

Page 10: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(2)初めてのFastReport帳票出力

• 変数の登録 • [Insert Expression]ボタン ⇒ [Variables]タブ

Insert Expression Variablesタブ

変数名を登録

レポートデザイナ終了 (保存不要)

Page 11: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(2)初めてのFastReport帳票出力

• プレビュー表示ロジック記述 • プレビュー(ShowReport)、印刷(Print)を記述するだけで良い!

procedure TForm1.Button1Click(Sender: TObject); begin //画面の入力値を帳票にセット frxReport1.Script.Variables['Title'] := Edit1.Text; //帳票プレビューを表示 frxReport1.ShowReport; end;

帳票に定義した変数に値をセット

プレビュー表示

• 実行

Page 12: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

例)dbExpressの場合

(3)データベースと連携した帳票出力

• 概念図

DB

TfrxDBDataSetコンポーネント データセットと帳票との橋渡し

TfrxReportコンポーネント 帳票レイアウトを管理

フォーム(DBGrid)

FastReport

DBGrid同様ノンコーディングでデータベースを帳票出力可能!

Page 13: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(3)データベースと連携した帳票出力

• レポートで使用するデータセットの選択 • 帳票で使用するデータセットをフォームに定義したTfrxDBDataSetから選択

帳票で使用する データセットを選択

Page 14: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(3)データベースと連携した帳票出力

バンドの挿入

• FastReportにおける帳票バンドとは? • 帳票上の特定の場所で、それらに含まれるオブジェクトを配置するエリア

プレビュー実行

ページヘッダ

ページフッタ

レポートタイトル

Page 15: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(3)データベースと連携した帳票出力

• データバンド • データセットの行(レコード)を出力するバンド

プレビュー実行

データバンド (マスターデータ)

Page 16: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(4)帳票のグループ化

• 帳票のグループ化 • 特定条件毎に、データをグルーピングした帳票

• 例) 得意先別 売上一覧

担当者別 得意先一覧

得意先別 売上一覧

0001 株式会社ミガロ. 2013/01/01 ノートパソコン 49,800 1 49,800 2013/01/06 ディスプレイ 14,800 2 29,600 2013/01/09 マウス 2,800 3 8,400 合計 87,800

0002 山田商会株式会社 2013/01/08 ノートパソコン 49,800 1

担当者別 得意先一覧

90001 尾崎 浩司 0001 株式会社ミガロ. 06-6631-8601 大阪市浪速区湊町2-1-57 0002 山田商会株式会社 03-1234-5678 東京都港区山田町1-2-3

90002 松尾 悦郎 0005 吉田電機有限会社 075-333-4444 京都市右京区吉田町3-4-5

ノンコーディングで特定条件毎に、データをグルーピングした帳票が実現!

Page 17: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(4)帳票のグループ化

• 帳票ウィザードでの作成例 • [File] ⇒ [New…] ⇒ [Standard Report Wizard]

Page 18: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(4)帳票のグループ化

データセットの選択 出力項目の選択 グループ化項目の選択

用紙方向、形式の選択

帳票スタイルの選択

• 帳票ウィザード設定手順

Page 19: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(4)帳票のグループ化

グループヘッダ -------------------------- グループ開始時のバンド (グループ毎のタイトル出力等に 使用)

Conditionプロパティ -------------------------- グループ化条件式

グループフッタ -------------------------- グループ終了時のバンド (グループ毎の合計出力等に使用)

プレビュー実行

グループヘッダ出力例

• グループヘッダ/グループフッタ

Page 20: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

3.多彩な帳票出力

Page 21: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

多彩な帳票出力

• FastReportは、表現力豊かな帳票開発が可能!

罫線

図形

画像

バーコード グラフ

OLEオブジェクト

Page 22: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(5-1)画像の出力

• 帳票への画像ファイルの指定 • Picture Object を使用

Picture Object

画像を選択

プレビュー実行

Page 23: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(5-2)データベースとリンクした画像の出力

• データベース明細と関連する画像ファイル • データベース上に、取引先マスタを保持 (キー:取引先コード [MCTRCD] )

• ファイルサーバー上に、(取引先コード).bmp という画像ファイルを格納

取引先マスタ (DTMMCP)

DB Server

共有フォルダ

ファイルサーバー

取引先コードで紐付き

• データベース値をキーとする画像ファイルをリンクした帳票が出力できないか?

Page 24: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

[ 項目の設定 ] フィールド毎の定義 を保持

(5-2)データベースとリンクした画像の出力

• 内部計算項目の活用 • TClientDataSet に TGraphicField(画像フィールド) を内部計算項目として追加

(内部計算項目 : プログラムにてメモリ上に値を保持できるフィールド)

[ TClientDataSet ] クライアントPCの メモリ上に保持される データセット

プログラムによって追加できるフィールド

画像を格納できる型

Page 25: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(5-2)データベースとリンクした画像の出力 • 画像フィールドへ画像をセット

• データセットオープン時(AfterOpenイベント)に画像フィールドに画像を登録 procedure TfrmMain.cdsDTMMCPAfterOpen(DataSet: TDataSet); const cFILE_EXT = '.BMP'; // 画像ファイル拡張子 cFILE_PATH = 'C:¥Temp¥Images¥'; // 画像ファイルが格納されたフォルダ var sFileName: String; begin with cdsDTMMCP do begin First; //順にレコードを読み込み、データセットに画像をセット while not Eof do begin //ファイル名の取得 sFileName := cdsDTMMCP.FieldByName('MCTRCD').AsString + cFILE_EXT; //ファイルの存在チェック if FileExists(cFILE_PATH + sFileName) then begin //画像ファイルをデータ項目にセット cdsDTMMCP.Edit; TGraphicField(cdsDTMMCP.FieldByName('Images')).LoadFromFile(cFILE_PATH + sFileName); cdsDTMMCP.Post; end; Next; end; First; end; end;

取得した取引先コード より画像ファイル名を 作成

画像フィールドに画像を セットして更新

Page 26: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(5-2)データベースとリンクした画像の出力

• 実行 • データセットに直接画像が保持されるため、帳票だけでなく画面でも使用可能

プレビュー実行

Page 27: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(6-1)バーコード出力

• 帳票へのバーコードの指定 • Barcode Objectを使用

Barcode Object

フィールドを 指定

バーコードの タイプを指定

プレビュー実行

• 主な対応バーコードタイプ • CODE39, CODE128, EAN(JAN)、UPC … • 詳細: http://www.agtech.co.jp/products/fastreportvcl/barcode.html

Page 28: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(6-2)QRコード出力

• BarCode Objectは、QRコードが非対応 • QRコードをFastReportで印刷できないだろうか?

取引先マスタ (DTMMCP)

HPアドレス Delphi

URL作成

Delphi

画像リンク

Google API

URL

インターネット

QRコード 帳票

• Google APIを使用すれば解決可能! • Google チャートAPIの中に、QRコードを作成するAPI有

• URLを指定するとQRコード画像が取得

https://chart.googleapis.com/chart?chs=200x200&cht=qr&chl=http://migaro.co.jp

• chs : 画像サイズ

• chl : QRコードに変換したい文字列 (URLエンコードが必要)

Page 29: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(6-2)QRコード出力

• 実行 • 配布のサンプルプログラムにQRコード画像取得ルーチンを収録

MakeQRCode.pas

• ルーチン名: GetQRCodeFromStr(AStr: String; APngImage: TPngImage);

(引数) AStr – 変換対象文字列(IN) APngImage – 作成された画像イメージ(OUT)

Page 30: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(7)グラフ出力

• FastReportには、グラフ用コンポーネントも付属

Chart Object

系列追加

Page 31: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(7)グラフ出力

• 画面用のグラフと帳票用グラフを2つ作成しないといけないか? • 画面用に作成したTChart(TDBChart)を画像として、帳票にセットすることが可能

【画面(Form)】 データセットに連動した TDBChart (DBChart1)

【帳票(FastReport)】 Picture Object (Picture1) を配置

Page 32: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

プレビュー実行

(7)グラフ出力

procedure TfrmMain.frxReport1BeforePrint(Sender: TfrxReportComponent); begin //帳票上の画像コンポーネントの場合、DBChartを画像化したものをセット if Sender.Name = 'Picture1' then TfrxPictureView(Sender).Picture.Assign( DBChart1.TeeCreateMetafile( False, Rect(0, 0, Round(Sender.Width), Round(Sender.Height)))); end;

• 帳票出力時のチャート画像セットロジック

• 実行

[ OnBeforePrint ] 各帳票コンポーネント 出力前に発生するイベント

DBChartを元に 画像ファイルを作成 (Picture1のコンポーネント サイズで作成)

Page 33: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

4.ファイル出力

Page 34: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(8)ファイル出力

• FastReportは、帳票印刷だけでなく、ファイルへの出力も容易!

• 概念図 • ファイル出力用コンポーネントを使用

TfrxReportコンポーネント 帳票レイアウトを管理

TfrxPDFExportコンポーネント PDFエクスポートを管理

• 出力可能形式 • PDF, HTML, RTF , BMP, JPEG, TIFF, GIF, TXT, CSV

Page 35: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(8)ファイル出力

procedure TForm1.btnPDFOutputClick(Sender: TObject); begin //プレビュー無しでレポート作成 frxReport1.PrepareReport; //PDFへファイル出力 frxReport1.Export(frxPDFExport1); end;

• PDF出力ロジック

• 実行

プレビューせずにレポートを作成

指定したコンポーネントに対し、 エクスポートを実施

PDFファイル

Page 36: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(9)WEBアプリでの帳票出力

• IntraWeb(VCL for the Web)からも帳票PDF出力可能 • VCL for the Webについて →

http://edn.embarcadero.com/jp/article/images/38706/a5.pdf

• FastReportエクスポート機能を使用し、ファイルをダウンロード

IntraWeb

WEBブラウザ

エクスポート

PDF ダウンロード

リクエスト

WebAppication.SendStream

ストリームデータを レスポンスとして返す

メモリストリーム

生成したPDFを ストリームとして返す

Page 37: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(9)WEBアプリでの帳票出力

• PDF出力ロジック(メモリストリームを使用したダウンロード)

type TIWForm1 = class(TIWAppForm) <--- 途中省略 ---> public msPDFData: TMemoryStream; //グローバル変数 end; implementation procedure TIWForm1.IWAppFormCreate(Sender: TObject); begin msPDFData := TMemoryStream.Create; //メモリストリームの作成 end; procedure TIWForm1.IWAppFormDestroy(Sender: TObject); begin msPDFData.Free; //メモリストリームの破棄 end; procedure TIWForm1.lnkDownLoadClick(Sender: TObject); begin frxReport1.PrepareReport; //プレビュー無しでレポート作成 frxPDFExport1.Stream := msPDFData; //メモリストリームへセット frxReport1.Export(frxPDFExport1); //PDFへエクスポート WebApplication.SendStream(msPDFData, True, 'application/pdf', 'Weaher.pdf');//ストリームに出力されたPDFをダウンロード end;

メモリストリームを定義

PDF出力先をストリームとする

PDFファイルがダウンロード

Page 38: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(9)WEBアプリでの帳票出力

• 実行

PDFファイル

Page 39: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

5.バンドル版と製品版について

Page 40: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

Embarcadero RAD Edition (バンドル版)

• Delphi XE2以降に標準バンドル • Embarcadero登録ユーザー向けダウンロードサイトから最新版があるか要確認

• 製品版のサブセット版の為、機能制限あり

• 設計画面、プレビュー/印刷指示画面等が英語表記 • 帳票自体は、日本語文字も正しく処理可能

レポートデザイナ(設計画面)

プレビュー/印刷指示(実行画面)

Page 41: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

Enterprise Edition (製品版)

• Delphi Version 2009~XE7に対応 • 日本ではAG-TECH社より発売 : http://www.agtech.co.jp/products/fastreportvcl/

• 評価版有

• フル機能利用可能。

• 設計画面、プレビュー/印刷指示画面等が日本語表記 レポートデザイナ(設計画面) プレビュー/印刷指示(実行画面)

Page 42: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

バンドル版と製品版との機能比較

バンドル版

(Embarcadero RAD Edition) 製品版

(Enterprise Edition)

レポートデザイン

複数レポートページ ○ ○

日本語ユーザーインターフェース - ○

デザイナ上でのイベント利用 - ○

レポートオブジェクト

バンド ○ ○

罫線 ○ ○

画像 ○ ○

グラフ ○ ○

バーコード ○ ○

クロス集計 - ○

内部データセット - ○

レポートエクスポート

PDF ○ ○

RTF(文書フォーマット) ○ ○

HTML ○ ○

TXT ○ ○

CSV ○ ○

画像(BMP, JPEG, GIF, …) ○ ○

Excel ( xls 形式) - ○

Excel ( xlsx 形式) - ○

E-Mail - ○

• 詳細な対比 http://www.agtech.co.jp/products/fastreportvcl/vs_embarcadero.html

Page 43: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(製品版) クロス集計機能

• データを集計して表を作成する機能 • エクセルのピポットデーブルのような機能

プレビュー実行

Page 44: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

(製品版) より多彩なファイル出力

• PDF以外の出力 (Excel出力例) プレビュー実行

Excel出力

Excel上で出力帳票を 自由に加工可能!

Page 45: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

まとめ

Page 46: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

1. FastReport とは?

2. FastReport の作成手順 (1)基本的なレポート作成手順

(2)初めてのFastReport帳票出力

(3)データベースと連携した帳票出力

(4)帳票のグループ化

3. 様々な帳票出力手法 (5)画像の出力

(6)バーコード/QRコード出力

(7)グラフ出力

4. ファイル出力 (8)ファイル出力

(9)WEBアプリでの帳票出力

5. バンドル版と製品版について

まとめ

Page 47: RAD Studio勉強会@大阪 「帳票はFastReportにおまかせ」

第13回 ミガロ.テクニカルセミナー 2-

RadStudio勉強会@大阪

ご清聴ありがとうございました