フォームの再設計後に文書を更新する

フォームの再設計を行う場合は、既存の文書への影響も考慮してください。フォーマットなどのフォームの変更は、ユーザーが既存の文書を開いたときに自動的に反映されます。新規フィールドの追加などの他の変更は、既存の文書の内容には影響しません。既存の文書に変更を反映させるには、文書を手動で更新するか、エージェントを実行します。

例えば、新しいコンボボックスフィールド「Status」とデフォルト値「Draft」を追加した後、新規文書を作成すると、[Status] フィールドに値が表示されます。ただし、旧バージョンのフォームで前回編集した文書には、このフィールドが含まれません。これらの文書のいずれかを開くと、そこにはデフォルト値「Draft」が含まれているように見えます。これは、文書を開く際に、まだ値のないすべてのフィールドに対して Notes® がデフォルト/値の式を計算するためです。ただし、文書を編集モードにしないで保存せずに閉じると、文書は変更されず、このフィールドは含まれないままになります。

この違いを確認するには、[文書のプロパティ] ダイアログの [フィールド] タブを使用するか、または新規フィールドを表示する列を使用してビューを作成します。新規文書の場合は列内に値が表示されますが、古い文書の場合は空白のままになります。

場合によっては、ご使用のアプリケーションでは違いが生じないこともあります。古い文書内のフィールドにデフォルト値 (またはその他の値) を割り当てたい場合は、これを実行するエージェントを作成します。上記の例の場合、データベース内のすべての文書に対して実行される式エージェントは、以下のような式になります。

SELECT Form = "formname" & @IsUnavailable(Status);
FIELD Status := "Published"

この場合、既存の文書のステータスは「Published」です。これは、新規文書に使用されるデフォルトの「Draft」ではなく、既存の文書としてのステータスを反映したものです。

すべての新規フィールドをデフォルト値に設定する場合は、@Command([ToolsRefreshSelectedDocs]) 式または @Command([ToolsRefreshAllDocs]) 式を使用します。 これをツールバーボタンに設定すると使いやすくなります。しかし、すべての場合で得策であるとは限りません。これらの機能を使用する前に、その機能に関する資料を参照してください。

既存文書の更新が不要なフォームの変更

フォームに [フォームを文書に格納] プロパティが設定されていない場合に、次に示すフォームの要素の変更は、既存の文書に自動的に反映されます。ユーザーが文書を開くと、変更を反映した正しいフォーマットが表示されます。

既存文書の更新が必要なフォーム変更