为什么使用视图模板,用$$ViewBody引入的视图中文档删不掉呢

xiaoqinger 2003-08-30 09:58:16
为什么使用视图模板($$ViewTemplate for viewname)用域$$ViewBody引入的视图中文档删不掉呢?
我如果直接是在表单中嵌入的视图就可以删除,而相同的代码用于$$ViewTemplate for ……的表单中(视图用$$ViewBody域引入)就提示
Whoops!
Error 4091:Invalid universal id
Whoops!
Error 91:Object variable not set []
呢?
我使用的代理是在webquerysave中,代理如下:
Sub Initialize
'删除文档的代理
On Error Goto ErrorHandler

Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item As NotesItem
Dim docToDelete As NotesDocument


Set db = session.CurrentDatabase
Set doc = session.DocumentContext
Set item = doc.GetFirstItem("Delete")
Forall unid In item.Values
Set docToDelete = db.GetDocumentByUNID(unid)
Print unid
Call docToDelete.Remove(True)
End Forall
'now redirect the browser to the previous url
Print"[" & doc.HTTP_REFERER(0) & "]"
Exit Sub
ErrorHandler:
Print "<h1>Whoops!<h1>"
Print "Error" & Str(Err) & ":" &Error$
Resume Next
End Sub
...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hq_1980 2003-09-05
  • 打赏
  • 举报
回复
1、代理在webquerysave中执行?用于显示视图的表单为什么要保存呢?直接用公式调用代理不就可以吗!

2、关键是你说的“预览那个视图则是在只读模式下打开”。这时js没有办法给Notes域赋值,后台代理也就得不到Delete域的值了。

解决的办法:你可以用嵌入视图,或$$ViewBody(其实都一样),嵌入视图的嵌入选项用公式,$$ViewBody设置默认值:@right(Query_String_Decoded;"&")
访问视图时,就可以用:http://server/db/$$ViewTemplate for viewname?openform&视图名
xinfeeling 2003-09-05
  • 打赏
  • 举报
回复
up
xiaoqinger 2003-09-03
  • 打赏
  • 举报
回复
谢谢sacrefies()提示说 Set docToDelete = db.GetDocumentByUNID(unid)错,找不到unid.
所以接下来的Call docToDelete.Remove(True)也错了,因为没有unid 所以就没有doctodelete的值,就提示说没有设置变量了。
是不是我的方法不可行啊。
有没有用到$$ViewTemplateDefault中加入删除的。

sacrefies 2003-09-02
  • 打赏
  • 举报
回复
你该把你的出错信息捕捉这样写:

Print "Error" & Str(Err) & ":" & cstr(erl()) & ", " & Error$

就知道是哪一句出错了~
rosemerry 2003-09-01
  • 打赏
  • 举报
回复
你是否需要删除视图中所有的文档啊?怎么变得这么麻烦啊.我不太喜欢用程序来取视图,直接嵌入一个视图不就更方便些吗?而且想删除哪些文档就哪一些?!!
看不懂啊,这和编辑和只读模式又有什么关系呢?这种表单一般都是不会保存的,当然是编辑模式打开的啊。
rosemerry 2003-09-01
  • 打赏
  • 举报
回复
你是否需要删除视图中所有的文档啊?怎么变得这么麻烦啊.我不太喜欢用程序来取视图,直接嵌入一个视图不就更方便些吗?而且想删除哪些文档就哪一些?!!
看不懂啊,这和编辑和只读模式又有什么关系呢?这种表单一般都是不会保存的,当然是编辑模式打开的啊。
xiaoqinger 2003-09-01
  • 打赏
  • 举报
回复
to rosemerry()
如果我做所有的视图都想用一个模板来显示,用$$ViewTemplate Default 的话就不能直接嵌入视图了啊,所以想看某个视图的内容就只能去预览那个视图,这时候要是想删除这个视图的文档,它就说出错了.
xiaoqinger 2003-08-30
  • 打赏
  • 举报
回复
谢谢ntko()
那有没有什么方法解决呢?
如果在模板中直接嵌入视图,然后预览模板表单也好使;但是如果同样模板中直接嵌入视图,而是预览那个视图就不好使了,错误同上。
ntko 2003-08-30
  • 打赏
  • 举报
回复
原因:后一种情况($$ViewBody域)item.values没有值就会出现你说的错误。
因此,Set docToDelete = db.GetDocumentByUNID(unid)
Print unid
Call docToDelete.Remove(True)
出现两次错误
你检查两种情况下产生的HTML代码有何不同?
你的代码没问题,但是最好在上述语句中增加错误判断。
xiaoqinger 2003-08-30
  • 打赏
  • 举报
回复
我刚刚试过了,这两种打开方式的不同是,如果直接预览表单那是在编辑模式下打开的,如果预览那个视图则是在只读模式下打开,但是我还是不知道应该怎样解决它,帮帮我吧!

535

社区成员

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

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