データベース

データベースレコードに値を代入する
TNTgis は 図 形 オ ブ ジ ェ ク ト ( ベ ク タ・ シ ェ イ プ・CAD) に対して、指定した固定の値や他のテーブルのフィールドからコピーした値を使って、データベーステーブルの一連のレコードのフィールドにデータを代入するための処理を備えています。この処理は、既存のレコードのフィールドや、表示中の選択要素やアクティブ( 最後に選択した ) 要素に対して新規レコードを作成する際に適用することが出来ます。この処理により、任意のタイプの数値や文字フィールドに値を代入することが出来ます。また、「データベースレコードに値を入れる」処理を使って、新たに追加した自動インメントフィールドに一連のシーケンシャルの整数値を代入することが出来ます。数
値処理や文字処理フィールドの場合、表示される値がソースフィールドから動的に読み込みや計算されますが、「データベースレコードにデータを入れる」処理では、指定したフィールドやレコードの中に実際の値を書き込みます。必要であれば後でこれらの値を手動で編集することが出来ます。

データベーステーブルウィンドウの [ レコード (Record)] メニューのオプションを使って、テーブルのレコードのフィールドにデータを代入することができます。
既存のレコードのフィールドにデータを代入するには、[ 既存レコードにデータを入れる (Populate Existing Records)] を選択します。
〈データベースレコードにデータを入れる〉ウィンドウ ( 下図 ) は、画面の中でリレートやアタッチされた図形要
素を選択している時、[ レコード ] ＞ [ 新規作成 (New)] を選択して、サブメニューから [ アクティブ要素にアタッチしてデータを入れる (Attach to Active Elementand Populate)] または [ 選択した要素にアタッチしてデータを入れる (Attach toMarked Elements and Populate)] を選択した時にも現れます。
注意：1 対 1 のアタッチメントタイプ ( 各要素につき 1 レコードかつ各レコードにつき 1 要素 ) の図形要素テーブルの場合、複数選択した要素にアタッチした新規レコードを作るという操作によって、選択要素それぞれに対する個別のレコードが自動で作られます。
〈データベースレコードにデータを入れる〉ダイアログを使って、それらの要素にアタッチまたはリレートされたレコードを持つテーブルから、新規レコードの指定したフィールドにデータを代入することが出来ます。

既存のフィールドの値を使ってフィールドにデータを代入するには、データを代入するレコードを持つテーブルが、図形要素に直接アタッチしたレコードを持っている必要があります。
また、ソーステーブルは、同じ要素のデータベースのうちの別のテーブルであり、要素に対して直接または間接的にアタッチされたレコードを持っていなければなりません。
「データベースレコードにデータを入れる」操作を使うには、目的のデータベーステーブルのテーブル表示を開きます。既存のレコードのフィールドにデータを代入するには、[ レコード ] ＞ [ 既存のレコードにデータを入れる ] を選びます。表示ウィンドウ
中のアクティブ要素や選択要素に対して、新規レコードを作成するのと同時にフィールドへ自動入力するには、[ レコード ]>[ 新規作成 ] の次に、[ アクティブ要素にアタッチしてデータを入れる ] または [ 選択した要素にアタッチしてデータを入れる ] を選択します ( このページの上の右端の図をご覧ください )。〈データベースレコードにデータを入れる〉ウィンドウ ( 下図 ) が開きます。このウィンドウの [ フィールド名 (Field Name)] と [ タイプ (Type)] 列に、テーブル中の全てのフィールド名とデータタイプが リ ス ト 表 示 さ れ ま す。[ 条件 (Condition)] 列には各データベースフィールドについてメニューを制御する項目が含まれており、ここでフィールドに新規の値を代入する条件を設定します。デフォルトの設定の [ 行フィールドへの値の代入を始めるには、まず [ 条件 (Condition)] 列の欄の上で左クリックしてメニューをポップ
わない (No)] は、フィールドにアップさせます。[ いつでも (Always)] を選択して、既存の値を入れ替えるか、条件の項目のいずれかを選択し新規の値を書き込まないことます ( テキストフィールドの場合は [ 空ならば (If Empty)]、数値フィールドの場合は [ ヌルならば (If Null)]･[ ゼロならば (If Zero)]･[ ヌルまたはゼロならば (If Null or Zero)])。
を意味します。
( 続く )

続けて、[ 手法 (Method)] 列のフィールド欄の上で左クリックします。
[ 手法 ] メニューの [ フィールド (Field)] を選ぶと、〈テーブル / フィールドの選択 (SelectTable/Field)〉ウィンドウが開きます。現在のフィールドの値のソースとして関連するテーブルやフィールドを選ぶことが出来ます。選択した [ テーブル . フィールド ] は、〈データベースレコードに値を入れる〉ウィンドウの [ 値 (Value)] フィールドに表示されます。

[ 手法 ] メニューから [ 固定値 (Constant)] を選ぶことで、[ 値 (Value)] 列に編集可能なフィールドを作り、フィールドに希望の数値やテキスト文字列を入力することが出来ます。

( 翻訳 ) 株式会社 オープン GIS 東京都墨田区吾妻橋 1-19-14 紀伊国屋ビル 1F
Tel: (03)3623-2851 Fax: (03)3623-3025 E-mail: info@opengis.co.jp

一方、[ いつでも (Always)] 設定では、フィールドの既存の値に関わらず新規の値を書き込むことになります。その他の [ 条件 (Condition)] オプションでは、既存の値に応じてフィールドに新規の値を代入することができます。テキストフィールドに対して [ 空ならば ]、数値フィールドに対して [ ヌルならば ]、[ ゼロならば ]、[ ヌルまたはゼロならば ] を選ぶことが出来ます。自動インクリメントフィールドの場合、選択肢は [ 行わない (Never)] と [ ゼロならば ] になります ( テーブルに自動インクリメントフィールドを追加する際、既存のレコードに入る初期値は “0”)。
フィールドの [ 条件 ] メニューで [ 行わない ] 以外の値を設定すると、[ 手法 (Method)] 列のフィールドの欄がアクティブになります。この欄のメニューから、[ フィールド ]( フィールドに他のデータベースフィールドの値を代入する ) または、[ 固定値 ]( 各フィールドに固定の値を書き込む ) を選ぶことが出来ます。[ フィールド ] オプションを選択することで、＜テーブル / フィールドの選択＞ウィンドウが開き、ソーステーブルとフィールドの選択を行うことが出来ます。[ 固定値 ] を選ぶことで [ 値 ] 列に編集可能なフィールドが作られ、希望の値を入力することが出来ます ( 前のページの一番下の図をご覧ください )。自動インクリメントフィールドの場合、選択肢は [ フィールド ] または [ シーケンシャル ] です。後者のオプションは、1 で始まるシーケンシャルの整数値のセットをフィールドに代入します。フィールドの値はレコードがテーブルに格納された順になります ( 現在のテーブル表示で並んでいるレコードの順番になるとは限りません )。
他のテーブルからの値を使ってフィールドにデータを代入する時、最良の結果を得るためには、ソースフィールドとターゲットフィールドが同じデータタイプを持つ必要があります。
それらが異なるデータタイプを持つ場合、「データベースレコードにデータを入れる」処理はデータを制限の範囲内に自動変換します。例えば、ソースが数字を含む文字フィールドでターゲットが数値フィールドの場合、ターゲットフィールドの中でソースの文字列は数値に変換されますが、ソースフィールドの数値以外の文字は変換の際に取り除かれます。ソースの数値は必要に応じて自動で文字に変換されますが、今のところ文字のフォーマットに対する制御機能はありません。
画面上で選んだアタッチ済みの要素を持つレコードに値を代入する際、その複数選択要素が全ての要素を含まない場合
は、＜データベースレコードにデータを入れる＞ウィンドウの既存のレコードを持つテーブルに自動インクリメントフィールドを追加して、シーケンシャルの整数値を代入するには、[ 条件 ] フィールドメ
ニューから [ ゼロならば (If Zero)] を選択して、[ 手法 ] フィールドメニューから [ シーケンシャル (Sequential)] を選択します。

〈データベースレコードにデータを入れる〉ウィンドウ。全てのフィールドを含みます。フィールド中の既存の値の有無に関わらず、処理を行うように設定されています ([ 条件 ] 列で [ いつでも ] が設定されています )。

下部で処理の対象とするレコードを選択できます。
[ 適用 (ApplyTo)] パネルには、[ すべてのレコード (All records)]、[ 複数選択された要素にアタッチされたレコード (Records attached tomarked elements)]、[ アクティブ要素にアタッチされたレコー
ド (Records attached to active element)] という選択肢が表示
さ れ ま す。 括 弧 ( ) の中に各オプションに対するレコード数が示されます ( 右の図をご覧ください )。アタッチされた全ての要素が選幾つかの ( 全てではない ) アタッチされ択されている場合、全 た要素が画面の中で選択されている場合、てのレコードに対して 〈データベースレコードにデータを入れる〉
ウィンドウで、処理する対象のレコードを操作が自動で適用され 選ぶことが出来ます。
ます。