設定文書の値を変更しても、作成済みのアンケートに反映しないようにする

 今のままでも、ビューから質問・選択肢を取得するという動作的には完成しているのですが、質問と選択肢では動作が異なります。
 質問文は一度「作成時の計算結果」で値を取得しているので、設定文書の値がどのように変更になろうと、一度作成したアンケート結果には影響がありません。しかし、選択肢欄は常に設定文書の値を取得してしまうため、設定文書の変更が既存のアンケート文書にも影響を与えてしまいます。

 そこで、今回は設定文書の変更を行っても、既存の文書に影響を与えないという要件を実現する方法を学びます。

1. 「Answer01」フィールドの上に、「choices01」フィールドを作成時の計算結果で追加します。その際、「複数値も可」にチェックを入れます。

2. 「choices01」フィールドは非表示時にし、計算式の値に、選択肢の取得時に使用した「@Trim(@DbColumn( "" :"" ; "" :"" ; "(SetQuestions)" ; 2 ))」を設定します

3. 「Answer01」フィールドの選択肢設定時の式欄に、「choices01」を設定します。これで、一度choices01フィールドに選択肢の情報を取得し、値を保持し続け、ラジオボタン側ではその値を表示するだけなので、設定文書側の内容を変更しても、その変更が既存の文書に影響を与えることはありません。

4. 同様に質問数分だけ、choisesXXフィールドを作成し、その値を取得するようにAnswerXXフィールドの設定を変更します。(例では全3問なので、choices02フィールドには「@Trim(@DbColumn( "" :"" ; "" :"" ; "(SetQuestions)" ; 3 ))」、choices03フィールドには「@Trim(@DbColumn( "" :"" ; "" :"" ; "(SetQuestions)" ; 4 ))」を設定します)

5. 質問表フォームの設計を保存し、再度新規アンケートを作成します。見栄えは今までと変わりませんが、今後作成する文書は、設定文書の内容を変更しても、その内容が影響を与えることはなくなります。

○設定文書の変更を反映させない作りの方がすぐれているのか?
 今回は、設定文書の変更を反映させない作り方の紹介をしましたが、変更を反映する作りとしない作りで、どちらが優れているということはありません。お客様のご要望に合わせて、どちらにするか検討する必要があると思います。
(ちなみに、常に値を反映し続ける作りが良いということであれば、質問欄は「計算結果」フィールドに変更し、ラジオボタンは最初に作成したままAnswerXXフィールドのみで実現することになります。)

○choiecesXXフィールドの位置について
 今回、choices01フィールドをAnswer01フィールドの上に配置しましたが、今回のように他のフィールドを参照するようなフィールドを配置する場合、参照側フィールドより参照される側のフィールドを上に配置するようにしてください。どうやら、Notesではフォームの上部に配置されたフィールドから計算がされていくようで、choices01フィールドの方が下にあると、ビューから値を取得する前にAnswer01フィールドから参照されて、うまく動作しない可能性があります。
 また、非表示フィールドはフォームの上部にまとめるか、参照するフィールドの真上に配置するかは、設計ルールで決めておき、どちらかに統一した方が、メンテナンス性が良くなると考えます。

前へ | Topへ | 次へ

inserted by FC2 system