InfoPath フォーム ID をつけたい! 1 (フォーム ライブラリと連携)

InfoPath で入力フォームを作成していて、フォームに自動的に ID を付けたいことはないでしょうか?今回は、InfoPath と SharePoint フォーム ライブラリを連携してフォームにオートナンバーで ID を付ける方法をご紹介します。

完成した InfoPath フォーム テンプレートを SharePoint サイトに発行

InfoPath フォーム テンプレートを作成後、SharePoint サイトに発行し、フォーム ライブラリを作成します。例として、InfoPath 2007 に搭載されているサンプルの [経費明細書] を使ってご紹介します。

1. サンプルの [経費明細書] をデザインモードで開いて、SharePoint サイトに発行します。
発行する際、SharePoint サイトで使用する列として、ID をオートナンバーで設定したいフィールドを必ず追加します。(経費明細書だったら、経費コードのテキストボックスにバインドされている expenseCode フィールドを「経費明細コード」という列名で追加)

clip_image002

フォーム テンプレートの設定変更

SharePoint サイトに発行後、フォームテンプレートにオートナンバー ID を付けるため追加の設定を行います。

1. データ接続の作成
発行先の SharePoint フォーム ライブラリからデータを受信するデータ接続を作成します。

<データ接続ウィザードでの設定項目>

  設定項目

 

  新しいデータ接続先

  データの受信

  どこからデータを受信しますか?

  SharePoint ライブラリまたはリスト

  SharePoint サイトの詳細

  前の手順での フォーム テンプレート
  発行先サイトの URL

  リストまたはライブラリの選択

  発行して出来上がったフォーム ライブラリを選択

  フィールドの選択

  オートナンバー ID を指定したいフィールドのみ
  選択 (経費明細コード)

  フォーム テンプレートのデータの
  コピーを保存する

  必要なし

  フォームを開くとき自動的に
  データを取得する

  必要

2. フォームを開くときの動作規則を設定
[ツール] メニューから [フォームのオプション] を開き、[開く/保存] カテゴリの [動作規則] をクリックして設定します。

<フォームを開くための動作規則を2つ設定>

  1つ目

 

  条件

  セカンダリ データソースの経費明細コード が
  存在しない

  動作

  [動作] フィールドの値を設定する

 

  [フィールド] オートナンバー ID を設定したいフィールド

 

  [値] 1

  2つ目

 

  条件

  セカンダリ データソースの経費明細コード が空白でない

  動作

  [動作] フィールドの値を設定する
  [フィールド] オートナンバー ID を設定したいフィールド
  [値] max(@セカンダリ データソースの経費明細コード)+1

フォーム テンプレートの再発行

設定を追加したフォーム テンプレートを再度発行してフォーム テンプレートを更新します。
これで、完成です。

・ フォーム ライブラリの [新規] クリックで InfoPath フォームを開き、オートナンバーな ID が自動的につけられていることを確認します。
・ SharePoint フォーム ライブラリと連携させることで、InfoPath の標準機能だけで設定できます。

奥田理恵

InfoPath フォーム ID をつけたい! 1 (フォーム ライブラリと連携)」への1件のフィードバック

  1. こんにちは

    この処理(max(hogehoge)+1)を使ってIDを生成しているのですが、MOSS上に記録されたファイルが削除されると、データ接続が正しい値を取得できなくなる現象に苦しんでいます。

    普通に運用しているには快適なのですが、削除が発生すると、同じ番号がMOSSから返されるため、IDのインクリメントが行われず、同じ番号に上書きをしてしまいます。
    何か解決策はないものでしょうかね。

    あと、フォームを開くときにMOSSの管理する最大値を取得していると、フォームに入力しているうちに別のユーザーが同一の処理を開始すると、同じ番号が発番されるのでは?書き込む直前に一度クエリを出すのが正着と思います。

    返信

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中