2

FileMaker Pro 9 を使用していて、繰り返しレコード (たとえば、1 つのフィールドが「Lines」で、最大 9 つの文字列を持つことができる) を持つデータベースを取得し、XML ファイルからデータをインポートしたいと考えています。

現在、次の XML ファイルを使用すると、最初のエントリ ("Room") のみがインポートされます。

<?xml version="1.0" encoding="UTF-8"?>
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
    <ERRORCODE>0</ERRORCODE>
    <PRODUCT NAME="" VERSION="" BUILD=""/>
    <DATABASE NAME="New Invoice" RECORDS="1" DATEFORMAT="M/d/yyyy" TIMEFORMAT="" LAYOUT="hh/mm/a"/>
    <METADATA>
        <FIELD NAME="Description Index" TYPE="TEXT" EMPTYOK="NO" MAXREPEAT="9"/>
    </METADATA>
    <RESULTSET FOUND="1">
        <ROW RECORDID="" MODID="">
            <COL>
                <DATA>Room</DATA>
                <DATA>Equipment</DATA>
                <DATA>Labor</DATA>
            </COL>
         </ROW>
    </RESULTSET>
</FMPXMLRESULT>

残りのエントリ ("Equipment" と "Labor") をインポートするにはどうすればよいですか?

4

4 に答える 4

4

Filemakerで繰り返しフィールド(配列)をインポートおよびエクスポートできますが、XML形式からはインポートおよびエクスポートできません。

私はそれを理解しました。マージ(.mer)形式、コンマ区切り値(CSV)、または別のプレーンテキスト区切り形式を使用している限り、Filemakerから繰り返しフィールドをエクスポートおよびインポートできます。それ以外の場合は、フィールドでの最初の繰り返しのみが表示されます。XMLはこのためのオプションではありません。この例では、csvファイルを使用します。

まず、繰り返しフィールドを正しくインポートするには、いくつかのことを理解する必要があります...

  1. Filemakerは、繰り返しフィールドデータをエクスポートまたはインポートするときに、特殊な非表示文字を使用して繰り返しアイテムを区切ります。文字はASCII-29ですが、他の文字のように入力することはできません。MacまたはPCでは、キーはctr +]です(コントロールと右角かっこを押したままにします)。

  2. これは、CodaやTextWranglerなどの非表示の文字を表示できるテキストエディタで処理するのが最適です。Codaでは、「非表示の文字を表示」をオンにしました。これをオンにしたテキストエディタを使用しない限り、テキストの後ろに文字が挿入され、繰り返しの間にスペースがないため、何も起こりません。アイテム。

  3. CSVでは、フィールドは引用符で囲まれ、コンマで区切られます。レコードは、キャリッジリターン(Enterキーまたはリターンキー)で区切られます。フィールドヘッダーはコンマで区切られますが、引用符で囲まれていません。

これはCSV形式の例です。角かっこ([29])で数字29の隠し文字を指定します。

ボックス番号、内容

「1」、「りんご[29]オレンジ[29]バナナ」

「2」、「タラ[29]マグロ[29]サーモン[29]マス」

「3」、「マイリトルポニー[29]ヒーマン」

ボックス1には、リンゴ、オレンジ、バナナが入っていました。

ボックス2には、タラ、マグロ、サーモン、トラウトが含まれていました。

ボックス3にはマイリトルポニーとヒーマンがいました。

そして、あなたはそれを持っています。Filemakerはそれを繰り返しフィールドとして認識します。最初にFilemakerからいくつかの繰り返しフィールドをエクスポートし、テキストエディタ内からファイルを見て(非表示の文字が表示されている)、何を達成しようとしているのかを視覚的に確認することをお勧めします。

于 2012-02-28T07:00:54.943 に答える
2

以前の回答は正しくありません。実際、区切り値リストを XML ファイルから FileMaker テーブルにインポートできます。ただし、公平を期すために、FileMaker はネイティブの XML インポートを使用して本質的にそれを行うことはできません。これを行うには、インポート時に XML ファイルと組み合わせて使用​​する XSL 変換ファイルを作成する必要があります。Transform ファイルのデータ タグ内で構造を使用して、XML ファイル内の値を繰り返し処理し、連結します。

于 2013-10-30T10:12:38.217 に答える
1

できません。しかし、あなたはそれを回避することができます:

私の知る限り、FileMakerはASCII-29文字を内部的に使用して、繰り返しフィールドにあるデータを分割しているようです。いくつかのオプションがあります。

  1. エンコーディングの問題を解決できる場合は、1つの要素を用意し、部屋、設備、労働力をASCII-29文字で分割します。

  2. 独自のセパレーターを追加し、インポートされたデータを取得して必要な繰り返しフィールドにプッシュするスクリプト/カスタム関数を記述します。(このスクリプトは厄介に見えます)

  3. 繰り返しフィールドを使用しないでください

個人的には、リピーティングフィールドからできるだけ離れています。

可能であれば、繰り返しデータに新しい関連テーブルを使用します。必要に応じて、ポータルなどを使用して表示することも、メインテーブルの計算フィールドにプルすることもできます。このようなもの:

INVOICE
-------
ID
Invoice Date

LINES
-------
ID
fk_InvoiceID
Item

次に、それらをINVOICE :: ID-<LINES :: fk_InvoiceIDに関連付けることができ、ポータルにすべてのアイテムを表示できます。

請求書テーブルに次のような計算フィールドを含めることもできます。

cLines = List(LINES::Item)

これはあなたに次のようなものを与えるでしょう:

Room
Equipment
Labor

その1つのフィールドで。

于 2009-08-10T21:00:59.503 に答える
-1

実際の答えは、FileMaker は XML の繰り返しフィールドのインポートをサポートしていないということです。

于 2009-08-11T18:27:46.250 に答える