如何在 Notes (Lotus/IBM/HCL) 应用程序主模板上设置模板版本
How to set the template version on a Notes (Lotus/IBM/HCL) application master template
我正在对现有的 Notes 应用程序进行一些小的更改。当我在前段时间(>10 年)开发原始应用程序时,我最初构建了一个主模板并为主模板分配了一个版本。环境中的标准发布实践是在开发环境中构建,从开发中制作模板,然后用于刷新测试环境中的数据库,最终也用于刷新生产环境数据库。
我不记得我是如何在主模板上设置版本文本的,我也没有找到任何关于如何做到这一点的信息。我记得这个过程更多的是 'hack' 而不是作为标准开发人员功能可用的东西。
有人熟悉 set/update 主模板上的模板版本的过程吗?
您需要使用 $TemplateBuildDate
中的日期更新 $TemplateBuild
共享字段(同样,您可以在 $TemplateBuild
中设置名称)。
我有一个具有以下代码的代理来设置模板版本。我运行代理从模板手动刷新之前根据模板设计了一个数据库。
这最初不是我的代码。我多年前在互联网上的某个地方找到它,并且只做了一些小改动。
Dim session As New NotesSession
Dim db As NotesDatabase
Dim nc As NotesNoteCollection
Dim doc As NotesDocument
Dim iCount%,sNoteID$,tmp$
Const ITEM_BUILD = "$TemplateBuild"
Const ITEM_BUILD_NAME = "$TemplateBuildName"
Const ITEM_BUILD_DATE = "$TemplateBuildDate"
Set db = session.CurrentDatabase
Set nc = db.CreateNoteCollection(False)
If Not nc Is Nothing Then
nc.SelectSharedFields = True
Call nc.BuildCollection
sNoteID = nc.GetFirstNoteId
For iCount = 1 To nc.Count
Set doc = db.GetDocumentByID(sNoteID)
If Not doc Is Nothing Then
If doc.HasItem(ITEM_BUILD) Then
tmp=Inputbox("Enter the template name...", _
"Template Name", doc.GetItemValue(ITEM_BUILD_NAME)(0))
If tmp="" Then Exit Sub
Call doc.ReplaceItemValue(ITEM_BUILD_NAME, tmp)
tmp=Inputbox("Enter the version number...", _
"Template Version", doc.GetItemValue(ITEM_BUILD)(0))
If tmp="" Then Exit Sub
Call doc.ReplaceItemValue(ITEM_BUILD, tmp)
tmp=Inputbox("Enter the version date...", _
"Template Date", doc.GetItemValue(ITEM_BUILD_DATE)(0))
If tmp="" Then Exit Sub
If Isdate(tmp) Then Call doc.ReplaceItemValue(ITEM_BUILD_DATE, Cdat(tmp))
Call doc.Save(True, False)
Exit For
End If
End If
sNoteID = nc.GetNextNoteID(sNoteID)
Next
End If
我正在对现有的 Notes 应用程序进行一些小的更改。当我在前段时间(>10 年)开发原始应用程序时,我最初构建了一个主模板并为主模板分配了一个版本。环境中的标准发布实践是在开发环境中构建,从开发中制作模板,然后用于刷新测试环境中的数据库,最终也用于刷新生产环境数据库。
我不记得我是如何在主模板上设置版本文本的,我也没有找到任何关于如何做到这一点的信息。我记得这个过程更多的是 'hack' 而不是作为标准开发人员功能可用的东西。
有人熟悉 set/update 主模板上的模板版本的过程吗?
您需要使用 $TemplateBuildDate
中的日期更新 $TemplateBuild
共享字段(同样,您可以在 $TemplateBuild
中设置名称)。
我有一个具有以下代码的代理来设置模板版本。我运行代理从模板手动刷新之前根据模板设计了一个数据库。
这最初不是我的代码。我多年前在互联网上的某个地方找到它,并且只做了一些小改动。
Dim session As New NotesSession
Dim db As NotesDatabase
Dim nc As NotesNoteCollection
Dim doc As NotesDocument
Dim iCount%,sNoteID$,tmp$
Const ITEM_BUILD = "$TemplateBuild"
Const ITEM_BUILD_NAME = "$TemplateBuildName"
Const ITEM_BUILD_DATE = "$TemplateBuildDate"
Set db = session.CurrentDatabase
Set nc = db.CreateNoteCollection(False)
If Not nc Is Nothing Then
nc.SelectSharedFields = True
Call nc.BuildCollection
sNoteID = nc.GetFirstNoteId
For iCount = 1 To nc.Count
Set doc = db.GetDocumentByID(sNoteID)
If Not doc Is Nothing Then
If doc.HasItem(ITEM_BUILD) Then
tmp=Inputbox("Enter the template name...", _
"Template Name", doc.GetItemValue(ITEM_BUILD_NAME)(0))
If tmp="" Then Exit Sub
Call doc.ReplaceItemValue(ITEM_BUILD_NAME, tmp)
tmp=Inputbox("Enter the version number...", _
"Template Version", doc.GetItemValue(ITEM_BUILD)(0))
If tmp="" Then Exit Sub
Call doc.ReplaceItemValue(ITEM_BUILD, tmp)
tmp=Inputbox("Enter the version date...", _
"Template Date", doc.GetItemValue(ITEM_BUILD_DATE)(0))
If tmp="" Then Exit Sub
If Isdate(tmp) Then Call doc.ReplaceItemValue(ITEM_BUILD_DATE, Cdat(tmp))
Call doc.Save(True, False)
Exit For
End If
End If
sNoteID = nc.GetNextNoteID(sNoteID)
Next
End If