サポート > PC-MAPPING ヒント集 > データベース > 【計算フィールド】設定方法
【計算フィールド】設定方法
計算フィールドの「式」のフィールドに計算式を記述する事でデータベースのデータを使用して計算を行います。
■ 操作方法
  1. 計算に使用するデータベースをアクティブにします。

  2. [設定]-[データベースの定義]を選択すると、[属性データベース設定]ダイアログボックスが表示されます。
    ここでは「地積表示」フィールドを計算フィールドとして設定します。

  3. フィールドをダブルクリックするか、リスト内のフィールドを選択し、<更新>ボタンを押すと、[属性フィールドの設定]ダイアログボックスが表示されます。
    「計算フィールド」のチェックボックスをONにして、式フィールドに計算式を記述します。

  4. <>>>ボタンをクリックすると、[計算フィールドのヒント]ダイアログボックスが表示されます。
    ここでは計算フィールドで使用できる関数や環境変数をテーブルから取り出し、作成する事が可能です。

  5. 計算式を設定し、[属性データベース設定]・[データベースの定義]ダイアログボックスの<OK>ボタンを押すと、指定したフィールドに計算結果が表示されます。
    ここでは{地積1}フィールド(インデックス指定の場合は[1]とする)と{地積2}フィールドを100で割った値を合計した結果が{地積表示}フィールドに出力されます。
    ※計算結果を表示しているフィールドのセルをダブルクリックしてもデータの変更はできません(計算の元となるフィールドの値が変わると、自動で計算結果が変わります)。

  6. 計算フィールドの設定がされていて、構文解析が正常に終了している場合は、フィールドの状態を示すアイコンとして、以下のようなアイコンが表示されます。

    計算フィールドが設定されていても、構文解析が正常に終了していない場合は、アイコンが表示されます。

■ フィールドの指定について
[計算フィールドのヒント]ダイアログボックスで、フィールドを指定する際、
  • <フィールド名>
  • {フィールド名}
と2種類の括弧で括られたフィールド名が表示されます。
「辞書引き」設定がされている場合、実データの値か参照先のデータにするか、括弧の種類で選択できます。

  1. 例えば、以下のようなデータベースがあるとします(「行政界2」フィールドに辞書引き設定あり)。

  2. 計算フィールドを設定します。括弧によって計算結果が異なるのが分かります。
    • 「行政名表示{*}」フィールド:{行政界1}&{行政界2}
    • 「行政名表示<*>」フィールド:{行政界1}&<行政界2>

■ 記述方法について
ヘルプを参照して下さい。

■ 注意
  • ヘルプにある記述方法以外の場合は、$以後の文字列で、プロセスに与えられたWindowsの環境変数を探し、見つかった場合はその値、そうでない場合はエラーとします。
  • 計算結果の型は通常通りの指定が可能ですが、一般に意味のあるのは文字型、整数型、実数型です(長整数も可)。
  • 「$DbPath」「$DbFolder」「$PrjPath」「$PrjFolder」は、それ単体では動作しません。
  • DateTimeDiff()で切り捨てられたくない場合は、直接日付時刻型同士を除算し、実数型で表示します。
  • 内部表現とは、実数型の数値です。数値は日付と時刻を実数型で表現した値で、単純に内部表現同士を引いた場合、その期間の数値が得られます。
  • 「\」はエスケープ文字として扱われ、後続の文字が採用されます。
    「"」がを扱いたい場合は 「\"」とします。
    「\」自体を扱うには「\\」で\一個となります。
    《例》下の計算フィールド「フルパス」では、"D:\\Sample\\画像\\"&<ファイル名>&".tif"としています。

    ヒント集【計算フィールド】使用例(1) 様々な使用例 「■ 例-4等」
  • 文字列の「文字数」は半角全角関係なく、文字数です。
  • 計算フィールドの最大長は、デフォルトで1023ですが、pcm.iniファイルに追加記述する事で、最大16000までの値を指定できます。
    ヒント集Pcm.iniファイルA「■ 計算フィールドの最大長を指定する」
  • スタックは256までです。
    スタックとは、計算式を順に処理していく上で必要となるバッファーで、その最大が256までです。
    例えば(a+b)*cでは、a+bで1つ、*cで1つの計2つのスタックが必要です。

■ エラー
一般に書式異常、未定義の変数、関数、ゼロ割など、計算処理できない時は文字列としては ""(空文)、数値としては0にして返します。