カスタムSQL

<< 目次を表示 >>

ページ位置:  ドキュメントの生成 > DOCX/PDF/RTFドキュメント > ドキュメントのテンプレート > テンプレート部品 > テンプレート部品の定義 >

カスタムSQL

独自に定義したSQL文の内容を元にドキュメントとして出力する内容を定義する場合には、「カスタムSQL」形式でテンプレート部品を定義し、SQLのクエリを定義します。そのクエリで戻される内容を、テンプレートエディタの「カスタム」セクションで利用することができます。なお、定義するクエリはDBMSリポジトリの種類によって変わりますので、その点を考慮する必要があります。

 

 

カスタムSQLのテンプレート部品を定義する

#

操作方法

1

テンプレート部品をテンプレートエディタで開きます。

(参考:テンプレート部品の定義)

2

ツールバーのボタンからテンプレートのオプションダイアログを開きます。

3

カスタムクエリのタブを選択します。

4

テンプレート部品の種類の選択肢で、「カスタムSQL」を選択します。

5

テンプレート部品の種類の選択肢の下にある入力欄に、独自に定義するSQLを入力します。このSQLでは、1つ以上の結果を戻す必要があります。以下はその一例です。

 

SELECT DocName AS TemplateName, Author AS TemplateLocation

FROM t_document WHERE DocType = 'SSDOCSTYLE' and (IsActive = 1)

 

なお、ドキュメント処理の対象になっているパッケージやダイアグラム・要素のIDを渡すこともできます。この場合には、#PACKAGEID#・#DIAGRAMID#あるいは#OBJECTID#のマクロを利用して下さい。以下はその例です。

 

    SELECT Count(Object_Type) AS CountOfActors

    FROM t_object

    WHERE Object_Type = "Actor" and Package_ID = #PACKAGEID#

 

また、生成されるドキュメントでリンクとして認識されるような内容を出力することもできます。この場合には、列名の末尾に'Hyperlink'の文字を含む必要があります。

 

JET(EAPX/EAP)ファイルの場合には、 {Elements-Hyperlink} のように指定します。他のDBMSの場合には、 {Elements.Hyperlink} のように指定します。

 

この場合の列の値は以下のような形式でなければなりません。

 

    {guid}LABEL

 

この形式で、 {guid} は要素のGUIDです。LABELはリンクが設定される文字列で、要素名などを指定します。以下はこの一例です。

 

    {123-456-7890}Class2

 

この場合には、生成されるドキュメントには 'Class2' の文字列が表示され、リンクが設定されます。このリンクをクリックすると、このClass2の要素の説明部分に移動します。

 

次の例は、要素の親クラスについて、リンクが設定された内容を戻す例です。

 

   SELECT t_object.ea_guid CONCAT t_object.Name

    AS [BaseClassName-Hyperlink]

    FROM t_object, t_connector

    WHERE t_connector.Start_Object_ID = #OBJECTID#

    AND t_object.Object_ID = t_connector.End_Object_ID

    AND t_connector.Connector_Type = 'Generalization'

 

JET(EAPX/EAP)のプロジェクトファイルの場合には、 CONCAT を &.に置換して下さい。以下のように記述する必要があるDBMSもあります。

 

    CONCAT (t_object.ea_guid,t_object.Name))

 

このクエリは複数の項目を返すこともできます。複数の項目を返す場合には、カンマ区切りでリンクを作成します。リンク先としては、要素・属性・操作・ダイアグラム・パッケージのいずれかが可能です。

 

同様の方法で、強制的に書式も含めて出力したい場合には、以下のように設定します。

 

    カスタム >

  {Name}

    <fieldname>-Formatted    : JET(EAP)ファイルの場合

   <fieldname>.Formatted    : その他のDBMSの場合

    < カスタム

 

カスタムSQLの文では、上記の指定に適合するように別名を指定する必要があります。以下は、MySQLでの例です。

 

    SELECT ea_guid AS CLASSGUID, Object_Type AS CLASSTYPE, Name,

       Note as "Note.Formatted" FROM t_object

    Where Object_ID=#OBJECTID#

6

OKボタンを押し、ダイアログを閉じます。

7

テンプレート内に「カスタム」セクションを追加します。

8

カスタムセクション内で右クリックして、「カスタムフィールドの挿入」 を選択します。

(参照:出力する内容の指定)

9

SQLで返される内容に含まれる名前を指定します。

指定したらOKボタンを押します。

10

必要に応じて、カスタムフィールドの追加を繰り返します。

(参照:テンプレート部品の利用)

11

変更内容を保存します。

 

注意:

  • 「カスタム」セクションについては、テンプレートのオプションで指定できる、要素などの条件指定は適用されません。
  • モデルの検索で利用できるマクロ #..# は、呼び出しの内容でも利用できます。具体的には、次の項目が利用できます。
  • #OBJECTID# は対象の要素のElementIDが設定されます。
  • #PACKAGEID# あるいは #Package# は対象のパッケージのPackageIDが設定されます。
  • #Author# は、要素の作成時に作者として設定される内容が設定されます。
  • 入力するSQLの内容が正しい結果を返すかどうか確認したい場合には、検索ルールの定義のエディタの「SQL」タブを利用すると便利です。

 

 

参照: