使用 lotusscript 按钮保存副本文档并更改副本文档和原始文档的状态字段
Save copy document and change status field for copy document and original document using lotusscript button
我有一份文件,还有一份文件副本。我使用 TagNo 作为两个文档的唯一 ID。
我还有状态字段来区分每个文档是活动的、非活动的、草稿和锁定的。我会在下面说明我的文件情况。
下面是我的文档,有两个字段;标签号 = PTagNo;状态 = P状态。情况如下。
对于原始文档,状态设置为有效。创建副本时,原始文档将更改为锁定,副本文档状态更改为草稿。 (为此我已经实现了。)
完成编辑后,我将更改草稿文档和原始文档的状态。当我将草稿文档另存为 "Complete" 时会发生这种情况。我的草稿文件将是原始文件,而我的原始文件将是存档文件。所以对于我的草稿文档,状态将变为有效,而原始文档,状态将变为无效。(尚未实现)。
我粘贴我的保存代码如下。
保存并完成
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim activeDoc As NotesDocument
Dim view As NotesView
Dim keys(1) As String
'// Set database and doc
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
keys(0) = doc.PTagNo(0)
keys(1) = "Lock"
Set view = db.GetView("Computer")
vpswd = Inputbox$("Pls input code to save :")
If vpswd = "o" Then
Set activeDoc= view.GetDocumentByKey(keys, True)
If Not activeDoc Is Nothing Then
If activeDoc.PStatus(0) = "Lock" Then
activeDoc.DocumetId = doc.UniversalID
Call activeDoc.ReplaceItemValue("PStatus", "Inactive")
Call activeDoc.Save(True, False)
End If
End If
Call uidoc.FieldSetText("PStatus" , "Active")
Call uidoc.FieldSetText("SaveOptions" , "1")
Call uidoc.Save
Call uidoc.Close
Else
Msgbox "Wrong Code"
Exit Sub
End If
End Sub
所以我对字段 ptagno 使用 GetDocumentByKey,但它显示错误 "Object variable not set"。我使用了错误的功能吗?任何帮助将不胜感激。谢谢!
尚未设置变量 ptagno - 因此 "Object variable not set" 错误。您需要从字段 PTagNo 中读取值并将其分配给 ptagno 变量 - 或者直接使用它。比如像这样:
Set activeDoc= view.GetDocumentByKey(uidoc.FieldGetText("PTagNo"))
我有一份文件,还有一份文件副本。我使用 TagNo 作为两个文档的唯一 ID。 我还有状态字段来区分每个文档是活动的、非活动的、草稿和锁定的。我会在下面说明我的文件情况。
下面是我的文档,有两个字段;标签号 = PTagNo;状态 = P状态。情况如下。
对于原始文档,状态设置为有效。创建副本时,原始文档将更改为锁定,副本文档状态更改为草稿。 (为此我已经实现了。)
完成编辑后,我将更改草稿文档和原始文档的状态。当我将草稿文档另存为 "Complete" 时会发生这种情况。我的草稿文件将是原始文件,而我的原始文件将是存档文件。所以对于我的草稿文档,状态将变为有效,而原始文档,状态将变为无效。(尚未实现)。
我粘贴我的保存代码如下。
保存并完成
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim activeDoc As NotesDocument
Dim view As NotesView
Dim keys(1) As String
'// Set database and doc
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
keys(0) = doc.PTagNo(0)
keys(1) = "Lock"
Set view = db.GetView("Computer")
vpswd = Inputbox$("Pls input code to save :")
If vpswd = "o" Then
Set activeDoc= view.GetDocumentByKey(keys, True)
If Not activeDoc Is Nothing Then
If activeDoc.PStatus(0) = "Lock" Then
activeDoc.DocumetId = doc.UniversalID
Call activeDoc.ReplaceItemValue("PStatus", "Inactive")
Call activeDoc.Save(True, False)
End If
End If
Call uidoc.FieldSetText("PStatus" , "Active")
Call uidoc.FieldSetText("SaveOptions" , "1")
Call uidoc.Save
Call uidoc.Close
Else
Msgbox "Wrong Code"
Exit Sub
End If
End Sub
所以我对字段 ptagno 使用 GetDocumentByKey,但它显示错误 "Object variable not set"。我使用了错误的功能吗?任何帮助将不胜感激。谢谢!
尚未设置变量 ptagno - 因此 "Object variable not set" 错误。您需要从字段 PTagNo 中读取值并将其分配给 ptagno 变量 - 或者直接使用它。比如像这样:
Set activeDoc= view.GetDocumentByKey(uidoc.FieldGetText("PTagNo"))