首页 文章

如何在莲花多米诺骨牌中创建自动递增字段?

提问于
浏览
2

我有莲花多米诺骨牌的应用场地

UNIDID -数字(计算)...

我希望每次创建一个新条目时,此字段将增加1,新值应存储在新记录文档中 .

我有一个@dbcolumn公式,它将使我获得UNIDID字段中的最后一个条目 -

mFind:=@DbColumn("" : "NoCache" ; @DbName ; "lkpEmpMasterbyOnlyUnidCode";1);

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

4 回答

  • 2

    要回答您的具体问题:

    lastEntry:= @Subset(mFind; -1); “UNID”lastEntry;

    但这里有几点你应该考虑的事情:

    • “UNID”是一个在Notes和Domino中具有非常特定含义的术语 . 它指的是自动分配给每个数据库中每个文档的通用ID . 如果您在应用程序中将此术语用于其他目的,那么当某些其他Notes专家必须查看您的应用程序时,您很可能会引起混淆 .

    • 分配顺序ID的最佳方法是让服务器为您执行此操作 . 即,使用空字段保存文档,并创建在新文档和已编辑文档上运行的代理,检查空字段,并在必要时分配下一个可用ID . 由于一次只能在数据库中运行一个代理程序,并且它一次只能处理一个文档,因此可以保证您不可能同时使用相同的唯一ID保存两个文档 . 这样做的缺点是,在代理有机会运行之前,您无法向用户显示顺序ID .

  • 2

    阅读IBMer Andre Guirard撰写的comprehensive treatment of sequential numbering in Notes/Domino . 他认为使用@DBColumn进行序列编码会产生重大的性能风险,并为替代方法提供算法和代码 .

    我建议使用清单2中的代码 Headers “按需生成数字” Headers 下的方法 . 文档锁定过度 - 只是检测编号文档是否已被修改,因为它已被读取并相应地做出反应就足够了 .

  • 3

    此公式来自我的技术说明数据库,使用表单上的计算合成字段生成顺序递增的数字,以便用户可以看到该数字,但只有在保存文档时才会修复 .

    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注释客户端和设计器,并且从未需要更改公式,实际上它已经在所有更高版本中多次重复使用 . 如果在多个服务器上创建文档,它将无法工作,因为预定代理是获得真正唯一顺序编号的唯一方法 .

相关问题