Oracle Reports レポート作成ガイド 10gリリース2(10.1.2) B25068-01 |
|
この章では、バーコードを含むレポートについて学習します。この章の手順に従うと、図42-1に示すようなレポート出力を生成できます。
この例では、ペーパー出力用とWeb用の2つのレポートを作成します。ペーパー・レポートには、ある会社の複数の品目を注文したある顧客に対する請求書が表示されます。バーコードは、注文の追跡情報を示します。
これらのサンプル・レポートの作成を通して、次を行います。
バーコードを含むサンプル・ペーパー・レポートを表示するには、サンプル・フォルダBarcodeBeanPaper
を開き、result¥ShippingManifest.pdf
を開きます。バーコードを含むサンプルのWebベースJSPレポートを表示するには、サンプル・フォルダBarcodeBeanWeb
を開き、result¥ShippingManifestWeb.jsp
を開きます。これらのレポートの開き方の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。この章で使用されているサンプル・ファイルのリストと説明を表42-1に示します。
この章の例を作成するには、サンプル・ファイルが必要です(前述の「使用例」を参照)。また、Oracle Database付属のOrder Entryサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。
JavaBean(ペーパーベース・レポート用またはJSPベースのWebレポート用)を使用する前に、いくつかの手順を実行する必要があります。
この項では、REPORTS_CLASSPATH
環境変数をJavaBeanの場所で更新します。Reports Builderを起動すると、この新しいクラス・パスからバーコードBeanの場所が認識されます。
REPORTS_CLASSPATH
環境変数を探します。
oraclebarcode.jar
ファイルの場所を、REPORTS_CLASSPATH
の既存のエントリに付け加えます。たとえば、次のようになります。
これでレポートを作成する準備が完了しました。ペーパーベース・バーコード・レポートを作成する方法を学習するには、第42.2項「ペーパー出力用バーコード・レポートの作成」を参照してください。Web用のJSPベース・バーコード・レポートを作成する方法を学習するには、第42.3項「Web用バーコード・レポートの作成」を参照してください。
この項では、バーコードJavaBeanをインポートしてから、特定の顧客に対する請求書を表示するペーパーベースのレポートを作成します。この請求書には、顧客の住所、注文内容および注文の追跡番号を表すバーコードが表示されます。このバーコードをスキャンすることで、注文の状態を確認できます。
バーコードJavaBeanを使用してペーパー・レポートを作成するには、まず2つのJavaクラスをReports Builderにインポートする必要があります。これらのJavaクラスをインポートすると、Reports Builderによってレポートの作成に必要なパッケージが自動的に作成されます。
oracle.apps.barcode.util.BarCodeConstants
oracle.apps.barcode.BarCodeMaker
をインポートします。
このレポートでは、情報を格納するパッケージを作成する必要があります。
globals
と入力します。
PACKAGE globals IS bcobj ora_java.jobject; barcode_to_use varchar2(256); tempdir varchar2(100); directory_sep varchar2(2); END;
shippingmanifest_<自分のイニシャル>.rdf
という名前で保存します。
これで、レポートのグローバル情報を格納するパッケージの作成が完了しました。
Before Reportトリガーを使用して、レポートの実行前に実行される特定のタスクを実行できます。ここでは、レポートで使用するバーコードのタイプ、およびバーコード・イメージを保存する一時ディレクトリを定義します。
function BeforeReport return boolean is begin globals.barcode_to_use := BarCodeConstants.BAR_CODE_128; globals.bcobj := barcodemaker.new(); return (TRUE); end;
値BarCodeConstants.BAR_CODE_128
を有効な任意の値に変更することによって、使用するバーコードのタイプを変更できます。どの値が有効かを知るには、オブジェクト・ナビゲータの「プログラム・ユニット」ノードでBarCodeConstantsパッケージ仕様部を開き、パッケージの内容を確認します。
これで、レポートを実行したときにバーコード・タイプを設定するトリガーの作成が完了しました。
この項では、レポートがサンプル・スキーマからデータを取得するために使用する問合せを手動で作成します。
SELECT ALL CUSTOMERS_A1.CUST_FIRST_NAME, CUSTOMERS_A1.CUSTOMER_ID, CUSTOMERS_A1.CUST_LAST_NAME, CUSTOMERS_A1.CUST_ADDRESS.STREET_ADDRESS, CUSTOMERS_A1.CUST_ADDRESS.POSTAL_CODE, CUSTOMERS_A1.CUST_ADDRESS.CITY, CUSTOMERS_A1.CUST_ADDRESS.STATE_PROVINCE, CUSTOMERS_A1.CUST_ADDRESS.COUNTRY_ID, ORDERS.ORDER_ID, ORDERS.ORDER_DATE, ORDERS.ORDER_TOTAL, ORDER_ITEMS.LINE_ITEM_ID, PRODUCTS.PRODUCT_NAME, ORDER_ITEMS.UNIT_PRICE, ORDER_ITEMS.QUANTITY, COUNTRIES.COUNTRY_NAME FROM CUSTOMERS CUSTOMERS_A1, ORDER_ITEMS, ORDERS, PRODUCTS, HR.COUNTRIES WHERE ((ORDER_ITEMS.ORDER_ID = ORDERS.ORDER_ID) AND (ORDERS.CUSTOMER_ID = CUSTOMERS_A1.CUSTOMER_ID) AND (ORDER_ITEMS.PRODUCT_ID = PRODUCTS.PRODUCT_ID) AND (CUSTOMERS_A1.CUST_ADDRESS.COUNTRY_ID = HR.COUNTRIES.COUNTRY_ID)) AND ORDERS.ORDER_ID = :P_ORDER_ID ORDER BY order_ID, line_item_ID
サンプル・スキーマが格納されているデータベースに接続されていない場合は、ここでログインする必要があります。接続文字列がわからない場合は、データベース管理者に問い合せてください。この例では、Order Entryサンプル・スキーマを使用します。
p_order_id
が作成されたことを示すメッセージが表示された後、「OK」をクリックします。
結果のデータ・モデルは次のようになります。
この項では、JavaBeanと通信してバーコードを作成し、生成されたイメージのファイル名を返す式列を作成します。
function ImageFilenameFormula return VarChar2 is myFileName varchar2(500); result varchar2(500); barcodeData VarChar2(50) := :customer_ID || :order_ID; begin myFileName := srw.create_temporary_filename; barcodemaker.setBarWidthInch(globals.bcobj, 0.005); barcodemaker.setBaseCodeData(globals.bcobj,barcodeData); barcodemaker.setBarCodeType(globals.bcobj,globals.barcode_to_use); barcodemaker.setFullPath(globals.bcobj, myFileName); barcodemaker.renderBarCode(globals.bcobj); return(myFileName); end;
function LineTotalFormula return Number is begin return (:quantity * :unit_price); end;
これでバーコード・レポートのデータ・モデルの作成が完了しました。このモデルには、バーコード情報を取得してレポートにバーコード・イメージを表示する式列と、発注合計額を表示する式列が含まれています。
作成したデータ・モデルと式列のPL/SQLは次のようになります。
レポートを実行するには、事前にレイアウトを作成する必要があります。
2354
と入力します。
M_G_CUST_FIRST_NAME_GRPFR
を削除してから、ツールバーのConfine Offボタンと「フレックス・オフ」ボタンをクリックします。
shippingmanifest.rdf
を参考に、次のような3つの四角形と3つのテキスト・オブジェクトを追加します。
この項の手順は、第42.2.1項「Reports BuilderへのJavaクラスのインポート」でインポートしたバーコードJavaBeanを使用するJSPベースのWebレポートを作成する方法を示しています。バーコードを含んだペーパー・レポートを作成する場合は、第42.2項「ペーパー出力用バーコード・レポートの作成」を参照してください。
JSPベースのWebレポートの作成方法がわからない場合は、作成方法を学習するには、Oracle Reportsチュートリアルを参照してください。
この項で作成するレポートは、ペーパー出力用に作成したレポートと同じです。つまり、特定の顧客に対する請求書を表示するレポートを作成します。この請求書には、顧客の住所、注文内容および注文の追跡番号を表すバーコードが表示されます。このバーコードを使用して、発注の状態を確認できます。
提供されているJSPレポートの最終バージョンを実行すると、これらの手順での作成結果を確認できます。ただし、Webに対してレポートを実行する前に、ソース・コード内でイメージの場所を更新する必要があるので注意してください(第42.3.3項「バーコードJavaBeanの初期化とそのプロパティの設定」を参照)。
注意 この項での作業を開始する前に、必要なファイルをすべてインポートしたか、およびJavaクラスをインポートしてクラス・パスを設定したかを確認する必要があります。第42.1項「この例の前提条件」および第42.2.1項「Reports BuilderへのJavaクラスのインポート」を参照してください。 |
JSPベースのWebレポートを作成する際に、既存のHTMLファイルをテンプレートとして使用できます。この項の手順では、Reports BuilderでのHTMLファイルの開き方とそのファイルにデータを追加する方法について説明します。
Examples
¥BarCodeBeanWeb¥source¥ShippingLabel.html
を開きます。
SELECT ALL CUSTOMERS_A1.CUST_FIRST_NAME, CUSTOMERS_A1.CUSTOMER_ID, CUSTOMERS_A1.CUST_LAST_NAME, CUSTOMERS_A1.CUST_ADDRESS.STREET_ADDRESS, CUSTOMERS_A1.CUST_ADDRESS.POSTAL_CODE, CUSTOMERS_A1.CUST_ADDRESS.CITY, CUSTOMERS_A1.CUST_ADDRESS.STATE_PROVINCE, CUSTOMERS_A1.CUST_ADDRESS.COUNTRY_ID, ORDERS.ORDER_ID, ORDERS.ORDER_DATE, ORDERS.ORDER_TOTAL, COUNTRIES.COUNTRY_NAME FROM CUSTOMERS CUSTOMERS_A1, ORDERS, HR.COUNTRIES WHERE ((ORDERS.CUSTOMER_ID = CUSTOMERS_A1.CUSTOMER_ID) AND (CUSTOMERS_A1.CUST_ADDRESS.COUNTRY_ID = HR.COUNTRIES.COUNTRY_ID)) AND ORDERS.ORDER_ID = :P_ORDER_ID ORDER BY order_ID
サンプル・スキーマが格納されているデータベースに接続されていない場合は、ここでログインする必要があります。接続文字列がわからない場合は、データベース管理者に問い合せてください。この例では、Order Entryサンプル・スキーマを使用します。
作成したデータ・モデルは次のようになります。
ShippingLabel_
<自分のイニシャル>
.jsp
という名前で保存して、このレポートのJSPベースのWebソースを作成します。
これで、レポート用のデータを取り込む問合せの作成が完了しました。
注文の追跡番号、注文元および注文先を取得するために、レポートに3つの式列を作成する必要があります。
function TrackingNumberFormula return char is begin return(:Customer_id||:Order_ID||:country_ID); end;
function OriginScanFormula return char is begin return('34324-OH-US'); end;
function DestinationScanFormula return char is begin return(:postal_code||'-'||:state_province||'-'||:country_ID); end;
これで、注文の追跡番号、注文元および注文先の値を取り込む3つの式列の作成が完了しました。作成したデータ・モデルは次のようになります。
JSPベースのWebレポートでJavaBeanと通信するには、JSPでそのJavaBeanを初期化する必要があります。ペーパー・レポートでJavaBeanを使用する場合とは異なり、Java Importerを使用してJavaクラスをインポートする必要はありません。
この項では、正しいデータを使用してバーコードが作成されるように、Beanのプロパティを設定する方法についても説明します。
ソース・ファイル(Examples
/BarCodeBeanWeb/source/ShippingManifestWeb.rdf
)を開いてWebソースの該当個所をレポートにコピーすると、コードを入力する手間が省けます。
JavaBeanが正しいバーコード・イメージを参照できるようにするには、まず正しいパスを使用してレポートを更新する必要があります。
ShippingLabel_
<自分のイニシャル>
)の「Webソース」ノードの横にあるビュー・アイコンをダブルクリックして、Webソース・ビューを表示します。
Define Path information for your barcode images
」というテキストを検索します。
d:¥¥temp¥¥docroot¥¥images¥¥
など)をポイントするようにパスを更新します。提供されているパスとの整合性を維持するようにしてください。initialize the java beans
<jsp:useBean id="BC" scope="page"
class="oracle.apps.barcode.util.BarCodeConstants" /> <jsp:useBean id="BM" scope="page" class="oracle.apps.barcode.BarCodeMaker" />
setting the barcodes properties
というテキストを検索します。
<jsp:setProperty name="BM" property="BarCodeType" value="<%= BC.BAR_CODE_128 %>" /> <jsp:setProperty name="BM" property="BarWidthInch" value="0.01"/> <jsp:setProperty name="BM" property="Directory" value="<%= BarcodePhysicalPath %>"/>
Define variables to hold the data for the three barcodes
<%! private String BarCodeData1 = "12345-XX-XX"; %> <%! private String BarCodeData2 = "12345-XX-XX"; %> <%! private String BarCodeData3 = "12345-XX-XX"; %>
replace this with your RW:FOREACH open tag
<rw:foreach id="R_G_SHIPMENT" src="G_SHIPMENT">
Replace this with your RW:FOREACH close tag
</rw:foreach>
**BARCODEShippingTrackingNumber**
というテキストを検索します。
<!-- Get the value of the TrackingNumber and assign it to the variable --> <rw:getValue id="BarCodeData1" src="TrackingNumber"/> <!-- Set the data for tbe barcode and the filename --> <jsp:setProperty name="BM" property="BaseCodeData" value="<%= BarCodeData1 %>"/> <jsp:setProperty name="BM" property="FileName" value="<%= BarCodeData1 %>"/> <!-- Render the barcode --> <% BM.renderBarCode(); %> <!-- View the image in the page --> <img src="assets/barcodes/<%= BarCodeData1 %>">
**BARCODEOriginScan**
<!-- Get the value of the OriginScan and assign it to the variable --> <rw:getValue id="BarCodeData2" src="OriginScan"/> <!-- Set the data for tbe barcode and the filename --> <jsp:setProperty name="BM" property="BaseCodeData" value="<%= BarCodeData2 %>"/> <jsp:setProperty name="BM" property="FileName" value="<%= BarCodeData2 %>"/> <!-- Render the barcode --> <% BM.renderBarCode(); %> <!-- View the image in the page --> <img src="assets/barcodes/<%= BarCodeData2 %>">
**BARCODEDestinationScan**
というテキストを検索します。
<!-- Get the value of the DestinationScan and assign it to the variable --> <rw:getValue id="BarCodeData3" src="DestinationScan"/> <!-- Set the data for tbe barcode and the filename --> <jsp:setProperty name="BM" property="BaseCodeData" value="<%= BarCodeData3 %>"/> <jsp:setProperty name="BM" property="FileName" value="<%= BarCodeData3 %>"/> <!-- Render the barcode --> <% BM.renderBarCode(); %> <!-- View the image in the page --> <img src="assets/barcodes/<%= BarCodeData3 %>">
Webレポートの作成が完了した後、このレポートをWebに対して実行し、結果を確認する必要があります。
作成したレポートが、次のようにWebブラウザに表示されます。
これで、すべての作業が完了しました。バーコードJavaBeanを使用してバーコード・イメージを生成するペーパー・レポートおよびJSPベースのWebレポートが完成しました。
この章で学習した内容は次のとおりです。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。
|
Copyright © 2003, 2005 Oracle. All Rights Reserved. |
|