[Windowsシステム運用]
InfoPath−SQL Server連携で構築するC/Sシステム

第2回 InfoPathのデータ接続を編集する

5.ユーザー名や日付、時刻を取得する

兵庫県立西宮香風高等学校システム管理課長
Microsoft MVP for InfoPath
松本 吉生
2007/02/22

 クライアント/サーバ(C/S)システムでは、入力データの管理のために、データを入力したユーザー名や、データを登録した時刻などを同時に記録したいことがある。InfoPath 2003には「now」関数があり、この関数をフィールドのデフォルト値に設定しておけば、データを入力した日時を記録することができる。しかしnow関数で取得できるのは、あくまでもクライアント・コンピュータの日付と時刻である。もしクライアント・コンピュータの日付や時刻がずれていれば、正しい値を記録することはできない。またInfoPath 2003にはないが、InfoPath 2007にはユーザー名を取得する「userName」関数がある。

now関数とuserName関数
「now」関数はInfoPath 2003とInfoPath 2007で、「userName」関数はInfoPath 2007で使うことができる。上はInfoPath 2003の画面、下はInfoPath 2007の画面。

 一方SQL Serverにはデータベースに接続したActive Directoryのユーザー名を取得する関数がある。これを使えばデータ接続からInfoPath 2003でもユーザー名を取得することができる。

ユーザー名を取得するデータ接続の作成

 まず既存のフォームから、メニュー・バーの[ツール]−[データ接続]で[追加]ボタンをクリックし、新しいセカンダリ・データソースを作成するデータ接続ウィザードを開始する。データ接続は[データの受信]で利用し、データは[SQL Server]から受信することとする。[データベースの接続]では、接続するデータベースを選択と適当なテーブルを選択する。ユーザー名を取得するためにはテーブルは必要ないので、ここではウィザードを進めるために仮に指定しておく。[データ接続ファイルを保存して終了]では、既存のデータ接続ファイルを上書きしてしまわないように、ファイル名を別の分かりやすい名前に変更して保存する。

データ接続ファイルの保存
既存のデータ接続ファイルを上書きしてしまわないように、SQLを書き換えるデータ接続はファイル名を変更して保存する。
  別のファイル名を指定する。

ユーザー名を取得するデータ接続のSQLの編集

 データソース構造が表示されたら[SQLの編集]ボタンをクリックしてSQL文を編集する。SQL Serverからユーザー名を取得するには次のSQL文に書き換える。

select suser_sname() as "ユーザー名"

※赤字のSQL文にすべて書き換える

SQL Serverからユーザー名を取得するSQL
ウィザードでできたSQL文をすべて書き換える。
  書き換え結果。元のSQL文は削除し、すべて書き換えた。

 [SQLステートメントのテスト]を実行し、エラーがないことを確認して、データ接続ウィザードを終了する過程はこれまで説明したものと同じである。フォームの編集画面に戻ったら、データ接続作業ウィンドウから作成したデータ接続を確認する。

データ接続を確認する
SQLの編集で取得したユーザー名を「as」句で「ユーザー名」という別名に変更したことが反映されている。
  指定された別名「ユーザー名」。

 これで自分のActive Directoryユーザー名がSQL Serverから取得できるデータ接続ができた。この接続では、フォームが開かれたときにデータを取得するようにしておく。するとフォームを開いたときに、自動的にフィールドに自分のユーザー名がセットされる。

日付と時刻を取得するデータ接続の作成

 日付と時刻をSQL Serverから取得することもできる。これを利用すれば、たとえクライアント・コンピュータの日付と時刻がずれていても、SQL Serverから日付と時刻を取得することができるので、データ入力のタイミングを正しく掌握することができる。方法は先のユーザー名の取得の場合と同様で、新しくセカンダリ・データ接続を作成し、適切なファイル名で保存した後、SQLの編集でSQL文を次のように書き換える。

select getdate() as "日付と時刻"

※赤字のSQL文にすべて書き換える

SQL Serverから日付と時刻を取得するSQL
ウィザードで生成されたSQL文をすべて書き換える。
  書き換え結果。元のSQL文は削除し、すべて書き換えた。
 

 INDEX
  [Windowsシステム運用]InfoPath−SQL Server連携で構築するC/Sシステム
  第2回 InfoPathのデータ接続を編集する
    1.InfoPathのデータ接続の編集
    2.データソースのデータの並べ替え順序を変更する
    3.メイン・データソースのデータをリストボックス項目として利用する
    4.セカンダリ・データ接続を編集し、distinct句を利用する
  5.ユーザー名や日付、時刻を取得する
    6.SQL Serverから取得したデータの利用
 
 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間