2

我正在使用 FileMaker Pro 9,我想获取一个包含重复记录的数据库(例如,一个字段是“行”,它最多可以有 9 个字符串)并将数据从 XML 文件导入其中。

现在,使用以下 XML 文件,我只导入了第一个条目(“房间”):

<?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>

如何导入其余条目(“设备”和“劳动力”)?

4

4 回答 4

4

可以在 Filemaker 中导入和导出重复字段(数组),但不能从 XML 格式导入和导出。

我刚刚想通了。您可以从 Filemaker 导出和导入重复字段,只要您使用它们的合并 (.mer) 格式、逗号分隔值 (CSV) 或其他纯文本分隔格式。否则,它只会为您提供该领域的第一次重复。XML 不是一个选择。对于此示例,我将使用 csv 文件。

首先,为了正确导入重复字段,您必须了解一些事情......

  1. 当 Filemaker 导出或导入重复字段数据时,它使用特殊的隐藏字符来分隔重复项。该字符是 ASCII-29,但您不能像输入其他字符那样只输入它。在 Mac 或 PC 上,键是 ctr+](按住 control 和右方括号)。

  2. 这最好在可以显示不可见字符的文本编辑器中处理,例如 Coda 或 Text Wrangler。在 Coda 中,我打开了“显示不可见字符”,因为除非你在一个打开的文本编辑器中,否则你不会看到任何事情发生,因为它会在文本后面插入字符并且重复之间没有任何空格项目。

  3. 在 CSV 中,字段包含在引号中并用逗号分隔。记录由回车符(回车键或回车键)分隔。字段标题用逗号分隔,但不包含在引号中。

这是 CSV 格式的示例。我将用括号([29])中的数字 29 指定隐藏字符:

箱号、内容

"1","苹果[29]橙子[29]香蕉"

"2","鳕鱼[29]金枪鱼[29]鲑鱼[29]鳟鱼"

“3”,“我的小马驹[29]赫曼”

盒子 1 有苹果、橙子和香蕉。

盒子 2 有鳕鱼、金枪鱼、鲑鱼和鳟鱼。

Box 3 有 My Little Pony 和 He-Man。

你有它。Filemaker 将其识别为重复字段。值得首先从 Filemaker 导出一些重复字段,然后从文本编辑器中查看文件(显示隐藏字符),以直观地了解您将要完成的工作。

于 2012-02-28T07:00:54.943 回答
2

前面的答案是错误的。事实上,您可以将分隔值列表从 XML 文件导入 FileMaker 表。但是,公平地说,FileMaker 无法使用其原生 XML 导入来完成此操作。为此,必须创建一个 XSL 转换文件,以便在导入时与 XML 文件一起使用。在 Transform 文件的数据标签中,使用一个结构来迭代和连接 XML 文件中的值。

于 2013-10-30T10:12:38.217 回答
1

你不能。但是你可以绕过它:

据我所知,FileMaker 似乎在内部使用 ASCII-29 字符来拆分重复字段中的数据。你有几个选择。

  1. 如果您可以解决编码问题,只需使用一个元素,然后将 Room、Equipment 和 Labor 分开,并在其间添加 ASCII-29 字符。

  2. 添加您自己的分隔符并编写一个脚本/自定义函数,将导入的数据推送到所需的重复字段中。(这个脚本看起来很恶心)

  3. 不要使用重复字段

就我个人而言,我尽可能远离重复字段。

如果可能,请为重复数据使用新的相关表。如果您愿意,您可以使用门户或类似的工具来显示它,或者如果它必须存在,您甚至可以将其拉入主表中的计算字段中。像这样的东西:

INVOICE
-------
ID
Invoice Date

LINES
-------
ID
fk_InvoiceID
Item

然后它们可以关联 INVOICE::ID --< LINES::fk_InvoiceID 并且您可以在门户中显示所有项目。

您还可以在 Invoice 表中有一个如下所示的计算字段:

cLines = List(LINES::Item)

这会给你类似的东西:

Room
Equipment
Labor

在那个领域。

于 2009-08-10T21:00:59.503 回答
-1

实际答案是FileMaker 不支持在 XML 中导入重复字段

于 2009-08-11T18:27:46.250 回答