我正在使用FileMaker Pro 9,我想要一个带有重复记录的数据库(例如,一个字段是“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>
如何导入其他条目(“设备”和“工党”)?
答案 0 :(得分:4)
可以在Filemaker中导入和导出重复字段(数组),但不能从XML格式导入和导出。
我只是想通了。只要使用其合并(.mer)格式或逗号分隔值(CSV)或其他纯文本分隔格式,就可以从Filemaker导出和导入重复字段。否则,它只会为您提供该字段中的第一个重复。 XML不是一个选项。对于此示例,我将使用csv文件。
首先,为了正确导入重复字段,您必须了解一些事情......
当Filemaker导出或导入重复字段数据时,它使用特殊的隐藏字符来分隔重复项。该字符是ASCII-29,但您不能像其他字符一样输入。在Mac或PC上,键是ctr +](按住控件和右方括号)。
最好在文本编辑器中处理,可以显示不可见的字符,例如Coda或Text Wrangler。在Coda中,我打开了“显示隐形字符”,因为除非你在打开的文本编辑器中,否则你不会看到任何事情发生,因为它在文本后面插入了字符,重复之间没有任何空格项目
在CSV中,字段包含在引号中,并以逗号分隔。 记录由回车符(输入或返回键)分隔。 字段标题由逗号分隔,但不包含在引号中。
以下是CSV格式的示例。我将用括号中的数字29([29])指定隐藏的字符:
包装箱号码,内容
“1”, “苹果[29]桔子[29]香蕉”
“2”,“鳕鱼[29]金枪鱼[29]鲑鱼[29]鳟鱼”
“3”,“我的小马[29]赫曼”
方框1有苹果,橘子和香蕉。
方框2有鳕鱼,金枪鱼,鲑鱼和鳟鱼。
Box 3有My Little Pony和He-Man。
你有它。 Filemaker将其识别为重复字段。值得首先从Filemaker导出一些重复字段,然后从文本编辑器中查看文件(显示隐藏字符),只是为了了解您将要完成的内容。
答案 1 :(得分:1)
你做不到。但你可以解决它:
据我所知,FileMaker似乎在内部使用ASCII-29字符来分割重复字段中的数据。你有几个选择。
如果您可以解决编码问题,只需使用一个元素,并将房间,设备和人工分开,并使用ASCII-29字符。
添加您自己的分隔符并编写一个脚本/自定义函数,该函数获取导入的数据并将其推送到所需的重复字段中。 (这个脚本看起来很蹩脚)
请勿使用重复字段
就个人而言,我尽可能远离重复领域。
如果可能,请使用新的相关表格来表示重复数据。如果您愿意,可以使用门户或类似设备来显示它,或者如果必须存在,您甚至可以将其拉入主表中的计算字段。像这样:
INVOICE
-------
ID
Invoice Date
LINES
-------
ID
fk_InvoiceID
Item
然后它们可以是相关的INVOICE :: ID - &lt; LINES :: fk_InvoiceID,您可以显示门户网站中的所有项目。
您还可以在发票表中找到类似于此的计算字段:
cLines = List(LINES::Item)
这会给你类似的东西:
Room
Equipment
Labor
在那一个领域。
答案 2 :(得分:1)
之前的答案不正确。实际上,您可以将XML文件中的分隔值列表导入FileMaker表。但是,公平地说,FileMaker无法使用它的原生XML Import本质上做到这一点。为此,必须创建一个XSL转换文件,以便在导入时与XML文件一起使用。在Transform文件的数据标记内,使用一个结构来迭代并连接XML文件中的值。
答案 3 :(得分:-1)