2009-03-24 7 views
0

私は中程度の複雑なフラットファイルスキーマで作業しています。私はカーボールを私に投げかけました。Biztalkマッピングの問題、アイデアをお願いします

BCT121、C、7.35,6.5,0.39,7216、 "SMITH、TRACEY"、13456321、クラス洋裁専門店、クラス洋裁専門店、VAN、BC、20090109,20090112,20090127、V:ここで入力は次のようになります。 、0.46、 BCT121、C、14.7,13.01,0.78,7216、 "スミス、トレーシー"、13456321、クラスドレスシューティングシューズ、クラスドレスシューズシューズ、バン、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、HOME DEPOT#7145、HOME DEPOT#7145、VAN、BC、20090110,20090112,20090127、V、21.6、REF。#^ 1^

これで、クライアントが望む出力が得られます。

上記のトランザクションごとに1人の人物/カード番号と行ごとに1行のPRQTと呼ばれるヘッダー行があります。したがって、Tracyの場合、トランザクションの詳細であるPRQT行とPRLN行が1つあります。 。それはのようなもののようになります。

PRQT、SMIT6321、13456321、詳細、詳細、など

PRLN、SMIT6321,7.35、6.5、などなど

PRLN、SMIT6321、14.7 、13.01など

PRLNなど

PRLN、などなど

オクラホマので、私の主な問題は、ヘッダーのために一つだけprqtレコードを挿入する方法ですか?出力スキーマに既存の値が作成されているかどうかを調べることができるかどうかを調べるために、論理的なFunctoidを調べています。私の主なキーはSMIT6321(姓+カード番号の最後の4桁)です。つまり、基本的にC#でコーディングしていた場合、以前に挿入されたPRQTキーの配列を作成してループ中に、レコードを作成したかどうかを調べるときにこれを調べます。私がすでに作成していれば、私はスキップして、重複したPRQTレコードを作成しませんでした。レコードはソース文書内に時系列的に作成されるので、上記のレコードは混乱し、上のサンプルのように連続していない可能性が高いことに注意してください。

誰でも正しい方向に向けることができますか?私はどんなFunctoidsを使うべきですか? Biztalk Mapperはこのようなことを処理できますか?私はそれができると確信しています...私はそれを把握する必要があります。

おかげで、

エリック

答えて

1

エリック、私はカスタムXSLTでマップをやって見てしまう

。マッパー(それ自体が強力ですが)は、フープを通過することなく、あなたが望むものの100%を与えるつもりはありません。カスタムXSLTを使用すると、フィールド上で完全なソートを実行し、文書を適切にナビゲートして所望の出力を得ることができます。これからのような問題に対処するために、あなたのような問題に陥るBizress 2009 Pro Mapping by APressという新しい本があります。

-ブライアン

+0

応答のためにありがとう。私はカスタムXSLTを使用して終了しましたが、当初はわかりにくいものでしたが、かなりストレートでした。私はフィルタを使用して終了し、上記の目的の出力を得るためにすべてのレコードをループします(for-each)。再度、感謝します。 –

関連する問題