【小技】SQL文の中で16進数表記を使用する
【小技】SQL文の中で16進数表記を使用する
通常のメソッドには,下記のように16進数表記を記述することができます。
$n:=0x00FF
この場合,オペランドの右辺は整数型なので,コンパイラーは自動的に変数$nを整数型で宣言します。つまり,16進数表記は,ドキュメントが述べるところの「型を判断する決め手」となります。
http://doc.4d.com/4Dv15/4D/15/Using-Compiler-Directives.300-2006315.ja.html
対照的に,下記のように記述した場合,変数$nはデフォルトで実数型となります。
$n:=255
データベース設定「デフォルトの型指定」は,特に変更しない限り,実数だからです。
http://doc.4d.com/4Dv16/4D/16.1/Compilation-settings.300-3373325.ja.html
同じことは,フォームオブジェクトにもあてはまります。下記のオブジェクトは,明示的に整数型で宣言しない限り,実数型になります。これを避けるためには,データベース設定「デフォルトの型指定」を実数から倍長整数に変更するか,オブジェクトの変数を明示的に整数型で宣言することが必要です。ボタン系はC_BOOLEAN,スリーステートチェックボックスはC_LONGINT,ルーラ系は用途に応じてC_REALまたはC_LONGINTで宣言することができます。
チェックボックス
3Dチェックボックス
ボタン
ハイライトボタン
透明ボタン
3Dボタン
ピクチャボタン
グリッドボタン
ラジオボタン
3Dラジオボタン
ラジオピクチャ
ピクチャメニュー
階層ポップアップメニュー
階層リスト
ルーラ
ダイヤル
サーモメータ
http://doc.4d.com/4Dv15/4D/15.4/Typing-Guide.300-3273739.ja.html
例外は,For/End forのカウンター変数で,これはC_LONGINTで宣言しなくても,データベース設定に関係なく,自動的に整数型となります。
v12.1以降,SQL文の中でも16進数表記を使用することができます。ただし,構文は通常のメソッドと少し違います。
通常のメソッド
QUERY([myTable];[myTable]myField=0x00FF0000)
SQL文
SELECT * FROM myTable WHERE myField = X'00FF0000'
http://doc.4d.com/4Dv16/4D/16/literal.300-3201194.ja.html
16進数表記(および入力)は,デバッガでもサポートされています。
http://doc.4d.com/4Dv15/4D/15.4/Custom-Watch-Pane.300-3274331.ja.html
$n:=0x00FF
この場合,オペランドの右辺は整数型なので,コンパイラーは自動的に変数$nを整数型で宣言します。つまり,16進数表記は,ドキュメントが述べるところの「型を判断する決め手」となります。
http://doc.4d.com/4Dv15/4D/15/Using-Compiler-Directives.300-2006315.ja.html
対照的に,下記のように記述した場合,変数$nはデフォルトで実数型となります。
$n:=255
データベース設定「デフォルトの型指定」は,特に変更しない限り,実数だからです。
http://doc.4d.com/4Dv16/4D/16.1/Compilation-settings.300-3373325.ja.html
同じことは,フォームオブジェクトにもあてはまります。下記のオブジェクトは,明示的に整数型で宣言しない限り,実数型になります。これを避けるためには,データベース設定「デフォルトの型指定」を実数から倍長整数に変更するか,オブジェクトの変数を明示的に整数型で宣言することが必要です。ボタン系はC_BOOLEAN,スリーステートチェックボックスはC_LONGINT,ルーラ系は用途に応じてC_REALまたはC_LONGINTで宣言することができます。
チェックボックス
3Dチェックボックス
ボタン
ハイライトボタン
透明ボタン
3Dボタン
ピクチャボタン
グリッドボタン
ラジオボタン
3Dラジオボタン
ラジオピクチャ
ピクチャメニュー
階層ポップアップメニュー
階層リスト
ルーラ
ダイヤル
サーモメータ
http://doc.4d.com/4Dv15/4D/15.4/Typing-Guide.300-3273739.ja.html
例外は,For/End forのカウンター変数で,これはC_LONGINTで宣言しなくても,データベース設定に関係なく,自動的に整数型となります。
v12.1以降,SQL文の中でも16進数表記を使用することができます。ただし,構文は通常のメソッドと少し違います。
通常のメソッド
QUERY([myTable];[myTable]myField=0x00FF0000)
SQL文
SELECT * FROM myTable WHERE myField = X'00FF0000'
http://doc.4d.com/4Dv16/4D/16/literal.300-3201194.ja.html
16進数表記(および入力)は,デバッガでもサポートされています。
http://doc.4d.com/4Dv15/4D/15.4/Custom-Watch-Pane.300-3274331.ja.html
miyako- 投稿数 : 468
登録日 : 2016/07/05
Permissions in this forum:
返信投稿: 不可
|
|