Tips

4D同士でデータ交換2

日付2008/08/06
ID08-018
バージョン11
プラットフォームWin / Mac

以前4D同士が直接会話をしてデータを交換する方法を解説しました(Tips:4D同士でデータ交換)が、今回は中間ファイルを介してデータ交換する方法について考えます。

SEND RECORDとRECEIVE RECORD

4DのSEND RECORDとRECEIVE RECORDは、カレントレコードを書き出すコマンドですので、複数のレコードを取り扱うためにはプログラムが必要になります。カレントセレクションを書き出しし、それを読み込むプログラミングの例は、ランゲージリファレンスのRECEIVE RECORDコマンドの説明にあります。

ランゲージリファレンス:RECEIVE RECORD

この例題では、書き出す際に対象となるテーブルのレコード数も記録し、読み込む際にそのレコード数分だけループするところにあります。4D v11 SQLの日本語マニュアルが未だ用意できておりませんが、この例題は4D 2004のランゲージリファレンスにもございますので、そちらを参考にしていただいても良いと思います。

なお4D v11 SQLではデータベース内部の文字コードが4D 2004以前とは異なりますが、これらのコマンドを介して4D 2004とデータ交換を行うことは可能です。

Import/Export機能

もし交換するデータにBLOBやピクチャが無い時には、4DのImport/Export機能が使えます。この機能を使う場合のポイントは出力フォーマットにXMLを選択することです。XMLフォーマットであれば、様々な問題の発生を抑えることができます。次の例題は「project.4SI」ファイルに記録された情報を元にレコードをXMLフォーマットのファイル「DocData.XML」に収めます。

ALL RECORDS([Table_1])
DOCUMENT TO BLOB("project.4si",$project_blob)
EXPORT DATA("DocData.xml";$project_blob)

この例題ではproject.4si ファイルを指定していますが、この4SIファイルを作成するのはメソッドでは行えません。4SIファイルを作成するには、デザインモードのカレントテーブルが表示された状態(4D 2004以前のユーザモード)から4Dの「ファイル」メニューより「データをファイルに書き出し...」を選択し、表示されるEportダイアログの左下に表示された「設定保存」ボタンで行います。このボタンが押された時の書き出し設定がファイルに保存され、その4SIファイルをBLOBに読み込みEXPORT DATAコマンドの第2引数に渡すことで同じファイルフォーマットでファイル書き出しを行うことができます。なお4SIファイルを作成する時には、ダイアログ右上にある「レコード数」グループボックスにある「Format」欄のポップアップからXMLを選択することを忘れないでください。

この例題で書き出したファイルを読み込むには、次のようなメソッドで行います。

DOCUMENT TO BLOB("project.4si",$project_blob)
IMPROT DATA("DocData.xml";$project_blob)

この例題で使用するproject.4siファイルは、EXPORT DATAで使用したファイルと同じものを使います。

まとめ

上記の方法以外にも、中間ファイルを介してデータを交換する方法は数多くあります。4DのフィールドをBLOBに収めてファイル化する方法や、XMLコマンドを使って独自のXMLファイルを使う方法など、際限なく考えることができます。ここで挙げた例は、ほんの一例にすぎませんが、数多く考えられる方法のうちで、簡単に構築できる方法であることに異論はないと思います。