Lotus notes 为什么表单中的按钮工作不正常

Lotus notes 为什么表单中的按钮工作不正常,lotus-notes,lotusscript,Lotus Notes,Lotusscript,在此之前,我已经要求了,但我仍然没有得到修复。我尝试了所有可能的方法,但仍然无法解决问题 我会再解释一遍。基本上我有状态为“活动”的文档列表。所以我的按钮在“批处理”视图上。我的按钮过程从检查“计算机”视图中的所有文档是否有“锁定”状态开始。如果任何文档处于“锁定”状态,则退出sub,否则继续处理。流程继续首先设置批次号,然后在“计算机”中创建副本文档。复制文档的状态为“草稿”,当前文档将替换ItemValue为“锁定”。此过程将继续适用于所有文档 下面是我的lotusscript按钮 Set

在此之前,我已经要求了,但我仍然没有得到修复。我尝试了所有可能的方法,但仍然无法解决问题

我会再解释一遍。基本上我有状态为“活动”的文档列表。所以我的按钮在“批处理”视图上。我的按钮过程从检查“计算机”视图中的所有文档是否有“锁定”状态开始。如果任何文档处于“锁定”状态,则退出sub,否则继续处理。流程继续首先设置批次号,然后在“计算机”中创建副本文档。复制文档的状态为“草稿”,当前文档将替换ItemValue为“锁定”。此过程将继续适用于所有文档

下面是我的lotusscript按钮

Set db = session.CurrentDatabase
Set uiview = ws.CurrentView

Set uidoc = ws.CurrentDocument
Set dialogDoc = uidoc.Document
Set view = db.GetView("Computer")

Set doc = view.GetFirstDocument
While Not (doc Is Nothing)
    If doc.PStatus(0) = "Lock" Then
        Msgbox "Complete PC Inspection first!"
        Exit Sub
    Else
        answer% = Messagebox("Do you confirm?")
        If Not answer% = 6 Then
            Msgbox("Process Incomplete")
            Exit Sub
        Else
            dialogDoc.Form = "BatchInfo"
            Call uidoc.FieldSetText("SaveOptions", "1")
            Call uidoc.Save
            While Not (doc Is Nothing)
                If doc.PStatus(0) = "Active" Then

            '-----create new copy document-----'
                    Set newdoc = doc.CopyToDatabase(db)
                    newdoc.PBatchNo = dialogDoc.BBatchNo(0)
                    newdoc.PStatus = "Draft"
                    Call newdoc.Save(True, False)

                    doc.PStatus = "Lock"
                    Call doc.ComputeWithForm(False,False)
                    Call doc.save(True,False)
                End If
                Set doc = view.GetNextDocument(doc)
            Wend
            Messagebox("Process completed.")
        End If
    End If
    Exit Sub
Wend
所以现在“计算机”中的所有文档都将处于“锁定”状态,所以当我再次单击按钮时,它应该会直接退出sub

首次测试: 所以现在,我将把“计算机”列表中任何文档的状态从“锁定”更改为“活动”。除第一份文件外的任何文件。然后我将返回“批处理”视图并单击按钮,它将显示msgbox“首先完成PC检查!”。这意味着没有问题

第二次测试: 现在,我尝试第二次测试。此测试与第一个测试类似,但对于此测试,我将更改“计算机”视图中“第一个文档”的文档状态。然后我返回到“批处理”视图并单击按钮,它忽略消息并转到第14行,即“应答%=消息框(“您确认了吗?”)”。它不应该跳到此行,因为在“计算机”视图中,仍有处于“锁定”状态的文档


我已经尝试过任何可能的方法,但我不能成功。有人能帮我解决问题吗?我真的很感激。谢谢你

从你对你要做的事情的描述来看,我认为你需要先结束你的第一次,然后再开始你的第一次

Set db = session.CurrentDatabase
Set uiview = ws.CurrentView

Set uidoc = ws.CurrentDocument
Set dialogDoc = uidoc.Document
Set view = db.GetView("Computer")

'First run through the loop checks if ANY doc has PStatus = "Lock"
Set doc = view.GetFirstDocument
While Not (doc Is Nothing)
    If doc.PStatus(0) = "Lock" Then
        Msgbox "Complete PC Inspection first!"
        Exit Sub
    End If
    Set doc = view.getNextDocument(doc) 'add (doc)
Wend

'Not sure what this is all about, but I'll leave it in
answer% = Messagebox("Do you confirm?")
If Not answer% = 6 
    Msgbox("Process Incomplete")
    Exit Sub
Else
    'I've no idea what the next three lines are for, but I'll leave them alone
    dialogDoc.Form = "BatchInfo"
    Call uidoc.FieldSetText("SaveOptions", "1")
    Call uidoc.Save

    'Loop through the view again, creating copies and setting status to Lock
    Set doc = view.GetFirstDocument 'Add this line
    While Not (doc Is Nothing)
        If doc.PStatus(0) = "Active" Then

            '-----create new copy document-----'
            Set newdoc = doc.CopyToDatabase(db)
            newdoc.PBatchNo = dialogDoc.BBatchNo(0)
            newdoc.PStatus = "Draft"
            Call newdoc.Save(True, False)

            doc.PStatus = "Lock"
            Call doc.ComputeWithForm(False,False)
            Call doc.save(True,False)
        End If
        Set doc = view.GetNextDocument(doc)
     Wend
End If
Messagebox("Process completed.")

我希望这有帮助。我认为您的问题在于,您认为您正在浏览整个视图,以查找带有PStatus=“Lock”的文档,但由于您的Wend位于代码末尾,并且没有视图。getnextdocument(doc),因此根本没有发生这种情况。

您是否在测试之间刷新了视图?或者,您可以在设置视图=否,我不刷新视图之后添加调用view.refresh()。我已经试过插入调用view.refresh(),但还是一样。我不明白你的逻辑。您有2个While循环,但您使用的是一个视图…在某些查找视图中对锁定文档进行简单查找比在所有文档中循环要容易/更快。另外还有其他不一致的地方,正如你正确指出的。嗨@PhilMJones,你真的帮我解决了这个问题。经过很长时间,我成功地解决了这个问题。我将在您的代码中添加一些缺少的内容,它会像魅力一样工作。:)谢谢嗨@D.Bugger,我已经尝试过简单的查找,但仍然有问题。也许我用错误的方式实现了它。稍后我将再次尝试使用查找。谢谢你的建议。:)@Reinhaa感谢您的编辑-我没有在Designer中测试代码,所以bug是不可避免的:)当然@PhilMJones,谢谢您的回答。下次我会在温德的时候小心使用。