2012年5月30日水曜日

【SVF】SVF for PDFラッパークラスの使い方

前回の続き。
前回紹介したラッパークラスには、DataTableを渡すとルールに従ってズバーッと出力してくれるメソッドを用意していますが、肝心のルールについて記載していませんでした。すいません。

帳票設定サンプル

SVF Designer で SVFの帳票定義ファイル(以下、様式ファイル)を作成するとき、DBから取得したデータをセットするフィールドは、以下のルールでフィールド名を付けます。

フィールド名と、データを取得するSQLの列名を一致させること。

この後で挙げるSQLのサンプルと合わせて見ていただきたいのですが、例えば上記のような様式ファイルを作成して、フィールド名は以下のように設定したとします。
商品名 PRODUCT_NAME
単価 PRICE
数量 NUM
単位 UNIT
小計 LINE_TOTAL

この場合、この様式ファイルに対してSQLは以下のように書きます。

出力するデータを取得するSQLサンプル

DBから印刷対象を取得するSQLのルールは、(様式ファイルのルールと同じことですが)取得結果を格納しているDataTableの列名が様式ファイルのフィールド名と一致することです。

例えばこんな風に、SELECT文の取得項目に対して「AS」で列名を(様式ファイルの定義に合わせて)定義します。
SELECT
    M.PRODUCT_NAME
    ,M.PRICE
    ,T.NUM
    ,T.UNIT AS UNIT
    ,M.PRICE * T.NUM AS LINE_TOTAL
FROM
    T_ORDER T
    ,M_PRODUCT M
WHERE
    T.ORDER_NUMBER = :ORDER_NUMBER
AND T.PRODUCT_ID = M.PRODUCT_ID

このように、様式ファイルのフィールド名と、データを取得してくるSQLの列名を一致させておけば、勝手にラッパークラス側でマッピングして出力してくれます。わぉ。

これちなみに、究極的にはDBのテーブルの列名と様式ファイルのフィールド名を完全に一致させておけば、
SELECT * FROM ~
でいけてしまいます。
あ、SQLの整形とC#用のコード化は、こちらをどうぞ(宣伝)。
「SQLフォーマッター For WEB」で整形したSQLをStringBuilder化するブックマークレットを作りました

ラッパークラス利用のサンプル

というわけで、とりあえずの使い方サンプルコード。サンプルなので、普通のMainメソッドを持つクラスです。

サンプルコード


DBからデータを取得してDataTableに格納する部分は「こんな感じで」っていうサンプルなので、DB無しで動きを確認したい場合は、以下を参考にDataTableオブジェクトを手動で作って試してみてもいいかと。
C#学習メモ)DataSetに手動で値を設定する方法(C#)


さて次回は、ASP.NET MVCにおいて、大量の帳票印刷PGを効率よく書くためのサンプルについて書いてみようと思います。

0 件のコメント: