下面是您需要根据问题的一些评论的代码。
function simplegetSequentialNumber(){
synchronized(applicationScope){
var newSeqNum:Int = 0;
if (applicationScope.containsKey("seqNumber")){
newSeqNum = applicationScope.get("seqNumber") + 1;
applicationScope.put("seqNumber", newSeqNum);
var seqView:NotesView = database.getView("vw_SequentialNumberStore");
var seqNumberDoc:NotesDocument = seqView.getFirstDocument();
seqNumberDoc.replaceItemValue("seqNumber",applicationScope.get("seqNumber"));
seqNumberDoc.save(true,true);
} else {
var seqView:NotesView = database.getView("vw_SequentialNumberStore");
try {
var seqNumberDoc:NotesDocument = seqView.getFirstDocument();
applicationScope.put("seqNumber",seqNumberDoc.getItemValueInteger("seqNumber") + 1);
seqNumberDoc.replaceItemValue("seqNumber",applicationScope.get("seqNumber"));
seqNumberDoc.save(true,true);
newSeqNum = applicationScope.get("seqNumber");
} catch(e) {
var seqNumberDoc:NotesDocument = database.createDocument();
seqNumberDoc.replaceItemValue("Form","cPanel");
seqNumberDoc.replaceItemValue("seqNumber",1);
applicationScope.put("seqNumber", 1);
seqNumberDoc.save(true,true);
newSeqNum = 1;
}
}
}
var seqNNNN:String = ("0000" + newSeqNum.toString()).slice(-4);
return seqNNNN;
}
正如你可以先看看它会在同步块的下一个顺序号,增加了一个,然后把数回applicationScope。
然后它将它转换为字符串,并添加额外的4个零,然后从中加上正确的4个字符。这将返回一个字符串并需要存储在文本字段中。您不能将其存储在数字字段中,因为Notes会自动从该值中删除前导零。
您可以通过将其添加到服务器端的JavaScript库中,然后将其包含在一个运行重复控制来重复调用该函数的计算字段的简单页面中来测试此函数。这是我的测试页面。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:script src="/seqNum.jss" clientSide="false" />
</xp:this.resources>
<xp:repeat id="repeat1" rows="30" value="#{javascript:30}">
<xp:text escape="true" id="computedField1"
value="#{javascript:simplegetSequentialNumber();}" />
<xp:br id="br1" />
</xp:repeat>
</xp:view>
谢谢你的代码,但是这只增加了一个数字...... – gkidd 2012-03-22 13:50:10
我在代码中发现了一个小错字,我在第三行中使用了seqNNN而不是seqNNNN。 – 2012-03-22 14:11:58
我已经用一个如何调用它的例子更新了代码。如果您只能将单个数字保存到文档中,则意外将该字段设置为数字字段。您不能在数字字段中存储0001,笔记会自动将其转换为1.您必须将返回的值存储在文本字段中。 – 2012-03-22 14:13:31