InfoPath 2007 ユーザー名の取得

InfoPath 2007 では、利用できる関数もいくつか追加されていますが、その中でもユーザー名を取得できるuserName 関数はいろいろと使える関数です。

例えば、コンプライアンスの面からフォームに入力したのは誰なのか、[承認] ボタンをクリックしたのは誰なのかといったことをユーザーがフォーム上に手入力した名前ではなく、システムによって管理したいといった場合、userName 関数を活用できます。

userName 関数利用例

・ フォームに入力したユーザー名取得
→ メインデータ ソース内にフィールドを作成し、既定値に userName 関数を設定

・ ボタンクリックしたユーザー名取得 (承認ボタン、保存ボタンなど)
→ メインデータ ソース内にフィールド作成し、ボタンの動作規則でフィールドに userName関数の
値をセット

またuserName 関数を利用するとユーザー名を取得することができますが、ユーザー名だけではなくドメイン名も合わせて必要な場合、VSTA で数行のコードを書くことで “ドメイン名/ユーザー名” の値を取得できます。

その場合、InfoPath オブジェクト モデルで提供される Application.User.LoginName プロパティを利用し、フォームのセキュリティレベルは完全信頼にする必要があります。

サンプル コード

誰がフォームを開いて入力したのかを管理したいため、フォームを開いた際に ”ドメイン名/ユーザー名“ を取得したい場合は、フォームの Loading イベント ハンドラ内に以下のコードを記述

[Visual Basic]

Dim loginUserName As XPathNavigator = MainDataSource.CreateNavigator() _.SelectSingleNode("フィールドへの XPath", NamespaceManager)
loginUserName.SetValue(Application.User.LoginName)

[C#]

XPathNavigator loginUserName = MainDataSource.CreateNavigator().SelectSingleNode("フィールドへの XPath", NamespaceManager);
loginUserName.SetValue(Application.User.LoginName);

また、userName 関数をさらに活用すると、フォームを開いた際に userName 関数によって取得したユーザー名を元に Web サービス経由で Active Directory から入力者情報、入力者の上司情報をとってきて自動表示させる (下図は参考画面) なんてことも可能です。フォームを開いた際にこういった情報があらかじめ表示されてると便利ですよね。

userName

奥田理恵

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中