前回紹介したラッパークラスには、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 件のコメント:
コメントを投稿