2011-12-16 32 views
2

我在的Lotus Domino應用程序與現場如何在蓮花多米諾骨牌中創建自動遞增字段?

UNIDID - 值(計算)...

我想,每一個創建新條目時,此字段由1和增量新的價值應該被存儲在新的記錄文件..

我有一個@DbColumn公式,這將讓我在UNIDID最後進入現場

mFind:= @ DbColumn(「」:「NoCache的「; @DbNa我 ; 「lkpEmpMasterbyOnlyUnidCode」; 1);

如何增加mFind和 'UNIDXXXX' 的形式提交?

+2

此數據庫是否複製到其他服務器或本地用戶系統?蓮花的分佈式特性可能會使這非常困難。 – 2011-12-16 10:00:56

+0

其系統的本地用戶。 – Bebo 2011-12-16 10:20:12

回答

3

爲了回答您的具體問題:

lastEntry:= @Subset(mFind; -1); 「UNID」+ lastEntry;

但這裏有幾件事情你應該想想:

  1. 「UNID」是具有Notes和Domino中一個非常特殊的意義的術語。它指的是自動分配給每個數據庫中每個文檔的通用標識。如果您在應用程序中將此術語用於其他目的,那麼當某些其他Notes專家必須查看您的應用程序時,您可能會在某一天導致混淆。

  2. 分配順序編號,最好的辦法是讓服務器爲你做它。也就是說,用一個空白字段保存文檔,並創建一個在新文檔和編輯文檔上運行的代理,檢查空字段,並根據需要分配下一個可用標識。由於一次只能在數據庫中運行一個代理程序,並且它一次只能在一個文檔上運行,所以這可確保您不可能有兩個文件同時使用相同的唯一ID保存。這樣做的缺點是,在代理獲得運行機會之前,您無法向用戶顯示順序標識。

2

閱讀由IBMer Andre Guirard編寫的comprehensive treatment of sequential numbering in Notes/Domino。他認爲使用@DBColumn可以對序列編號產生重大的性能風險,併爲替代方法提供算法和代碼。

我使用清單2中的代碼推薦了「按需生成數字」標題下的方法。文檔鎖定過度 - 僅僅檢測編號文檔是否已被修改,因爲它已被讀取,因此反應已足夠。

1

這個公式是從我的技術說明數據庫,生成使用窗體上的計算由當字段,以便用戶可以看到數的順序越來越多,但是當你保存文檔是唯一的固定。

T_List:= @ DbColumn( 「」: 「NoCache的」; 「」; 「RefNumView」; 1); @If(@IsNewDoc & @Elements(T_List)= 0; 1; @IsNewDoc &!@IsError(T_List); @ Subset(T_List; 1)+ 1; RefNumber)

如果視圖沒有記錄,則需要一個視圖第一列按降序存儲您的編號在1

數據庫編號是在Notes 4.5開發的,但現在我還用它現在有8.5 Notes客戶端&設計師,從來沒有需要改變配方,它確實已經在所有後來的再利用,多年來多次版本。如果文檔是在多個服務器上創建的,則它將不起作用,因爲排定的代理是唯一獲得真正唯一順序編號的方法。

相關問題