2009-03-25 11 views
2

InfoPathフォームコンポーネントを含むASP.NETアプリケーションをInfoPath Forms Serverを使用してブラウザに配信することができます。フォームをSharePointに保存するのではなく、XMLフォームデータをASP.NET Webサービスに送信します。これにより、SQL Server 2005でXMLデータ型としてデータが保存されます。これは問題なく動作しています。 InfoPathフォームに戻ります。古いXMLデータをInfoPathフォームの新しいバージョンに読み込みます

古いデータ(フォームのバージョン1)を新しいバージョンのフォーム(バージョン2)に読み込もうとすると、問題が発生します。この新しいバージョンのフォーム(V2)には、たとえば、新しいテキストボックスフィールドがあります。 V2フィールドはV1 XMLには存在しないため、V2フォームで表示されますが、無効になり、入力することはできません。

私たちの質問は、V1のXMLデータをV2フォームに読み込んで、フォームのV2に現在あるフィールドを完成させる方法です。

この動作は、InfoPath Forms Serverとフォームライブラリに格納されたフォームを使用して行うことができます。フォームテンプレートを更新すると、新しいテンプレートで古いフォームを開いたり、新しいフィールドを表示したり、新しいフィールドにデータを保存したりできます。フォームXMLデータがフォームライブラリではなくSQL Serverに格納されている場合、プログラムでそれを実行する方法を知る必要があります。

答えて

1

は、少し曖昧であるために謝罪ので、私は何のInfoPathをしたので、しばらくしている:

はかなり異なる拡張子を持つだけのZIPアーカイブでのInfoPathテンプレートの

パート、と呼ばれるファイルであります"upgrade.xsl"このファイルには、以前のスキーマバージョンを対象とするドキュメントを「アップグレード」する1つ以上のXSLトランスフォーメーションが含まれています。

問題は、正しい変換が1つのシナリオ(SharePoint /フォームライブラリ)に適用され、他の(Webサービス)に適用されないのはなぜですか? 2番目のプロセスは、InfoPathがソースドキュメントがターゲットとするスキーマのバージョンを知るために使用するタグを失う可能性がありますか?私が参照しているタグは "?mso-infoPathSolution"タグ( "solutionVersion"属性)だと思います。

このタグが実際にドキュメントから削除されていて、簡単に防止できない場合は、適切なXSLトランスフォーメーションを手動で適用する必要があります。もちろん、扱っているバージョンが複数ある場合は、いずれの場合でもどの変換を適用する必要があるかを判断するのが難しいかもしれません。

+3

Upgrade.XSLは欠落している要素です。InfoPathが現在のバージョンより古いフォームのフォームデータを開くときに呼び出される必要があります。 InfoPathオブジェクトモデルを使用してこのXSLを取得する方法はありますか?それを手動で抽出して、古いデータに変換を実行するのではなく、 –

関連する問題