GeneXusのNumericデータタイプの仕様

一般的なプログラミング言語と同様にGeneXusにもデータの型(データタイプ)があります。
ほとんどのデータタイプは他の言語と同じ仕様ですが、数値型である「Numeric」データタイプは少し特殊な仕様があります。

Numericデータタイプの定義

Numericデータタイプは下記のように定義します。

小数桁を0以外で定義する場合や、負数を入力できるようにする場合には注意が必要です。

小数桁の入力

例えばNumeric(4, 1)と定義した場合、整数桁が2桁、小数桁が1桁の数値型になり、入力値の最大値としては99.9になります。
つまり小数桁の桁数を定義すると、小数部の入力が必須扱いになり、文字列の長さとして小数点を1文字分として数えることになります。
入力欄に”99″と入力しカーソルを移動すると、自動的に”99.0″に変換されます。
そのため整数桁を4桁、小数桁を1桁の入力項目として定義したい場合には、Numeric(6, 1)で定義する必要があります。

負数の入力

負数を入力できるようにするには、Signed プロパティを”True”にします。
Numeric(4, 1)のデータタイプの項目属性や変数の場合、-99.9は入力できず、-9.9が最小値として入力できる値になります。
小数点と同様に、マイナス記号を1文字分として数えることになるためです。

DBのカラムの型

トランザクションにNumericデータタイプの項目属性を追加してビルドすると、文字列の長さや小数桁に応じてDBのカラムの型もかわります。
例えばDBをPostgreSQLにした場合には、下記のようになります。

  • Numeric(4, 0):smallint型
  • Numeric(5, 0):integer型
  • Numeric(9, 0):integer型
  • Numeric(10, 0):bigint型
  • Numeric(4, 1):numeric型(numeric(3, 1)として定義)

このようにGeneXusは文字列の長さ・小数桁で定義した値に応じて、カラムの型を自動的に定義してくれます。
また、上記のようにNumeric(5, 0)とNumeric(9, 0)のデータタイプはDB上は同一の型であるため、長さを5から9に変更しても、DBの再編成は発生しません。

サロゲートキー

トランザクションにNumericデータタイプの項目属性を定義すると、プロパティに Autonumber というプロパティが表示されます。
このプロパティを”True”にすると、DBにレコードが挿入される度にカウントアップしたデータが自動採番されます(サロゲートキーとして扱われます)。

このプロパティが有効なのは、トランザクションの最上位レベルの主キーの項目属性のみです。
主キー以外の項目属性や子レベルの主キーの項目属性の Autonumber プロパティを”True”にしてビルドしても、サロゲートキーとして定義されません。

 

システム開発のご相談はこちらからお気軽にお問合せください。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です