Tips

4DレコードはBLOBに格納することができます

日付2002/02/15
ID01-839
バージョン6.5.x and 6.7.x
プラットフォームWindows and Mac OS

一滴に関する面白いもののうちの1つは、それらがドキュメントを含む任意のタイプの情報を格納することができるということです。これは、一滴に4Dレコードを格納することを可能にします。

次の中間コードでは、プロジェクトメソッドSendRecordToBlobが、Table1から外部ドキュメントまでレコードの内容を格納します。その後ドキュメントは、Table2の中の新記録の一滴フィールドから読み取られます。
その後、プロジェクトメソッドRestoreRecordFromBlobの中間コードは、ドキュメントにテーブル2(Table1からのレコードを含んで)中のレコードからのBLOBフィールドの内容を書きます。その後、そのドキュメント中のレコードはTable3へインポートされます。

注意:
1. Table3はTable1からレコードを受け取るためにTable1へのストラクチャにおいて同一上にあるに違いありません。
2. SET CHANNELはSEND RECORD/RECEIVE RECORDと共に使用されるに違いありません。(SET CHANNELオペレーションコードに関しては4D Language Referenceを参照してください。)
3. このコードは、概念を実証するように単に意図されます;それは十分なインプリメンテーション(下に説明された)ではありません。

PROJECT METHOD: SendRecordToBlob

ALL RECORDS([Table1]) `Make sure you have a current record
SET CHANNEL(10;"TempRecord") `Create a document on disk to write to.
SEND RECORD([Table1]) `Write the current record to the document
SET CHANNEL(11) `Close the document.
CREATE RECORD([Table2]) `Create a record to receive the blob
DOCUMENT TO BLOB(Document;[Table2]BlobField)
`Import the document into the blob
SAVE RECORD([Table2])
DELETE DOCUMENT(Document) `Delete the temporary file

PROJECT METHOD: RestoreRecordFromBlob

LOAD RECORD([Table2]) `You must have a record in memory, or BLOB TO
DOCUMENT fails.
BLOB TO DOCUMENT("TempRecord";[Table2]BlobField) `Write the blob field to a
document.
SET CHANNEL(10;"TempRecord") `Access the document.
RECEIVE RECORD([Table3])
SAVE RECORD([Table3])
SET CHANNEL(11) `Close the document.
DELETE DOCUMENT(Document)

以前に言及されるように、前のコードは十分なインプリメンテーションではありません。このテクノロジー先端のトピックにコードを集中しておくためにここに扱われていない多くの問題があります。BLOBItデモンストレーション・データ・ベース(それはそれらの問題の多くを扱う)があります。それらの問題のうちのいくつかは次のとおりです:

* そのようなアーカイブに保管するシステムのテーブルを組み立てる方法。
* MacとWindowsのドキュメントファイルとの取り引き。
* MACドキュメントの2本のフォークの格納との取り引き。
* コードの全体にわたる様々な4Dコマンドの実行の成功あるいは失敗に基づいたプログラム制御。
* コードの全体にわたる様々なポイントにError handling。

BLOBItデモンストレーションデータベースはhttpで見つけてダウンロードすることができます://www.4d.com/ダウンロード/beginner_examples.html。

交互のインプリメンテーションは、レコードのフィールドをの上にすべてループにするかもしれません。あるいは、別のデータベースの中で模写されることを望んだ、わずかのフィールドおよびそのデータは、BLOBの中に入れられるでしょう。そこから、フィールドごとの基礎上でデータを抽出することができるかもしれません。模写されたデータベースをセット・アップする4Dインターネットコマンドを使用して、インターネット上にそのようなデータを含んでいる一滴を送ることができるかもしれません。しかしそれは別の時のトピックです!