フィールドに値を自動入力する

 今まで追加したフィールドは、すべてユーザーが手入力するためのフィールドでしたが、それでは面倒ではないでしょうか。例えば、記入日欄には作成した日付が自動的にセットされたら便利ではないでしょうか。名前欄にはユーザーの名前が自動的に入ったら便利ではないでしょうか。
 そこで、今回は以下の動作をする設定方法を学びます

・記入日欄 : 文書を作成した日付を自動的にセット
・名前欄  : 文書を作成したユーザーのIDを自動的にセット

1. Designerクライアントで「質問表」フォームを開き、「Data」フィールドを選択します。

2. オブジェクトで「Data」フィールドの「デフォルト値」を選択し、値欄に「@Today」と入力し、保存します。デフォルト値では、フォームが新規で作成されたときの初期値を設定することが可能です。@Todayは今日の日付を返す@関数です。結果として、新規で質問表フォームを開いたとき、記入日欄に今日の日付を初期値として設定します。

3. Notesクライアントから、質問表フォームを新規で開いてみます。すると、記入日欄に、今日の日付が入力されることが確認できます。

 まずは、デフォルト値を用いた値の設定方法を紹介しました。あくまで初期値のため、ユーザーによる変更は可能です。ですが、要件によってはユーザーによる変更をさせたくない場合があります。例えば、名前欄をユーザーに入力させると成りすましができてしまいます。そこで、名前欄はユーザーに入力させず、システムが自動で設定するようにフォームを設計します。

4. 「質問表」フォームで「Name」フィールドをダブルクリックし、Nameフィールドのプロパティを表示します。「種類」欄が「テキスト」となっているものを「名前」に変更します。その後、「編集可能」となっているものを「作成時の計算結果」に変更します。(名前フィールドはユーザーIDを格納・表示させるためのフィールドです。)

ここで「計算結果」というフィールドの種類が登場します。これは、ユーザーに値を入力させずに、あらかじめ設定した計算式によって値を表示・格納します。計算結果には以下3種類のタイプがあります。

■作成時の計算結果
新規フォーム作成時に一度計算が行われ、その後は格納した情報を表示します。作成者のような作成時に一度のみ計算すればよい場合に利用します。

■計算結果
フォームが開かれるたびに計算が行われる計算結果フィールドです。更新日時のような常に計算が必要なフィールドに設定します。都度計算が行われ負荷増大につながるため、必要がなければ「作成時の計算結果」フィールドを利用します。

■表示用の計算結果
「現在の時刻を表示したい」といった、表示だけしてデータの格納をする必要がない場合に利用するフィールドです。データを格納しない分、Notes DBのディスクスペースを節約することが可能になります。

5. Nameフィールドの計算式として「@UserName」を設定します。これは現在のユーザー名を取得する@関数です。

6. フォームを保存し、Notesクライアントから新規フォームを作成します。すると、名前欄が編集できない状態になっており、現在のユーザーIDが表示されることが確認できます。

蛇足ですが、フィールドの値とは直接関係ないですが、似たような方法でウィンドウのタイトルを設定することも可能です。

7. フォームを選択し、フォームの「ウィンドウタイトル」を選択し、値欄に「"アンケート・フォーム"」と入力し、フォームを保存します。

8. Notesクライアントからフォームを開くと、ウィンドウの上部やタブに「アンケート・フォーム」と表示され、よりユーザーが使いやすくなります。

9. ただし、名前フィールドに変更したことで、一点他に影響があります。名前フィールドで格納された値を、そのままビューで表示しようとすると、「cn=xxx/o=xxx」といった形で表示されてしまいます。
(名前型で格納された値は、裏では共通名、組織名を管理された形「cn=xxx/o=xxx」で格納されているため)

10. このままでは見栄えが悪いので、全文書ビューの設計で、「名前」列の値を「@Name([CN]; Name)」と入力します。(これはNameフィールドからCNの部分のみ表示しなさいという式です)

11. ビューの設計を保存して、再度Notesクライアントからビューを確認すると、名前型で格納された値のうち「cn=」の部分のみ表示されるのが確認できます。

前へ | Topへ | 次へ

inserted by FC2 system