导航

使用GetUniqueIndentifier为某类对象连续编码

Posted on 2006-06-10 15:30  hcfalan  阅读(255)  评论(0编辑  收藏  举报
在一般的客户化情景中,总会有对某类对象连续编码的情况,例如对规格文档(SpcDoc)使用如下规则进行连续编码:
前缀'SPEC-' + 5位流水码,ex: SPEC-00001,SPEC-00002,...
解决方法:
要点:使用GetUniqueIndentifier方法获取编码。
步骤:
1、两个关键类常量的设置
   SpcDoc.UdfPrefixC = "SPEC-"; // 设置编码前缀
   SpcDoc.UdfSeriesChrsC = "5"; // 设置流水码长度为5位
2、重新定义DSpdCre对话框的SetDialogDefaults方法
   (注:DSpdCre为创建SpcDoc的对话框)
   attach object message SetDialogDefaults to DSpdCre in server bbksvr;
 
message DSpdCre:SetDialogDefaults(...)
{
   string nextId = NULL;
   dstat = SetDialogDefaultsAtParent(DSpdCreClass,...);
   // check dstat
 
   dstat = GetUniqueIndentifier(SpcDocClass, &nextId, mfail);
   // check dstat and mfail
 
   dstat = objSetAttribute(thisObj, DocumentNameAttr, nextId);
   // check dstat
}
 
3、注意最后要使用DWE更改一下DSpdCre对话框的DocumentName字段为只读属性
 
4、更多想法:到此为止,用户点击创建SpcDoc文档的时候,DocumentName会自动编码,
但是,点击Apply按钮,文档创建之后准备创建下一个文档的时候,DocumentName字段没有
及时更新为下一个编码,该如何做?
 
solution for Point 4
重新定义DSpdCre的ApplyButton方法,在该方法中获取SpcDoc的下一个编码,并设置到
DocumentName字段中去,代码略。