原因不明なフォームテンプレートの破損について

[今日の道しるべ 第17回 InfoPath ネタはビューが上がらない。。。]

久々の今日の道しるべですが、(何回目か忘れてました。。。)

InfoPath ネタはビューが少ないですねー。

まあ、当たり前ですよね。

最近は VTSO 結構開発されてきているようなので、やはり、VSTO ネタはビューが上がるのですが、そもそも、VSTO に興味がある方が RSS やお気に入りに登録されていると思うので、InfoPath についてはビューが上がらないのも当然かもしれません。

ただ、SharePoint と連携できる利便性の高いフォームアプリであるInfoPath の情報も少ないので、情報は出していきたいところです。

恐らく、「InfoPath みちしるべ」という名前のブログを始めると思います。(笑)

「みちしるべ」シリーズで商標取ろうかという感じです。 (笑)

関係各位、VSTO に関わる.NET 開発者様などおかげ様でVSTO自体はようやく日の目を見れるようになってきた感があります。

次期、Visual Studio のカタログでも、メインは VSTO による Office 開発です。

私自身も .NET によるOffice 開発やVSTO の認知度向上というところでこのブログやお客様・パートナー様対応、セミナーでここ数年頑張ってきたことは一助になったと思います。

自身ではこの状況をなんとか変えたい、変えなきゃいけないという思いがありました。

その思いが叶ったことは非常にうれしいことです。その思いは InfoPath についても同じ思いがあります。

実は InfoPath は静かに利用され始めています。しかし、これから始める人に対しての情報や開発をし始めた人が最初にぶつかり、次のフェーズにいくまでの道のりが大変かもしれません。

だから、たぶん、始めると思います。動かないことには何も変わらないので。

本当に正しいと思うことを実践し変えていきたいです。そしたら、ベクトルは集まってくると思うので。

[本題] 

InfoPath のフォーム破損についてですが、稀にフォームの動きがおかしいときがあります。例えば以下のような症状がおきます。

l フォームが起動しない。

l 不明なエラーが発生

l スクリプトで XML DOM で指定した XPATH を正しく認識しない。

原因としてはフォームの破損です。

破損の原因としては、データソースから作成したようなテンプレートのデータソースを削除してフォームの再構築を複数回おこなった場合や同じテンプレートにコントロールの追加・削除を頻繁におこなった場合に XML のスキーマにごみが生じスキーマの不整合が発生するためです。

コントロールの追加や削除などをおこなうと自動的にスキーマが生成されます。

そのような作業を繰り返す内にフォームが破損することがあります。

その際には非常に修復は難しく、再作成が必要になるケースが多いです。

フォーム再作成の手順:

再作成の際のお手軽方法ですが、

1. 破損しているフォームのデザインをまるごとコピーします。領域を選択して、新しい空白のフォームに貼り付けます。

これでコントロールや動作規則・条件付き書式を含むデザイン自体は再利用できます。

2. 次に元のデータソースを確認してスキーマを作成していきます。

3. データソースとコントロールのフィールドを一つずつマッピングしていきます。

※ここで注意しなければならないのは前のフォームのデータソース構造と合わせないと正しくフィールドが認識されないこと(例としては、セクションを作成している場合にグループと紐付ける必要があるとか)やコントロール自体のスキーマが破損している場合に破損情報も新しいフォームに移行してしまうことがあります。なので、少し切り分けが必要です。