欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

初学者求教一个代理循环取值的有关问题

更新时间: 2014-01-05 03:00:45 责任编辑: Author_N1

 

菜鸟求教一个代理循环取值的问题
    菜鸟求教一个问题,我现在在做邮件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 


--参考方法--
你的循环,已经进入死循环了。
第一个文档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 
--参考方法--
引用:
那句 “ 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)后也不会有问题了。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:00:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/17232/
本文WWW.DOC100.NET DOC100.NET版权所有。