请问在FORM中增加一个新的计算域,老文档怎么处理才能让其有该FIELD的值?
就是我在FORM中增加一个新的计算域,该域是通过如下公式来获取值的:
Db:=@LeftBack(@Subset(@DbName;-1);"\\") + "\\XXX.nsf";
@If(@IsError(@DbLookup("";@Subset(@DbName;1):Db;"vw_XXX";Fd_XXX;32));"";
@Unique(@DbLookup("";@Subset(@DbName;1):Db;"vw_XXX";Fd_XXX;32)))
如果是新建的文档的话,新文档是有该域的值的,但是是老文档的话,在IE上打开老文档是看得到该域的值的,但是老文档实际上是不存在该值的,因为我通过试图把这个新增加的域作为WHERE条件的时候(即:SELECT Form = "Fm_XXX" & Fd_YYY="3",其中Fd_YYY就是新增加的FIELD) 搜索不出文档来.但是老文档通过IE显示的时候,Fd_YYY确实是为3.
如果我把老文档通过NOTES打开,然后认为保存一下,Fd_YYY的值就保存进去了,但是有很多老文档,我不可能一个个认为去保存,请问有什么批处理一起让Fd_YYY的值保存进老文档中吗?
问题点数:50、回复次数:4Top
1 楼CriedSky()回复于 2006-03-16 15:03:32 得分 0
不好意思,是"人为保存",不是"认为保存",打错了Top
2 楼cgs1999(深渊)回复于 2006-03-16 15:15:35 得分 50
编写一个处理旧文档代理,手工执行一下即可,以下为随手写的代码供参考
On Error Goto ErrHandle
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim view As NotesView
Dim vdoc As NotesDocument
Set db=ss.CurrentDatabase
Set doc=ss.DocumentContext
Set view=db.GetView("视图名称")
Set vdoc=view.GetFirstDocument
view.AutoUpdate=False
While Not(vdoc is nothing)
vdoc.Fd_YYY=Evaluate({Db:=@LeftBack(@Subset(@DbName;-1);"\\") + "\\XXX.nsf";
@If(@IsError(@DbLookup("";@Subset(@DbName;1):Db;"vw_XXX";Fd_XXX;32));"";
@Unique(@DbLookup("";@Subset(@DbName;1):Db;"vw_XXX";Fd_XXX;32)))}
call vdoc.save(true,true)
set vdoc=view.GetNextDocument(vdoc)
Wend
view.AutoUpdate=True
Exit Sub
ErrHandle:
Msgbox "Error:" & Err & " Erl:" & ErlTop
3 楼cgs1999(深渊)回复于 2006-03-16 15:18:15 得分 0
上面代码中,以下语句有误,更正为:
vdoc.Fd_YYY=Evaluate({Db:=@LeftBack(@Subset(@DbName;-1);"\\") + "\\XXX.nsf";
@If(@IsError(@DbLookup("";@Subset(@DbName;1):Db;"vw_XXX";Fd_XXX;32));"";
@Unique(@DbLookup("";@Subset(@DbName;1):Db;"vw_XXX";Fd_XXX;32)))},vdoc)Top
4 楼CriedSky()回复于 2006-03-16 15:37:41 得分 0
wasai,厉害的啊,谢谢Top




