Function GetDOCNO As String ' DOCNO : DN-yyyynnnn ' yyyy : 年 ' nnnn : 1 から始まる連番 Const VIEW_DOCNO = "By DOCNO" Const PREFIX = "DN-" Dim ss As New NotesSession Dim db As NotesDatabase Dim vw As NotesView Dim dt As Variant Dim yyyy As String 'DOCNO に設定する年情報 Dim search As String 'ビューから取得するための検索キー(DN-yyyy) Dim doclast As NotesDocument 'ビューから取得した最新DOCNO文書 Dim lastno As Integer 'ビューから取得した最新のDOCNO連番 Dim nextno As Integer '今回設定するDOCNO連番 Dim nextDOCNO As String '今回設定するDOCNO(DN-yyyynnnn) Dim docdup As NotesDocument 'DOCNOが重複する文書 Set db = ss.CurrentDatabase Set vw = db.GetView(VIEW_DOCNO) GetDOCNO = "" Retry: ' 最新DOCNOを取得 ※ビューは番号降順でソートされている dt = Now yyyy = Cstr( Year(dt) ) search = PREFIX & yyyy Set doclast = vw.GetDocumentByKey(seach) If( doclast Is Nothing )Then lastno = 0 Else lastno = Right( doclast.GetItemValue("DOCNO")(0), 4) End If ' DOCNOを生成 nextno = lastno + 1 If( nextno > 9999 )Then ' 4桁を超える場合はエラー Exit Function End If nextDOCNO = PREFIX & yyyy & Right( "0000" & nextno, 4 ) ' 重複していた場合は再度実行 Call vw.Refresh Set nexrdup = vw.GetDocumentByKey(nextDOCNO, True) If( Not nextdup Is Nothing )Then Goto Retry End If GetDOCNO = nextDOCNO End Function