31
金額がスペル表記された請求書印刷レポートの作成
この章では、単語でスペル表記された金額が記載されている請求書の出力を書式設定するレポートについて学習します。この章の手順に従うと、図31-1に示すようなレポート出力を生成できます。
図31-1 請求書印刷レポートの出力
画像の説明
概要
請求書の金額をスペル表記するには、PL/SQLファンクションを使用して金額をその構成要素の数字に分解した後、式列を使用して一連の単語を結合し、スペル表記された金額を作成します。
注意
この例の多くの概念は、次のサンプル・レポートで使用されています。
- この例では、請求書のイメージをインポートし、ペーパー・レイアウト・ビューでそれをガイドとして使用し、フィールドを配置します。また、数値をスペル表記して返すPL/SQLファンクションの作成方法も学習します。
- 第32章「印刷済フォームを使用したレポートの作成」では、コンピュータで読込み可能なバージョンのフォームを使用できない場合に、印刷済フォームでレポートを印刷するためのフォーマット方法を学習します。このようなレポートは、フォームの正確な位置にデータが印刷されるように設計する必要があります。
- 第33章「請求書レポートの作成」では、請求書のイメージをインポートし、ペーパー・レイアウト・ビューでそれをガイドとして使用して、フィールドを配置します。
|
データ・リレーションシップ
- このレポートでは、リンクされた2つの問合せを使用します。最初の問合せでは請求書に必要な情報を取得し、2番目の問合せでは請求書のスタブに印刷する注文詳細情報を取得します。
- 作成する問合せの1つでは、スペル表記する数値がORDERS表のTOTAL列に格納されていると仮定します。スペル表記された数値のテキストは、Lookup表からフェッチされ、Thousands_text列、Thousands_Symbol列、Ones_text列およびDecimal_Text列に返されます。
レイアウト
このレポートでは、デフォルトのフォーム・スタイルを使用します。
使用例
この例では、レポート・ウィザードを使用して、基本的なレポート定義を作成します。請求書の金額をスペル表記するPL/SQLファンクションを作成します。また、請求書のドル金額を書式設定する式列も作成します。次に、空白の請求書イメージをインポートし、ペーパー・レイアウト・ビューおよびペーパー・デザイン・ビューのツールを使用して、請求書印刷レポートに最終的にどのように出力するかに応じてレポート内のフィールドを再配置します。これらのツールは、各請求書のスタブを作成する際にも使用します。
このサンプル・レポートの作成過程では、次を行います。
金額がスペル表記されたレポートのサンプルを表示するには、サンプル・フォルダspellcash
を開き、Oracle Reportsのサンプルspellcash.rdf
を開きます。このファイルの開き方の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。
31.1 この例の前提条件
この章の例を作成するには、Oracle Database付属のOrder Entryサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。
31.2 レポート・ウィザードによるレポートの作成
この項の手順では、レポート・ウィザードを使用して単純なレポート定義を作成する方法を説明します。
レポート定義を作成するには:
- Reports Builderを起動します。すでに起動している場合は、「ファイル」→「新規」→「レポート」を選択します。
- 「ようこそ」ダイアログ・ボックスまたは「新規レポート」ダイアログ・ボックスで、「レポート・ウィザードを使う」を選択して「OK」をクリックします。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択し、「次へ」をクリックします。
- 「スタイル」ページでレポートのタイトルを入力し、「フォーム」を選択して「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次の
SELECT
文を入力します。
SELECT ALL ORDERS.ORDER_ID, TO_CHAR(ORDERS.ORDER_DATE, 'DD-MON-YYYY')
ORDER_DATE, ORDERS.CUSTOMER_ID, ORDERS.ORDER_TOTAL,
CUSTOMERS.CUST_FIRST_NAME || ' ' || CUSTOMERS.CUST_LAST_NAME CUSTOMER_NAME,
CUSTOMERS.CUST_ADDRESS, (ROWNUM + 1000) AS CHECK_NO
FROM ORDERS, CUSTOMERS
WHERE CUSTOMERS.CUSTOMER_ID = ORDERS.CUSTOMER_ID
ORDER BY ORDERS.ORDER_ID ASC
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
spellcash_code.txt からコードをコピーして「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第31.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「フィールド」ページで、「>>」ボタンをクリックしてすべてのフィールドを「表示フィールド」リストに移動し、「次へ」をクリックします。
- 「合計」ページで「次へ」をクリックします。
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更し、「次へ」をクリックします。
表31-1 「ラベル」ページのフィールドの説明
- 「テンプレート」ページで、「テンプレートなし」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューでレポート出力をプレビューします。
初期のレポート定義を作成しただけなので、フォーマットは請求書のようにはなりません。表示は次のようになります。
図31-2 単純なレポートのペーパー・デザイン・ビュー
画像の説明
- レポートを
spellcash_<自分のイニシャル>.rdf
という名前で保存します。
31.3 スペル表記された請求書金額を返す式列の作成
この項の手順では、ファンクションに基づいた式列を作成する方法について説明します。作成するファンクションは、請求書金額の言語値または単語値を返します。次に、指定した通貨で金額をスペル表記する式列を作成します。この場合は、ドルとセントを使用します。
31.3.1 PL/SQLファンクションの作成
この項では、請求書の金額を"twenty-four sixty-five"のような単語の形式で単純に返すファンクションを作成します。次の項で作成する式列は、このファンクションで取得した情報を使用し、請求書の金額をスペル表記します。
PL/SQLファンクションを作成するには:
- オブジェクト・ナビゲータで、該当するレポート名の下の「プログラム・ユニット」をダブルクリックします。
- 「新規プログラム・ユニット」ダイアログ・ボックスで、「名前」ボックスに
Spell
と入力します。
- 「ファンクション」を選択し、「OK」をクリックします。
- PL/SQLエディタで、次のコードを入力します。
FUNCTION Spell (val number) RETURN CHAR IS
sp varchar2(100);
BEGIN
if val > 0 then
return(initcap(to_char(to_date(val, 'SSSSS'), 'SSSSSSP')));
else
return('');
end if;
END;
注意
提供されているテキスト・ファイルspellcash_code.txt から、このコードをコピーしてPL/SQLエディタに貼り付けると、コードを入力できます。
|
- 「コンパイル」をクリックします。エラーがある場合は、次の図に示すコードと、入力したコードを比較してください。
図31-3 SPELLファンクションを表示しているPL/SQLエディタ
画像の説明
- コードが正常にコンパイルされたら、「閉じる」をクリックします。
新しいファンクションがオブジェクト・ナビゲータに表示されます。
図31-4 SPELL PL/SQLファンクション作成後のオブジェクト・ナビゲータ
画像の説明
- レポートを保存します。
31.3.2 データ・モデルでの式列の作成
この項では、第31.3.1項「PL/SQLファンクションの作成」で作成したSpellファンクションで取得された情報を使用する式列を作成します。この式列では、請求書金額の言語値を使用し、正しい通貨の単語を組み合せます。たとえば、Spellファンクションから返された"twenty-four sixty-five"を、"twenty-four dollars and sixty-five cents"の形式に変換します。
式列を作成するには:
- オブジェクト・ナビゲータの該当するレポート名の下で、「データ・モデル」ノードの横のビュー・アイコンをダブルクリックして、データ・モデル・ビューを表示します。
作成したデータ・モデルは次のようになります。
図31-5 データ・モデル・ビュー
画像の説明
- 上部をクリックした後、下部中央のサイズ変更ハンドルを下にドラッグして、「G_ORDER_ID」ボックスのサイズを変更します。その結果、データ・モデルは次のようになります。
図31-6 サイズ変更後のデータ・モデル・ビュー
画像の説明
- ツール・パレットの「式列」ツールをクリックします。
- 「G_ORDER_ID」グループ内の作成した領域をクリックして、新しい式列を作成します。
- 新しい式列オブジェクト(CF_1)をダブルクリックしてプロパティ・インスペクタを表示し、次のプロパティを設定します。
- 「一般情報」で、「名前」プロパティを「SPELLED_AMOUNT」に設定します。
- 「列」で、「データ型」プロパティを「Character」、「幅」プロパティを「100」に設定します。
- 「プレースホルダ/式」で、「PL/SQL式」プロパティ・フィールドをクリックしてPL/SQLエディタを表示します。
- PL/SQLエディタで、テンプレートを使用して次のPL/SQLコードを入力します。
function SPELLED_AMOUNTFormula return Char is
cents number;
c_str varchar2(80);
val number;
begin
val := :order_total;
cents := (val mod 1) * 100;
if cents > 0 then --creates string for cents
c_str := ' and ' || TO_CHAR(cents) || '/100 Dollars******';
else
c_str := ' Dollars******';
end if;
if val < 1000 and val > 1 then
return (initcap(spell(floor(val))) || c_str);
elsif val > 1000 then
return(initcap(spell(floor(val/1000))) || ' Thousand ' ||
spell(floor(val mod 1000)) || c_str);
else
return('Zero'||c_str);
end if;
end;
注意
提供されているテキスト・ファイルspellcash_code.txt から、このコードをコピーしてPL/SQLエディタに貼り付けると、コードを入力できます。
|
- 「コンパイル」をクリックします。エラーがある場合は、入力したコードと提供されているコードを比較してください。
- コードが正常にコンパイルされたら、「閉じる」をクリックします。
新しい式列SPELLED_AMOUNTが、データ・モデルに表示されます。
図31-7 SPELLED_AMOUNT式列作成後のデータ・モデル
画像の説明
- レポートを保存します。
31.4 注文の品目を返す問合せの作成
この項の手順では、顧客の注文の品目を返す問合せをデータ・モデル・ビューで手動作成する方法を説明します。取得したデータを使用して、請求書のスタブの注文詳細情報を表示します。
問合せを手動作成するには:
- データ・モデル・ビューで、ツール・パレットの「SQL問合せ」ツールをクリックし、データ・モデル・ビューの空いている場所をクリックして、「SQL問合せ文」ダイアログ・ボックスを表示します。
- 「SQL問合せ文」フィールドに、次の
SELECT
文を入力します。
SELECT ALL
ORDER_ITEMS.LINE_ITEM_ID,
ORDER_ITEMS.ORDER_ID,
ORDER_ITEMS.PRODUCT_ID,
ORDER_ITEMS.UNIT_PRICE,
ORDER_ITEMS.QUANTITY,
PRODUCT_INFORMATION.PRODUCT_NAME
FROM ORDER_ITEMS, PRODUCT_INFORMATION
WHERE PRODUCT_INFORMATION.PRODUCT_ID=ORDER_ITEMS.PRODUCT_ID
ORDER BY ORDER_ITEMS.LINE_ITEM_ID ASC
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
spellcash_code.txt からコードをコピーして「SQL問合せ文」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「SQL問合せ文」フィールドにコードを入力します。
|
- 「OK」をクリックします。次のように、問合せがデータ・モデル・ビューに表示されます。
図31-8 2つの問合せを持つデータ・モデル
画像の説明
- データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。
- 最初の問合せQ_1で、G_ORDER_IDの下にある「ORDER_ID」をクリックし、Q_2の「ORDER_ID1」まで線をドラッグします。
- 作成したデータ・モデルは次のようになります。
図31-9 2つの問合せ間のデータ・リンク
画像の説明
- レポートを保存します。
31.5 請求書イメージのインポートと印刷用のフィールドの配置
この項の手順では、請求書印刷レポートのマージンの調整方法と、請求書イメージでのフィールドの整列方法を説明します。任意の請求書をスキャンし、そのイメージを使用して、請求書レポートの一連のオブジェクトのレイアウトを設定できます。この項では、提供されているイメージblankcheck.jpg
を使用します。このイメージは、サンプル・フォルダspellcash
にあります。
31.5.1 レイアウト・オブジェクトの再配置
請求書イメージを挿入する前に、レイアウト・オブジェクトをまず再配置する必要があります。
レイアウト・オブジェクトを再配置するには:
- ツールバーの「ペーパー・レイアウト」ボタンをクリックして、ペーパー・レイアウト・ビューを表示します。
現在のレイアウトは次のようになります。
図31-10 レポートのペーパー・レイアウト・ビュー
画像の説明
- ツールバーの「マージン編集」ボタンをクリックします。
- ペーパー・レイアウト・ビューで、マージン枠(黒の太線)をクリックして選択します。
- 枠の上部で、中央にある黒いサイズ変更用の四角形をクリックして上にドラッグし、マージンが0.25インチ(0.5 cm)になるようにします。
ヒント
中央の四角形をクリックした場合、マウス・ボタンを押している間は基準線として点線が表示されます。この基準線を使用すると、ペーパー・レイアウト・ビューでオブジェクトを目的の位置に正確に配置できます。
|
操作が完了すると、ペーパー・レイアウト・ビューは次のようになります。
図31-11 マージン・サイズ変更後のペーパー・レイアウト・ビュー
画像の説明
- レポートを保存します。
31.5.2 空白の請求書イメージのインポート
この項では、空白の請求書イメージをインポートします。請求書は、任意のものを使用できます。この例では、サンプル・ディレクトリ「spellcash」に入っているblankcheck.jpg
(提供されているイメージ)を使用します。
空白の請求書イメージをインポートするには:
- 枠が選択されている状態で、「挿入」→「イメージ」を選択します。
- 「イメージ・インポート」ダイアログ・ボックスで、「ファイル」が選択されていることを確認します。
- 「ファイル」の横のテキスト・ボックスで、イメージ
blankcheck.jpg
の場所を入力するか参照して指定し、「OK」をクリックして、空白の請求書イメージをペーパー・レイアウト・ビューで表示します。
- ツールバーの「マージン編集」ボタンをクリックして、編集モードに戻ります。イメージが表示されなくなります。
31.5.3 請求書印刷用フィールドの設定
この項の手順では、ペーパー・レイアウト・ビューの各種ツールを使用して請求書レポートのルック・アンド・フィールを変更する方法を説明します。ここでは、請求書に表示するレイアウトに従って、レイアウト・オブジェクトおよびフィールドを追加、変更する方法を学習します。ここでは特定フィールドのコピーを作成しますが、これらは請求書のスタブを作成するために、第31.6項「支払い情報および注文詳細情報を備えた請求書のスタブの作成」で使用します。
請求書印刷用フィールドを設定するには:
- ペーパー・レイアウト・ビューで、「Order No.」ボイラープレート・テキストをクリックします。
- ツールバーの「親枠を選択」ボタンをクリックします。
ペーパー・レイアウト・ビューでは、繰返し枠「R_G_ORDER_ID」が選択されています。また、オブジェクト・ナビゲータの「ペーパー・レイアウト」でも、「R_G_ORDER_ID」が選択されています。
- 「R_G_ORDER_ID」が選択されている状態で、下部中央のサイズ変更ハンドルをクリックし、ページ下部の8.75インチ(22 cm)までドラッグします。
ヒント
ペーパー・レイアウト・ビューでサイズ変更ハンドルをクリックしてドラッグする場合、オブジェクトを容易に配置できるように定規に沿って基準線が表示されます。この場合、水平基準線が8.75インチ(22 cm)に到達するまで、下部中央のサイズ変更ハンドルをページの下方にドラッグします。
|
- ツールバーの「フレックス・オフ」ボタンをクリックして、フレックス・モードをオフにします。
- ペーパー・レイアウト・ビューで、「F_ORDER_TOTAL」をクリックした後、[Ctrl]を押しながら[C]を押します。
- レイアウト・オブジェクトの下の領域をクリックした後、[Ctrl]を押しながら[V]を押します。
新しいフィールド「F_ORDER_TOTAL1」が表示されます。このフィールドが他のレイアウト・オブジェクトの上に表示される場合は、このフィールドをクリックし、他のレイアウト・オブジェクトの下にドラッグします。ペーパー・レイアウト・ビューでは次のようになります。
図31-12 F_ORDER_TOTAL1が追加されたペーパー・レイアウト・ビューの一部
画像の説明
- 「F_ORDER_DATE」フィールドをコピーして他のフィールドの下に貼り付けます。レイアウトは次のようになります。
図31-13 F_ORDER_DATE1が追加されたペーパー・レイアウト・ビューの一部
画像の説明
注意
フィールドをコピーして貼り付ける場合、Reports Builderではフィールド・サイズが維持されます。そのため、F_ORDER_DATEをコピーして貼り付けると、そのフィールドのフルネームが表示されなくなる場合があります。フィールドを選択した状態でフィールドの右境界線をクリックして右にドラッグすると、フィールドのフルネームF_ORDER_DATE1が表示されます。
|
- 「F_CUSTOMER_NAME」フィールドをコピーして他のレイアウト・オブジェクトの下に貼り付けます。レイアウトは次のようになります。
図31-14 F_CUSTOMER_NAME1が追加されたペーパー・レイアウト・ビューの一部
画像の説明
- キーボードの[Ctrl]を押しながら[C]を押した後、[Ctrl]を押しながら[V]を押す操作を2回行い、「F_CHECK_NO」のコピーを2つ作成します。
注意
このフィールドは小さいので、見つけにくい場合があります。オブジェクト・ナビゲータを使用すると、このフィールドを見つけて選択できます。オブジェクト・ナビゲータの「ペーパー・レイアウト」でフィールドをクリックすると、対応するフィールドがペーパー・レイアウト・ビューでも選択されます。
|
- これら2つの新しいフィールドを、他のレイアウト・オブジェクトの下に配置します。レイアウトは次のようになります。
図31-15 F_CHECK_NO1およびF_CHECK_NO2が追加されたペーパー・レイアウト・ビューの一部
画像の説明
注意
2つの新しいフィールド(F_CHECK_NO1およびF_CHECK_NO2)のサイズを拡張して見やすくしましたが、これらのフィールドのサイズは変更する必要はありません。
|
- ツール・パレットの「フィールド」ツールをクリックします。
- 他のレイアウト・オブジェクトの下に約5インチ(12.5 cm)の長さのフィールドを描画します。レイアウトは次のようになります。
図31-16 F_1フィールドが追加されたペーパー・レイアウト・ビューの一部
画像の説明
- 新しいフィールド「F_1」を選択した状態で、ツール・パレットの「塗りつぶしカラー」ツールをクリックし、「塗りなし」を選択します。
- ツール・パレットの「線カラー」ツールをクリックして、「枠なし」を選択します。
- フィールド「F_1」をダブルクリックして、プロパティ・インスペクタを表示します。
- 「名前」プロパティを「F_SPELLED_AMOUNT」に設定します。
- 「フィールド」で、「ソース」プロパティを「SPELLED_AMOUNT」(第31.3.2項「データ・モデルでの式列の作成」で作成した式列)に設定します。
- レポートを保存します。
31.5.4 空白の請求書イメージに合せた新規フィールドの再配置
この項の手順では、作成したフィールドをペーパー・デザイン・ビューで再配置する方法を説明します。提供されている空白の請求書イメージをガイドとして使用します。
- ツールバーの「ペーパー・デザイン」ボタンをクリックして、ペーパー・デザイン・ビューにレポートを表示します。
注意
別のビュー(ペーパー・レイアウト・ビュー、データ・モデル・ビューなど)がアクティブなときに「ペーパー・デザイン」ボタンをクリックすると、Reports Builderで問合せおよびレイアウトが実行されます。「ペーパー・デザイン」ボタンをクリックしたときにエラー・メッセージが表示された場合は、元のビューに戻り、変更内容を確認してください。レポートは、提供されているサンプル・レポートspellcash.rdf と常に比較できます。
|
レイアウト・オブジェクトと空白の請求書イメージは、次のように表示されます。
図31-17 請求書レポートのペーパー・デザイン・ビューの一部
画像の説明
注意
プレビューでは、請求書レポートのようには見えません。この項の手順では、レポートが適切な請求書のように表示されるように、フィールドを移動する方法を説明します。
|
- ペーパー・デザイン・ビューで、空白の請求書イメージ内のAmountボックスに、「F_ORDER_TOTAL」フィールドを配置します。
注意
Reports Builderを閉じた後、このレポートの作成に戻る場合は、ペーパー・デザイン・ビューでフィールドを移動できるように、ツールバーの「フレックス・オフ」ボタンを必ずクリックしてください。
|
- ツールバーの「右に整列」ボタンをクリックします。請求書のこの部分は次のようになります。
図31-18 空白の請求書の「Amount」領域
画像の説明
- 空白の請求書の「Check No.」ボックスに「F_CHECK_NO」フィールドを配置し、テキストを中央揃えにします。
- 空白の請求書の「Date」ボックスに「F_ORDER_DATE」フィールドを配置し、テキストを中央揃えにします。
- 請求書イメージの右上隅に「F_CHECK_NO2」フィールドを配置し、テキストを右詰めにします。
- 空白の請求書イメージの「Pay Exactly:」テキストの横に「F_SPELLED_AMOUNT」フィールドを配置します。
- 空白の請求書イメージの「Pay To The Order Of:」テキストの横に「F_CUSTOMER_NAME」フィールドを配置します。
請求書は次のようになります。
図31-19 フィールド配置後の請求書イメージ
画像の説明
- レポートを保存します。
31.5.5 請求書のルック・アンド・フィールの変更
この項の手順では、請求書データのフォント、位置合せおよび書式設定を変更する方法を説明します。
請求書のルック・アンド・フィールを変更するには:
- ペーパー・デザイン・ビューで、「編集」→「すべて選択」を選択します(または[Ctrl]を押しながら[A]を押します)。
- 「書式」→「フォント」を選択します。
- 「フォント」ダイアログ・ボックスで、「Arial」フォント、「標準」スタイル、サイズ「10」を選択し、「OK」をクリックします。
- ペーパー・デザイン・ビューで任意の場所をクリックし、すべてのオブジェクトの選択を解除します。
ヒント
オブジェクトを選択解除できない場合は、オブジェクト・ナビゲータで任意の項目をクリックします。オブジェクト・ナビゲータで選択されていたオブジェクトが、選択解除されます。
|
- ペーパー・デザイン・ビューで、「F_CHECK_NO2」(請求書の右上隅の請求書番号)をクリックして、フォントを「Arial」、「太字」、「12」ポイントに変更します。
- 「F_ORDER_TOTAL」フィールド(請求書の「Amount」ボックスの数値)をクリックします。
- ツールバーの「通貨」ボタンをクリックし、「カンマ」ボタンをクリックします。
- 「F_ORDER_TOTAL」が選択されている状態で、ツールバーの「10進桁を追加」ボタンを2回クリックします。「Amount」には
$46,257.00
のように表示されます。
- 「ツール」→「プロパティ・インスペクタ」を選択し、「F_ORDER_TOTAL」のプロパティ・インスペクタを表示します。
- 「書式マスク」プロパティの横の「フィールド」で、既存の書式マスクの先頭に"
****
"を追加し、プロパティ・インスペクタを閉じます。
「Amount」には、****$46,257.00
のように表示されます。
- [Shift]を押しながら「F_CUSTOMER_NAME」フィールドおよび「F_SPELLED_AMOUNT」フィールドをクリックして選択し、フォントを「Times New Roman」、「12」ポイントに変更します。
レポートの表示は次のようになります。
図31-20 書式設定後の請求書
画像の説明
注意
もう1つのボイラープレート・テキストがまだイメージ上に重ねて配置されています。このテキストについては、この章の後述の手順で再配置します。
|
- レポートを保存します。
31.6 支払い情報および注文詳細情報を備えた請求書のスタブの作成
請求書印刷レポートを作成する場合は、請求書の支払い情報や注文詳細情報が含まれる請求書のスタブを作成することもあります。この項の手順では、支払先、金額、日付、請求書番号などの支払い情報が含まれる請求書のスタブを作成する方法を説明します。
次に、データ・モデル内の2番目の問合せで取得した情報を使用して、単純な表形式レポートを請求書のスタブに出力し、請求書に関連する注文情報を表示します。
31.6.1 ペーパー・デザイン・ビューでの請求書のスタブの作成
この項の手順では、ペーパー・デザイン・ビューのツールを使用して請求書レポートのスタブを作成する方法を説明します。前述の項で作成したフィールドを再配置して、レポートを実行するたびに各請求書の対応するスタブが表示されるようにします。
また、ペーパー・デザイン・ビューで基準線を作成し、請求書レポート内のデータとスタブ情報を簡単に整列できるようにします。
請求書のスタブを作成するには:
- ツールバーの「フレックス・オフ」ボタンをクリックします。
- 左側の垂直定規をクリックしてマウスを右にドラッグし、線がテキスト"Pay Exactly"に揃うようにします。
- マウス・ボタンを放すと、次の図のように基準線が表示されます。
図31-21 水平基準線が付いた請求書レポートのペーパー・デザイン・ビューの一部
画像の説明
注意
前述の図で、"Pay Exactly"の右側に表示されている黒の破線が基準線です。
|
- 「Order No.」ボイラープレート・オブジェクト(請求書の左上隅)をクリックし、それを新しい基準線に沿って配置し、次のように請求書イメージの下3.25インチ(8.5 cm)の位置になるようにします。
図31-22 「Order No.」ボイラープレート・テキストが付いた請求書のペーパー・デザイン・ビューの一部
画像の説明
- 最初の基準線の横に整列されるもう1つの垂直基準線を作成します。
- 「F_ORDER_ID」フィールド(上の図では"2354"が表示されているフィールド)をクリックし、それを次のように「Order No.」フィールドの横に配置します。
図31-23 ペーパー・デザイン・ビューの「Order No.」フィールドと「F_ORDER_ID」フィールド
画像の説明
注意
オブジェクト・ナビゲータで「ペーパー・レイアウト」→「メイン・セクション」→「ボディ」を選択すると、いつでもフィールドを選択できます。これらのフィールドは、選択された状態でペーパー・デザイン・ビューに表示されます。
|
- ここで、「Order Date」ボイラープレート・テキストをクリックし、それを次のように「Order No.」の真下に配置します。
図31-24 ペーパー・デザイン・ビューの「Order Date」フィールド
画像の説明
- オブジェクト・ナビゲータで「F_ORDER_DATE1」フィールド(「F_ORDER_DATE」フィールドから作成したコピー)を見つけ、それをクリックして、次のように「Order Date」ボイラープレート・テキストの横に配置します。
図31-25 「Order Date」テキストの横の「F_ORDER_DATE1」フィールド
画像の説明
- 「Order Total」ボイラープレート・テキストを「Order Date」ボイラープレート・テキストの真下に配置します。
- 「F_ORDER_TOTAL1」フィールドを「Order Total」ボイラープレート・テキストの横に配置します。
- 「Check No.」ボイラープレート・テキストを「Order Total」ボイラープレート・テキストの真下に配置します。
- 「F_CHECK_NO1」を「Check No.」ボイラープレート・テキストの横に配置します。
請求書のスタブは次のようになります。
図31-26 ペーパー・デザイン・ビューでの請求書のスタブの一部
画像の説明
- 日付、金額、請求書番号を含むボックスに揃えて、2本の垂直基準線をまた作成します。基準線は、次のようになります。
図31-27 ペーパー・デザイン・ビューの2本目の垂直基準線
画像の説明
注意
この基準線を作成するには、左側の定規をクリックし、線が日付、請求書番号、金額を含むボックスの左側に揃うまでマウスをドラッグします。
|
- 「Customer」ボイラープレート・テキストをクリックして配置し、次のように2本目の基準線と垂直方向が揃い、「Order No.」テキストと水平方向(3.25インチ(8.5 cm)の位置)が揃うようにします。
図31-28 ペーパー・デザイン・ビューの「Customer」フィールド
画像の説明
- 「F_CUSTOMER_NAME1」フィールドを「Customer」ボイラープレート・テキストの横に配置します。これらのレイアウト・オブジェクトは次のようになります。
図31-29 「Customer」フィールドと「F_CUSTOMER_NAME1」フィールド
画像の説明
ヒント
「F_CUSTOMER_NAME1」フィールドがスペースに収まらない場合は、フィールドのサイズを変更する必要もあります。この場合、該当するフィールドを選択して、顧客名(Harrison Sutherland)用の領域を十分に確保しながら、右中央のサイズ変更ハンドルを左にドラッグします。
|
- 「F_C_STREET_ADDRESS」フィールドを「F_CUSTOMER_NAME1」の真下に配置します。
- 「F_C_CITY」を「F_C_STREET_ADDRESS」の真下に配置します。
- 「F_C_STATE_PROVINCE」フィールドを「F_C_CITY」の横に配置します。
- 「F_C_POSTAL_CODE」フィールドを「F_C_STATE_PROVINCE」の横に配置します。
- 「F_C_COUNTRY_ID」フィールドを「F_C_POSTAL_CODE」の横に配置します。
- 「F_CUSTOMER_ID」フィールドを「F_C_CITY」フィールドの真下に配置します。
- 「Customer No.」ボイラープレート・テキスト(B_CUSTOMER_ID)を「F_CUSTOMER_ID」フィールドのすぐ左に配置します。請求書のスタブのこの部分は次のようになります。
図31-30 ペーパー・デザイン・ビューでの請求書のスタブの一部
画像の説明
- ここで、追加した情報を書式設定します。請求書のスタブ内の次のボイラープレート・テキスト・オブジェクトを選択します。
- Order No.
- Order Date
- Order Total
- Check No.
- Customer
- Customer No.
- フォントを「太字」に変更し、テキストを右詰めにします。
- 「F_ORDER_TOTAL1」をクリックし、ツールバーの「通貨」ボタンと「カンマ」ボタンをクリックします。
- ツールバーの「10進桁を追加」ボタンを2回クリックします。
請求書のスタブは次のようになります。
図31-31 書式設定後の請求書のスタブ
画像の説明
- レポートを保存します。
31.6.2 請求書のスタブへの注文詳細情報の追加
前述の項では、支払い情報(請求書自体に記載されている情報のコピー)を表示する請求書のスタブを作成しました。この項の手順では、単純な表形式レポートを作成して、請求書のスタブに注文詳細情報を追加する方法を説明します。レポート・ブロック・ウィザードで単純な表形式レポートを作成してから、ペーパー・デザイン・ビューでデータを書式設定します。
注文詳細情報を追加するには:
- ペーパー・レイアウト・ビューで、ツール・パレットの「レポート・ブロック」ツールをクリックします。
- 新規レイアウトの四角形領域をドラッグして、レポート・ブロック・ウィザードを表示します。
- レポート・ブロック・ウィザードの「スタイル」ページで、「表形式」を選択して「次へ」をクリックします。
- 「グループ」ページで、「使用可能グループ」リストの「G_LINE_ITEM_ID」をクリックし、「下」をクリックして印刷方向を指定し、「表示グループ」リストに移動し「次へ」をクリックします。
- 「フィールド」ページで、「使用可能フィールド」リストの次の各フィールドをクリックし、「>」ボタンをクリックしてそれらのフィールドを「表示フィールド」リストに移動して、「次へ」をクリックします。
- LINE_ITEM_ID
- PRODUCT_ID
- PRODUCT_NAME
- UNIT_PRICE
- QUANTITY
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更し、「次へ」をクリックします。
- 「テンプレート」ページで、「テンプレートなし」を選択し、「終了」をクリックして、ペーパー・レイアウト・ビューでレポート・レイアウトを表示します。新しいフィールドおよびレイアウト・オブジェクトは、元のレイアウト・オブジェクトの下に表示されます。
- ペーパー・レイアウト・ビューで、新しいフィールドおよびレイアウト・オブジェクトが繰返し枠R_G_ORDER_ID内にあり、すべてのレイアウト・オブジェクトが単一ページ(8.75インチ内(22 cm))に収まっていることを確認します。
- ツールバーの「ペーパー・デザイン」ボタンをクリックし、レポートを実行してペーパー・デザイン・ビューに表示します。表示は次のようになります。
図31-32 請求書印刷レポート(注文詳細情報の書式は未設定)
画像の説明
新しいレポート・ブロックは書式設定されていないので、レポートの他の部分のようにデータを書式設定します。
- [Shift]を押しながら次の新しい各ラベルをクリックし、ツールバーの「太字」ボタンをクリックして、フォントを「Arial」の「10」ポイントに変更します。
- Line
- Product ID
- Product Name
- Unit Price
- Quantity
- 「Line」(F_LINE_ITEM_ID)の下にあるデータをクリックし、ツールバーの「中央に整列」ボタンをクリックします。
- 「Unit Price」(F_UNIT_PRICE)の下にあるデータをクリックし、ツールバーの「右に整列」ボタンをクリックします。
- データが選択されている状態で、ツールバーの「通貨」ボタン、「カンマ」ボタンをクリックし、「10進桁を追加」ボタンを2回クリックします。
- 右側のサイズ変更ハンドルをクリックし、データ・フィールドの右の境界線と「Unit Price」ラベルを揃えます。
- 「Quantity」(F_QUANTITY)の下にあるデータをクリックし、ツールバーの「右に整列」ボタンをクリックしてから、データ・フィールドの右の境界線が「Quantity」ラベルと揃うようにフィールドをサイズ変更します。
- レポートを保存します。
レポートは次のようになります。
図31-33 最終的な請求書レポート(スペル表記された金額とスタブを含む)
画像の説明
注意
提供されているサンプル・レポートspellcash.rdf と結果を比較することもできます。
|
31.7 まとめ
これで、すべての作業が完了しました。請求書の金額がスペル表記され、スタブに支払いおよび注文の詳細情報が出力されるレポートは、正常に作成されました。この章で学習した内容は次のとおりです。
- レポート・ウィザードで単純なレポート定義を作成する。
- ペーパー・レイアウト・ビューのツールで、空白の請求書イメージをインポートし、レポートにフィールドを追加する。
- 数値をスペル表記して返すPL/SQLファンクションを作成する。
- PL/SQLファンクションに基づく式列を作成する。
- データ・モデル・ビューのツールで、2つの問合せをリンクする。
- ペーパー・デザイン・ビューのツールで、請求書印刷レポートを書式設定し、適切な請求書で出力する。
- 請求書の情報の複製を表示するスタブを作成する。
- レポート・ブロック・ウィザードで、請求書のスタブに注文詳細情報を表示する単純な表形式レポートを作成する。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。