菜鸟求教一个代理循环取值的问题

nirvanamy 2013-01-28 05:16:13
菜鸟求教一个问题,我现在在做邮件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

...全文
249 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nirvanamy 2013-03-28
  • 打赏
  • 举报
回复
谢谢各位大神,问题已得到解决。
wthua 2013-03-16
  • 打赏
  • 举报
回复
引用 5 楼 fare2000 的回复:
那句 “ Call doc.save(False,False) ”使得doc不在当前视图了,所以需要在保存前取得下一个文档: While Not doc Is Nothing set docTemp=view.Getnextdocument(doc) If doc.remindNum(0)<> "XO" Then '===提醒邮件 Call……
正解。 对于该问题的解决方法除了你的方法外,我喜欢把符合条件的文档Search出来放到一个NotesDocumentCollection中再遍历,这样即使call doc.save(false,false)后也不会有问题了。
cape114 2013-03-05
  • 打赏
  • 举报
回复
学习,之前看到别人的编码为何这么写还不解,现在明白了。
fare2000 2013-01-31
  • 打赏
  • 举报
回复
那句 “ Call doc.save(False,False) ”使得doc不在当前视图了,所以需要在保存前取得下一个文档: While Not doc Is Nothing set docTemp=view.Getnextdocument(doc) If doc.remindNum(0)<> "XO" Then '===提醒邮件 Call sendMindMail(doc) '改变操作记录 doc.remindNum="XO" Call doc.save(False,False) End If set doc=docTemp Wend 另外在进入循环前使用view.AutoUpdate=false也可以解决这个问题,记得循环完成后设置view.autoUpdate=true
闫帅傅方面面 2013-01-30
  • 打赏
  • 举报
回复
你的循环,已经进入死循环了。 第一个文档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
zhengxiaoshu 2013-01-29
  • 打赏
  • 举报
回复
死循环了.. while set doc=view.getnextdocument(doc) weng
nirvanamy 2013-01-29
  • 打赏
  • 举报
回复
上面说的有点问题,是视图里有多条满足条件的表单时,运行一次代理,也只能发两封邮件,这是为啥啊???
nirvanamy 2013-01-29
  • 打赏
  • 举报
回复
我之后在End if 后加了set doc=view.getnextdocument(doc),但为何满足视图有多个时每次只能发2封邮件呢 求教大神!!!

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧