为什么在getnextdocument的时候总是说在索引中未找到项目?

桃花源土著 2003-10-15 06:13:22
Sub Initialize
Dim sion As New notessession
Dim cur_db As notesdatabase
Dim db As notesdatabase
Dim view As notesview
Dim doc As notesdocument
Set cur_db=sion.currentdatabase
Set db= New notesdatabase(cur_db.server,"kmapp/archive15.nsf")
Set view=db.getview("AllReport")

Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
doc.Class_2="报告"
doc.Category2="其他"
doc.Category2_1="其他"
Call doc.save(True,True)
Set doc=view.GetNextSibling(doc)
‘这里换成view.getnextdocument(doc)也不行
Wend
End Sub
...全文
103 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ibm123 2003-10-17
  • 打赏
  • 举报
回复
错了……
SELECT form="Archive" & Category2!="人事资源类" & Category2!="储运档案类" ……
ibm123 2003-10-17
  • 打赏
  • 举报
回复
你可以在视图选择公式中过滤掉上述类型的文档。

SELECT form="Archive" & Category2="人事资源类" & Category2="储运档案类" ……
桃花源土著 2003-10-17
  • 打赏
  • 举报
回复
仔细看了下回复,觉得是IBM123(Boy)说的那种情况,但是如何让这个程序效率高一些呢?
Case "人事资源类":strFrtCate=""
Case "储运档案类":strFrtCate=""
Case "产品类":strFrtCate=""
Case "财务档案类":strFrtCate=""
Case "经营管理类":strFrtCate=""
Case "行政管理类":strFrtCate=""
Case "党群工作类":strFrtCate=""
这个语句是让Category2为这些分类时就不执行修改,总觉得使用Case效率不高,有没有其他方法?
桃花源土著 2003-10-17
  • 打赏
  • 举报
回复
我原本代理是这样的
Dim sion As New notessession
Dim cur_db As notesdatabase
Dim db As notesdatabase
Dim view As notesview
Dim doc As notesdocument
Set cur_db=sion.currentdatabase
Set db= New notesdatabase(cur_db.server,"kmapp/archiveMoveS.nsf")
Set view=db.getview("All")
Dim strSndCate As String
Dim strFrtCate As String
Dim i As Integer
i=0
Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
'%REM
strSndCate=Trim(doc.Category2(0))
'Msgbox strSndCate
Select Case strSndCate

Case "党务综合": strFrtCate="党群工作类"
'------------------------
Case "管理制度": strFrtCate="行政管理类"
Case "审计报告": strFrtCate="行政管理类"
Case "诉讼档案": strFrtCate="行政管理类"
Case "通知": strFrtCate="行政管理类"
Case "总经办资料": strFrtCate="行政管理类"
'-------------------------
Case "企业资料": strFrtCate="经营管理类"
Case "申请表": strFrtCate="经营管理类"
Case "市场调研": strFrtCate="经营管理类"
Case "销售协议": strFrtCate="经营管理类"
Case "销售政策": strFrtCate="经营管理类"
Case "新开户报告": strFrtCate="经营管理类"
Case "宣传资料": strFrtCate="经营管理类"
Case "医院档案": strFrtCate="经营管理类"
'------------------------------
Case "财务其它资料": strFrtCate="财务档案类"
Case "财务审计报告": strFrtCate="财务档案类"
Case "财务帐本": strFrtCate="财务档案类"
Case "催款电报": strFrtCate="财务档案类"
Case "合同": strFrtCate="财务档案类"
Case "核算凭证": strFrtCate="财务档案类"
Case "会计报表": strFrtCate="财务档案类"
Case "片区凭证": strFrtCate="财务档案类"
Case "欠款报告": strFrtCate="财务档案类"
Case "银行存款日记帐": strFrtCate="财务档案类"
Case "银行对帐单": strFrtCate="财务档案类"
Case "余额调节表": strFrtCate="财务档案类"
Case "月结单": strFrtCate="财务档案类"
Case "增值税发票": strFrtCate="财务档案类"
Case "周结单": strFrtCate="财务档案类"
Case "收据": strFrtCate="财务档案类"
Case "现金日记帐": strFrtCate="财务档案类"
Case "销财凭证": strFrtCate="财务档案类"
'--------------------------------

Case "OTC产品论文": strFrtCate="产品类"
Case "OTC产品论文/test": strFrtCate="产品类"
Case "产品宣传": strFrtCate="产品类"
Case "药品资料": strFrtCate="产品类"
'-------------------------------------

Case "仓储凭证": strFrtCate="储运档案类"
Case "储运帐本": strFrtCate="储运档案类"
Case "储运资料": strFrtCate="储运档案类"
Case "客户资料": strFrtCate="储运档案类"
Case "联运凭证": strFrtCate="储运档案类"
'----------------------------
Case "人事档案": strFrtCate="人事资源类"
'----------------------------
Case "报告": strFrtCate="其他"
'-------------------------------
Case "人事资源类":strFrtCate=""
Case "储运档案类":strFrtCate=""
Case "产品类":strFrtCate=""
Case "财务档案类":strFrtCate=""
Case "经营管理类":strFrtCate=""
Case "行政管理类":strFrtCate=""
Case "党群工作类":strFrtCate=""
End Select
If strFrtCate<>"" Then
doc.Class_2=strSndCate
doc.Category2=strFrtCate
Print strSndCate
Print strFrtCate
Call doc.save(True,True)
i=i+1
End If
Set doc=view.GetNextDocument(doc)
Wend
Msgbox "共迁移了"& i &"份文档"
我试了下:
在视图的选择公式里面写上:SELECT form="Archive" & Category2="人事资源类",把视图的选择公式加上Category2,具体指明分类时,使用Set doc=view.getnextdocument(doc)则会报说在索引中未找到项目,我把这句改为set doc=view.getfirstdocument则可以继续运行,但是在视图的选择公式中写为SELECT form="Archive"时,则不能使用getfirstdocument,只能用getnextdocument,请问是什么原因?
还用总觉得代码效率不高,在客户端执行也容易死掉,哪位能优化一下?
Amanged 2003-10-17
  • 打赏
  • 举报
回复
我觉得你最好换成其他一种方式写这个代码(生成新的文档)。
gjd111686 2003-10-17
  • 打赏
  • 举报
回复
代码也太长了,任何时候做重复劳动就得想一想了:计算机是解决重复劳动的,可能是您的方法不对了.
桃花源土著 2003-10-17
  • 打赏
  • 举报
回复
非常感谢
ibm123 2003-10-16
  • 打赏
  • 举报
回复
从程序上看没有任何问题,主要是你的视图公式包含了你修改文档的域名检测,使第一个文件保存后在该视图中已经过滤掉,所以出现此情况。将你的视图公式贴出来看看。
rombus 2003-10-16
  • 打赏
  • 举报
回复
视图排序
gjd111686 2003-10-16
  • 打赏
  • 举报
回复
数据库是否建立了索引[在数据库属性中选择]
icecoldy 2003-10-16
  • 打赏
  • 举报
回复
我同意IBM123(Boy)的说法,你视图的公式里面,是不是包括了doc.Class_2、doc.Category2、doc.Category2_1这些域呢?而且用这些域过滤文档了。如果是的话,那就正常了,因为当你保存文档后,就找不到下一个文档了。
benben962 2003-10-16
  • 打赏
  • 举报
回复
最直接的解决办法是将视图的第一列排序,指定升序还是降序

535

社区成员

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

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