Tips

コンパイルモードでBLOB TO VARIABLEコマンドが使用できない時の対処法

日付2008/07/04
ID47403 (英語原文参照)
バージョン2004
プラットフォームMac & Win

4Dの変数の入力や宣言については、一般的に見てかなり柔軟性がああるといえます。しかし、VARIABLE TO BLOBおよびBLOB TO VARIABLEの使用時には、入力するタイプは特定であることが重要です。

VARIABLE TO BLOBコマンドを使用しBLOBに変数を格納する際、変数は一定のタイプでなければなりません。 (たとえ変数を指定しなくても). それゆえ、変数をBLOB TO VARIABLE コマンドで検索しようとする際はタイプが同じものであるかを確認しなければなりません。

良くない例

SELECTION TO ARRAY([Invoices]CustomerID;myArray)
VARIABLE TO BLOB(myArray;myBLOB)
[Table 2]SomeBLOBField:=myBLOB
SAVE RECORD([Table 2]SomeBLOBField)

上記のコードを実行した後で、次のようなコードを実行したとします。

theSavedBLOB:=[Table 2]SomeBLOBField
BLOB TO VARIABLE(theSavedBlob;myNewArray)

このコードはコンパイルモードでシンタックスエラーになります。

エラーになる理由は、myNewArray のタイプが不明瞭だからです。この場合には、4Dはおそらく myNewArray の変数タイプを実数に設定し、そのために作動しなくなるのです。

的確な方法

ARRAY TEXT(myArray;0)
C_BLOB(myBlOB)
SELECTION TO ARRAY([Invoices]CustomerID;myArray)
VARIABLE TO BLOB(myArray;myBLOB)
[Table 2]SomeBLOBField:=myBLOB
SAVE RECORD([Table 2]SomeBLOBField)

そして続きのコードです。

ARRAY TEXT(myNewArray;0)
C_BLOB(theSavedBLOB)
theSavedBLOB:=[Table 2]SomeBLOBField
BLOB TO VARIABLE(theSavedBlob;myNewArray)

一般的にコードで使用される全ての変数タイプを定義するべきだと言われていますが、特にこの場合には必ず変数のタイプを設定しなければなりません。