我正在制作一个中等复杂的平面文件架构,我已经向我扔了一个曲线球。这是输入的样子:
BCT121,C,7.35,6.5,0.39,7216,“SMITH,TRACEY”,13456321,CLASS DRESSMAKING SHOPPE,CLASS DRESSMAKING SHOPPE,VAN,BC,20090109,20090112,20090127,V,0.46, BCT121,C,14.7,13.01,0.78,7216,“SMITH,TRACEY”,13456321,CLASS DRESSMAKING SHOPPE,CLASS DRESSMAKING SHOPPE,VAN,BC,20090110,20090112,20090127,V,0.91, BCT121,C,60.27,53.34,3.2,5812,“SMITH,TRACEY”,13456321,ME-N-ED'S PIZZA PARLORS,ME-N-ED'S PIZZA PARLORS,VAN,BC,20090110,20090112,20090127,V,3.73, BCT121,C,201.56,179.96,0,5200,“SMITH,TRACEY”,13456321,THE HOME DEPOT#7145,THE HOME DEPOT#7145,VAN,BC,20090110,20090112,20090127,V,21.6,REF。#^ 1 ^
好的,所以客户想要的输出如下:
每个人/卡号的1个标题行称为PRQT,上面的每个交易都有一行。所以对于Tracy,我们将有1条PRQT线和4条PRLN线,这是交易细节..所以它会看起来像:
PRQT,SMIT6321,13456321,详情,详情等。
PRLN,SMIT6321,7.35,6.5等等。
PRLN,SMIT6321,14.7,13.01等等。
PRLN等等。
PRLN等等。
好的,所以我的主要问题是如何只为标题插入一个prqt记录?我正在查看逻辑functoid,看看是否有一个可以查看是否已为输出模式创建现有值。我的主键是SMIT6321(姓氏+卡号的后四位数字)。所以基本上如果我在C#中编写这个代码,我会创建一个先前插入的PRQT键的数组,在我的循环中,当我看到我是否已经创建了一个记录时,我会对此进行查看。如果我已经创建了,我会跳过,所以我没有创建重复的PRQT记录。请注意,记录是在源文档中按时间顺序创建的,因此上述记录可能会混淆,而不是像上面的示例那样顺序。有人能指出我正确的方向吗?我应该使用哪些functoid? Biztalk Mapper可以处理这类事吗?我确信它可以......我只需要弄明白。
感谢,
埃里克
答案 0 :(得分:1)
埃里克,
我会在自定义XSLT中查看地图。映射器(虽然它本身很强大)不会给你100%的你想要的东西而不经过篮球。通过使用自定义XSLT,您将能够对字段执行完整排序并正确导航文档以获得所需的输出。为了解决将来出现这类问题的问题,有一本名为BizTalk 2009 Pro Mapping by APress的新书会解决像你这样的问题。
布莱恩