Counter:30476 メニューValueSQL本体ダウンロードオブジェクトツリーダウンロードマニュアル
ユーザサポートDBMS別情報最新の20件2016-02-02
2015-05-22
2014-11-29
2013-10-31
2008-10-06
2008-08-28
2008-08-22
2008-02-19
2008-02-14
2008-02-05
2008-01-29
2008-01-22
|
最新機能につき、ただいま執筆中です・・・今しばらくお待ちください。 オブジェクトツリーオブジェクトツリーは、RDBMSにて管理されている各種オブジェクトをツリー状に表示します。 画面ValueSQLメイン画面の左側がオブジェクトツリーペインです。 ! オブジェクトツリーフォルダが存在しない場合はオブジェクトツリーと オブジェクト詳細エリア共に表示されません。 使用方法使用方法は、既にオブジェクトツリーが準備されている場合は、ツリーをエクスプローラと同じ要領で展開するだけです。 それぞれの要素は、階層、詳細表示方法などをカスタマイズすることができますので、対象RDBMSに最適なツリー構造をユーザーが自由に構築できます。また、業務によってテーブルが多く、区分けしてテーブルを表示させたい場合や、マスタと詳細テーブルは別に表示すると言った細かい構築が可能です。 カスタマイズ方法オブジェクトツリーのカスタマイズは基本的には単純な仕組みですが、階層が深くなるにつれ、少し複雑になります。 カスタマイズ基本ValueSQLのオブジェクトツリーの基本はWindowsフォルダ構成です。ValueSQL.exeが格納されているフォルダに「ObjectTree」というフォルダがあればその配下がそのままオブジェクトツリーとして読み込まれます。 用語定義
オブジェクトフォルダオブジェクトツリーを構築するには、「ObjectTree」フォルダ配下にフォルダ構成を作成することから始まります。Windowsのエクスプローラで行ってください。 例えば、Windowsフォルダ構成が、 ├─ObjectTree └第1階層 │ ├─第2階層_1 │ ├─第3階層_11 │ └─第3階層_12 │ └─第2階層_2 ├─第3階層_21 └─第3階層_22 の場合、オブジェクトツリーはそのまま となります。 なお、階層の深さ制限、名称規約はValueSQLが動作しているWindowsの規約に準じます。 オブジェクトフォルダは、表示順を変更する事、子オブジェクトフォルダを複数持つ事、子アイテムを複数持つ事、アイコンを変えることができます。 オブジェクトフォルダの表示順は、デフォルトでは名前順ですが、オブジェクトフォルダ直下に「n.Order」ファイル(nは数値)を置く事で、n順に並べ替えることができます。(Orderファイルの中身は関係ありません。兄弟オブジェクトフォルダの中にOrderファイルがあればそのnと比較して、小さいほうが上に表示されます。) 「子オブジェクトフォルダを持つ事」は上記でご理解頂けたと思いますが、それ以外の事については、下に説明します。 要素選択時実行スクリプト各要素が選択されたとき(クリックされたとき)、スクリプトを実行することができます。 例えば、 ├─ObjectTree └PostgreSQLV8(Sample) └データベース └ Default.Script (クリック時実行スクリプトファイル) という構造のフォルダ・ファイルがあり、「Default.Script」ファイルの中身が select * from pg_database order by datname; であったとします。(例としてPostgreSQLのシステムテーブル「データベース一覧」をSelectしていますが、どのようなSQLでも記述できます。) 上図は、「データベース」をクリックした時の画面です。「データベース」ノードがクリックされると、「Default.Script」が実行され、右下の結果エディタへ結果が出力されます。 「Default.Script」は、後述する全てのノードに対して設定できます。 子アイテム要素オブジェクトフォルダは、その子要素として、「子アイテム」を持つことができます。 アイテムは、Select文によりRDBMSより返った結果がノードとして展開された物を言います。つまり、オブジェクトフォルダは、Windowsフォルダ構造と対になるため、事前にフォルダを準備しておいただけ展開される静的なノードで、アイテムは、そのときのRDBMSテーブル/ビューなどの状態によって動的にその構造が変化するノードです。 子アイテムをオブジェクトツリー配下に展開させるには、オブジェクトフォルダの中に「DeployItem?.SQL」という名称のテキストファイルを置き、Select文を記述します。 例えば、 ├─ObjectTree └PostgreSQLV8(Sample) └データベース ├ Default.Script (クリック時実行スクリプトファイル) └ DeployItem.SQL (子アイテム展開SQLファイル) 「DeployItem?.SQL」の中身が select * from pg_database Order By datname; の場合、結果は、 となります。(オブジェクトフォルダ配下にアイテムが展開されました)つまり、Selectの結果行分子アイテムとして追加されます。 ※この場合、同時に前項目で解説した「Default.Script」も実行されて右下に結果が表示されます。 なお、アイテム名として表示されるテキストは、「DeployItem?.SQL」に記述されたSQLが返すデータセットの各レコードの最初の項目(第一項目)のデータがセットされます。 アイテム要素は、RDBMSの状態によって動的に変わりますので、対象を右クリックし、「最新の状態に更新」とすると、再度「Deploy.SQL」を発行し、自らを作り直します。 この子アイテムノードの配下にさらにノードを作成することができます。作成できるノードは、「アイテムオブジェクトフォルダ」と、「孫アイテム」があります。 アイテムオブジェクトフォルダアイテムノードの配下にオブジェクトフォルダを作成することができます。これは通常のオブジェクトフォルダと違い、各アイテムノードの配下に作成されますので、作成方法が少し異なります。 例えば、 ├─ObjectTree └PostgreSQLV8(Sample) └データベース ├ Default.Script (クリック時実行スクリプトファイル) ├ DeployItem.SQL (アイテム展開SQLファイル) └ _名前空間 (アイテムオブジェクトフォルダ) とします。 オブジェクトフォルダとアイテムオブジェクトフォルダの作成方法の違いは、フォルダ名の先頭が「 _ 」(アンダースコア)かどうかで決まります。 アイテムオブジェクトフォルダは同じ階層にいくつでも作成することができます。 アイテムオブジェクトフォルダ配下には、通常のオブジェクトフォルダとまったく同じように使用できますので、以下繰り返しとなります。 パラメータアイテムノードは、自身が展開されたときにパラメータを持ちます。「DeployItem?.SQL」によって作成されたアイテムノードは、その「DeployItem?.SQL」の各レコードの結果項目(Select * 〜 で取得していれば全ての項目)を自アイテム要素の「パラメータ」として保持します。 このパラメータは、このノードより下の階層で使用します。 パラメータは、上図の通り、アイテムノードを選択するとツリー下の「Params」タブにフィールドデータが一覧されます。 パラメータは、オブジェクトツリーをカスタマイズする方向けに表示しています。本来、「パラメータ」より「フィールドデータ」の方が名前として良いように思えますが、実際の使用用途は、データ表示が目的ではなく、パラメータとして扱うことを目的としていますので、「パラメータ」と呼ぶことにしました。 パラメータ情報のフォーマットは、 key=value となっています。(キー・バリュー形式) あるノードのパラメータは、その子孫まで継承されて参照されます。但し、子孫に同じKey名のパラメータがある場合は、子孫の情報で上書きされます。 パラメータは、そのノード配下の全てのSQLまたはScriptで有効に使えます。 パラメータを持つノードに設置される各種SQLやスクリプトは、このKeyを置き換え文字として仕掛けて置くことで、条件などを動的に変更できます。 各種SQL、Scriptに {% と %} でkey名をはさむと、その実行時に該当部分がvalue値に置き換えられます。 datname=template1 というパラメータを持つノード配下にある Default.Script の内容が Select * from pg_database where datname = '{%datname%}'; の場合は、Default.script は実行時に以下のように置き換わって発行されます。 Select * from pg_database where datname = 'template1'; まぼろしパラメータ基本的には「パラメータ」と同じですが、パラメータ指定を、 Select * from pg_database where datname = '{{%datname%}}'; のように大括弧を二重にすることで、該当パラメータが置き換えられなかったときにその指定ごと消えます。 まぼろしパラメータ 使用例: Select * from pg_database {{%datname_whereCondition%}}; (パラメータがあれば置き換わるし、無ければ消えて「条件なし」のSelect文となる) 孫アイテムアイテムの配下には、アイテムオブジェクトフォルダの他、「孫アイテム」も展開されます。 これは、例えば、一つのオブジェクトフォルダまたはアイテムオブジェクトフォルダ配下に展開されるアイテムが多数になる場合、ツリーが縦長になってしまい、操作性が悪くなる場合に備えた仕組みで、アイテムをグルーピングする時などに便利です。 「DeployItem?.SQL」は、アイテム展開SQLですが、孫アイテム展開SQLは、「_DeployItem?.SQL」ファイルに記述します。(先頭にアンダースコアを付けます) これで、「DeployItem?.SQLによって展開されたアイテムの子」として展開されます。 例えば、PostgreSQLには、pg_typeという型管理テーブルがあり、多数の型を管理しています。pg_typeにて管理される型は大別して、b(基本型)、c(複合型)、d(派生型)、p(擬似型)と分かれていて、typtype項目にb,c,d,pのいずれかChar一文字が格納されています。これらをグルーピングしてツリー展開するには以下のように記述します。 その1:"b型","c型","d型","p型" アイテムノードを作る (DeployItem.SQLの内容・・・第一階層) select typtype || ' 型', --この部分がノードとして表示される typtype --パラメータ「typtype」を設定する目的 from pg_type group by typtype; (_DeployItem.SQLの内容・・・第二階層) ・・第一階層各項目に対してのアイテム展開 select typname from pg_type where typtype = '{%typtype%}' --パラメータ「typtype」を使用 結果、このようになります。 ひ孫アイテム以降オブジェクトツリーは、孫アイテムだけではなく、孫アイテムと同じ仕組みを使ったひ孫アイテム、やしゃ孫アイテム・・・・ともっと深い階層も作成できます。 (二次元展開、三次元展開、四次元展開・・・といった展開ができます) 各設定ファイルの名称先頭に、子を表すアイテムの場合は、アンダースコアなし、孫は一つ「 _ 」、ひ孫は二つ、やしゃ孫は三つ・・・と続けて設定します。 DeployItem.SQL (子アイテム展開用) _DeployItem.SQL (孫アイテム展開用) __DeployItem.SQL (ひ孫アイテム展開用) ___DeployItem.SQL (やしゃ孫アイテム展開用) また、アイテムオブジェクトフォルダも同様にアンダースコアの数によって上記のどのアイテムのアイテムオブジェクトフォルダになるかを指定できます。 __型別一覧 (孫アイテムのアイテムオブジェクトフォルダ) プロパティーツリー下部にあるタブページエリアにプロパティーが表示されます。 プロパティーとは、オブジェクトツリーの各ノードが選択されたときに、対応する「*.PropertySQL」が実行され、その結果がタブ展開されて表示されたものです。 プロパティーはいくつでも設定できます。上の例では、 _1フィールド.PropertySQL _2レコード数.PropertySQL _3コメント.PropertySQL という3つのプロパティー展開ファイルが設置され、各ファイル内に記述されているSQLの結果がタブ内に表示されています。 なお、ファイル名の先頭にアンダースコアを付ける事で、全ノードへのプロパティー設置が可能になっています。 アイコンの変更各ノードはアイコンを変更できます。 オブジェクトフォルダのアイコンを変更するには、そのオブジェクトフォルダ直下に、「Icon.ico」という名称のアイコンファイルを設置してください。 また、アイテムノードにアイコンを設定する場合は、各階層にあわせてアンダースコアを付けてIcon.icoを設置してください。例: _Icon.ico (子アイテムアイコン) Iconファイルが存在しない場合は、デフォルトアイコンとして、アプリケーション(exe)のアイコンが使用されます。 また、Iconは親ノードを継承します。つまり、親ノードと同じアイコンが表示されると言うことです。これを変更するには、上記のように、Iconファイルを新たに設置してください。 アイテムフォルダ名変更アイテムフォルダとして表示されるノードのキャプションを変更することが出来ます。 ターゲットフォルダ直下に「Title.sql」ファイルを設置し、1レコード、1フィールドが帰るSQLを記述しておけば、その1レコード目の1フィールド目の結果テキストがノードキャプションになります。 |