收录日期:2018/09/20 15:45:49 时间:2016/05/23 01:58:06 标签:消息协作
请高手帮忙
  现在想做一个合同号申请的流程,合同号的产生规则是由年月+合同类别号+流水号
合同类别号(A,B,C)
 我在点下一步是想判断这个合同号是否已经用。怎么处理
是否考虑使用简要表呢?
Function setFlowNO(doc As notesdocument)
'===========================================
'
'功    能:生成流水号的函数
'作    者:
'日    期:2003/12/2
'描    述:
'版    本:1.0
'
'===========================================

Dim ss As New notessession
Dim db As notesdatabase
Dim profileDoc As NotesDocument
Dim profileItem As NotesItem
Set db=ss.currentdatabase
Set profileDoc = db.GetProfileDocument("setFlowNO","" )
Set profileItem =profileDoc.GetFirstItem("FlowNO")

Dim strToday As String
Dim strCurrentNo As String
Dim strYear As String
Dim intFlowNO As Integer
If Not profileitem Is Nothing Then
intFlowNO=Cint(profileDoc.flowNO(0)+1)
Else
Set profileitem = New NotesItem(profiledoc, "FlowNO", 1)
intFlowNO=profileDoc.flowNO(0)
End If
profileDoc.FlowNO=intFlowNO
Call profileDoc.save(True,True)

strToday=Today()
strYear=Year(strToday)
strCurrentNo=strYear+Right(intFlowNO+1000000,6)
setFlowNO=strCurrentNo
End Function
在拟制表单的WebQueryOpen中加一个代理生成一个空文档[保存合同号][每次代理运行在此文档对应的视图中检索合同号]
会产生大量空文档
合同号已经产生,我是想在保存前再判断一次有没有重复。因为现在如果有两个人同时申请时会产生重复号。
你专门做一个公共表单和视图来存储当前的合同编号(包含分类域),然后在你起草合同的时候先根据
相应的类别和年份取到当前的合同号加1作为当前合同的编号
然后在点击下一步的时候,按照当前合同的年份,分类、序号,合同编号视图中检索,如果没有则认为该合同号不重复,如果已经存在,则认为在此操作之前已经有人提交了一份相同编号的合同,可以给出错误提示
首先 做一个表单hetongxuhao  包括 syear 域  smonth 域  sort 域  number 域
做一个视图view  包含四列 分别显示上述四个域值 列属性中设置为升序

在合同表单的中做一个生成编号的按钮,按钮点击时执行如下代理
Sub Initialize
Dim session As New notessession
Dim CUR_DOC As notesdocument
Dim INFO_DOC As notesdocument
Dim INFO_VIEW As notesview
        Dim keys(1 to 3) as string
Set CUR_DOC=session.DocumentContext()
Set INFO_VIEW=INFO_DB.getview("view")
        keys(1)=Cstr(Year(Now))
        keys(2)=Cstr(Month(Now))
        keys(3)=CUR_DOC.Sort(0)
Set INFO_DOC=INFO_VIEW.getdocumentbykey(keys,1)
If Not INFO_DOC Is Nothing Then
count=INFO_DOC.number(0)
CUR_DOC.SerialNumber=keys(1)+"-"+keys(2)+"-"+keys(3)+"-"+cstr(count)
INFO_DOC.number=count+1
Call INFO_DOC.save(True,False)
Call CUR_DOC.save(True,True)
Else
Set INFO_DOC=New notesdocument(INFO_DB)
INFO_DOC.form="hetongxuhao"
INFO_DOC.number=1
INFO_DOC.syear=keys(1)
                INFO_DOC.smonth=keys(2)
                INFO_DOC.sort=keys(3)
Call INFO_DOC.save(True,True)
CUR_DOC.SerialNumber=keys(1)+"-"+keys(2)+"-"+keys(3)+"-"+cstr(1)
Call CUR_DOC.save(True,True)
End If
End Sub
这样做比较简单也不会出现合同编号重复
因为你还有个分类要取 所以不好说在打开时就来决定合同的编号的了
偶回复你了,收到了吗?
我也回复你了 你收到了吗?
收到了谢谢
你发过留言了吗?我没有收到啊?