2011-12-16 19 views
2

私は新しいエントリが作成されるたびに、このフィールドは1ずつ増加することにしたい...lotus dominoで自動増分フィールドを作成する方法は?

をフィールドと蓮のドミノでアプリケーション

UNIDID個(計算された)を持っており、 = @ DbColumn(「」:「NoCache命令新しい値は、私は私のUNIDIDフィールド -

mFindの最後の項目を取得します@DbColumn式を持って...新記録文書に

を格納する必要があります"; @DbNa私。 "lkpEmpMasterbyOnlyUnidCode"; 1);

どのように私はmFindをインクリメントし、 'UNIDXXXX' の形でそれを提出するのですか?

+2

このデータベースは他のサーバーまたはローカルユーザーのシステムに複製されていますか? Lotusの分散された性質は、これを非常に困難にする可能性があります。 –

+0

ローカルユーザー向けのシステムです。 – Bebo

+0

まずはここをクリックしてください。http://www-10.lotus.com/ldd/46dom.nsf/Search?SearchView&Query=sequential&SearchOrder=0&Start=1&Count=100 –

答えて

3

あなたの特定の質問に答えるために:

lastEntry:= @Subset(mFind; -1)。 "UNID" + lastEntry;ここ

しかし、あなたが考えなければならない物事のカップルです:

  1. 「UNIDは、」NotesとDominoで非常に特定の意味を持つ用語です。ユニバーサルIDは、各データベースのすべての文書に自動的に割り当てられます。アプリケーションでこの用語を別の目的で使用すると、他のNotesエキスパートがアプリケーションを見なければならないときにいつか混乱する可能性があります。

  2. シーケンシャルIDを割り当てる最も良い方法は、サーバーがあなたのために行うことです。つまり、空のフィールドを持つ文書を保存し、新しい文書や編集された文書で実行されるエージェントを作成し、空のフィールドをチェックし、必要に応じて次に使用可能なIDを割り当てます。一度に1つのエージェントだけがデータベース内で実行でき、一度に1つの文書のみで動作するため、同じ一意のIDで同時に保存される2つの文書を持つことはできません。これの欠点は、エージェントが実行のチャンスを得る前に、ユーザーに連続IDを表示できないことです。

2

IBMer Andre Guirardによって書かれたcomprehensive treatment of sequential numbering in Notes/Dominoを読んでください。彼は、シーケンシャル・ナンバリングのために@DBColumnの使用を重大なパフォーマンス・リスクとみなし、代替アプローチのためのアルゴリズムとコードを提供します。

リスト2のコードを使用して「Number On Demand」という見出しの下でアプローチすることをお勧めします。ドキュメントのロックは過剰です。単に番号付きドキュメントが読み込まれてから変更されたかどうかを検出するだけです。

1

この公式はテクニカルノートのデータベースにあります。フォームに計算時に計算されたフィールドを使用して番号が順番に増加するように、番号を表示することができます。

T_List:= @ DbColumn( "":NoCache ";"; "RefNumView"; 1); @If(@IsNewDoc & @Elements(T_List)= 0; 1; @IsNewDoc &!

ビューに最初の列が降順でソートされている必要があります。ビューにレコードがない場合は、番号が格納されているフィールドでソートされている必要がありますナンバリング1

データベースはNotes 4.5で開発されましたが、私は今でも8.5ノートクライアントの&デザイナでこれを使用していますが、実際には数式を変更する必要はありません。バージョン。スケジュールされたエージェントが本当にユニークなシーケンシャルな番号付けを取得する唯一の方法であるため、ドキュメントが複数のサーバーで作成されている場合は機能しません。

関連する問題