lotus代理循环取值的问题
我现在在做邮件60天后提醒代理上,假设每天运行一遍这个代理,发过邮件得人就不用发了,我给这个所取值得表单中加了一个域“remindNum”,默认为空值,一旦这个文档被发过邮件的话,该值就变为“XO”,也就不会再次接收邮件了,但现在的问题是为何一次都只能发一封邮件,如果手动运行Domino Designer 会卡死,但依旧只发一封邮件。之前用Do Until doc Is Nothing代替While Not doc Is Nothing用Loop代替Wend,也是只发一封邮件并且Designer卡死。
求各位大神指导指导小弟吧!!!
Sub Initialize
On Error Goto ErrHandle
Dim session As New NotesSession
Dim i As Integer
Set db = session.CurrentDatabase
Set view=db.Getview("ReminderMailView")
Call view.Refresh
Set doc=view.Getfirstdocument()
Dim msgsubject As String
While Not doc Is Nothing
If doc.remindNum(0)<> "XO" Then
'===提醒邮件
Call sendMindMail(doc)
'改变操作记录
doc.remindNum="XO"
Call doc.save(False,False)
End If
Wend
Exit Sub
ErrHandle:
Msgbox " 自动更新物料信息代理行号:" & Erl() & " 错误号:" & Err() & " 毕业论文 错误内容:" & Error()
Set maildoc=db.createdocument
maildoc.form = "memo"
Set rtitem1 = New notesrichtextitem(maildoc,"Body")
maildoc.subject = "提醒: 自动邮件提醒息代理运行出错! " & Error & Erl()
maildoc.sendto = "XXXXXX" //XXXXXX代表收件人地址
maildoc.send(False)
End Sub
死循环了..
while
set doc=view.getnextdocument(doc)
weng
你的循环,已经进入死循环了。
第一个文档doc发送出去之后,第一个循环结束,没有将doc指向下一个文档
While Not doc Is Nothing
If doc.remindNum(0)<> "XO" Then
'===提醒邮件
Call sendMindMail(doc)
'改变操作记录
doc.remindNum="XO"
Call doc.save(False,False)
End If
set doc = view.Getnextdocument(doc)
Wend
对于该问题的解决方法除了你的方法外,我喜欢把符合条件的文档Search出来放到一个NotesDocumentCollection中再遍历,这样即使call doc.save(false,false)后也不会有问题了。