请教db.search中的参数formula$的疑问

punky 2006-02-23 11:52:27
大家好,我用db.search来查找用特定表单创建的文档,但是发现如果用表单的名称作搜索条件的话,搜出来的collection一个文档也没有,同样的情况,如果用表单的别名来搜索,那么会出现正确结果,请问这是为什么呢? 难道search方法搜索的条件不管是form或者是field都是用别名来搜索的么? 代码如下:

formNameIn = Inputbox("请输入表单的名称,请不要填写表单的别名。")
searchFormula$={form="} + formNameIn + {"}
Set collection = db.Search(searchFormula$,Nothing,0)

搜索没有结果 collection是空的

但是改成

formNameIn = Inputbox("请输入表单的名称,请不要填写表单的别名。")
temp=form.Aliases
searchFormula$={form="} + temp(0) + {"}
Set collection = db.Search(searchFormula$,Nothing,0)

搜索就没有问题,请教原委,谢谢!
...全文
217 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuxuwaley 2006-02-24
  • 打赏
  • 举报
回复
其实search中的查询的语法和视图的选择公式是基本一样的,只要把那个select 去掉就可以了,你先在视图中刷选试试看,然后应用到search中
punky 2006-02-24
  • 打赏
  • 举报
回复
经过试验 理出了一些头绪 我把试验的结果总结一下,希望大家指正交流:

1.在创建文档的时候,如果创建文档的这个表单没有别名,那么文档中的form域是这个表单的名称;如果此表单拥有别名,那么文档中的form域则是别名。

2 用form=""来搜索的时候,要考虑两种情况,即是1中的两种情况,所以既要考虑表单名,又要考虑别名了。

3 如果表单名或者别名修改过,那么以前创建的文档中的form域不会因为表单名或者别名的改变而改变,受影响的只是由修改过的表单创建的新文档,其form域会变为新的表单名或者别名,所以在搜索的时候,会有很多差异。
punky 2006-02-24
  • 打赏
  • 举报
回复
呵呵 其实现在的问题只有一个了 谢谢上面所有的回复。
问题是 如果沧海兄说的"一般情况下创建出来的文档是没有记录表单名的"成立的话,那我要搜索一个由没有别名的form创建的文档,而且搜索的条件必须用form=""来搜索的话 那如何是好呢?
心雪峰 2006-02-24
  • 打赏
  • 举报
回复
支持下。。
punky 2006-02-24
  • 打赏
  • 举报
回复
谢谢 繁星似火 我仔细看了看每个文档,里面的form域确实是表单原来的别名 那么在创建一个文档的时候 文档中的form域到底是表单名呢还是别名,是不是我不指定别名的话,那域值为表单名,如果表单名和别名都有的话,那就会使用别名。如果这样,那搜索文档是不是有些麻烦呢,因为我不知道搜索的form是否有别名,如果用表单名搜索,那这个表单如果有别名的话那搜索就不会正常,但如果用别名搜,那如果这个表单没有别名的话,那搜索也会失败,应该会有这个情况把. 再去试验一下,谢谢您的解答!
Lotusxyz 2006-02-24
  • 打赏
  • 举报
回复
表单名|别名
一般情况下创建出来的文档是没有记录表单名的,所以不行,程序中除非写代码记录,Form中默认记录的都是别名
punky 2006-02-24
  • 打赏
  • 举报
回复
我搜索的表单名确实有很多时候是中文名称,以前以为是对中文搜索的支持不好 但是又试验了几次,发现不是,我们的服务器是R6,应该没有问题,呵呵。
punky 2006-02-24
  • 打赏
  • 举报
回复
文档中form的实际值应该是创建此文档的form的名称吧 我记得每个文档中form的域值应该是$form 是一个隐藏域 我也没有设定。另外,还发现了一个奇怪的现象,我把form的别名改变了,用新的form的别名搜索 竟然collection也是空,但是用原来的别名搜索,竟然搜出了结果,我怀疑Notes是不是为了一致性,把所有曾经用过的别名都记住了,但是如果这样解释,那为什么用新的别名来搜索,却搜索不出结果呢,一头雾水阿...
灰大师 2006-02-24
  • 打赏
  • 举报
回复
表单名可以相同,但别名不能相同
xaser 2006-02-24
  • 打赏
  • 举报
回复
你文档中域form的实际值是什么 ?就是以这个为标准搜索的。
在设计时有没有设定域form的默认值,如果有,就以这个默认值为搜索条件。
punky 2006-02-24
  • 打赏
  • 举报
回复
谢谢楼上的 我试验了一下 好像还是不行 我甚至把
searchFormula$={form="} + formNameIn + {"} 改成了

searchFormula$={form="} + "表单名" + {"}
都不行 不知道什么原因,谢谢你的解答。
xaser 2006-02-24
  • 打赏
  • 举报
回复
formNameIn = Inputbox("请输入表单的名称,请不要填写表单的别名。")
searchFormula$={form="} + formNameIn + {"}
Set collection = db.Search(searchFormula$,Nothing,0)

帮助中讲得很清楚:
The InputBox function returns a Variant containing a string. InputBox$ returns a String.
xaser 2006-02-24
  • 打赏
  • 举报
回复
为了避免这种情况,一般我们设计表单时都会加一个form域,并指定其默认值。

实际上,如果没有这个域,
1、用公式保存文档时,会自动生成form域,如无别名,则为表单名,如有别名,则为别名。
2、用lotusscript或java代码保存文档时,则一定要给document对象的form域赋值,不然无法保存下来。
kingchang2000 2006-02-24
  • 打赏
  • 举报
回复
表单如果是 表单名|别名的,那文档保存的就一定使用别名的,

建议使用别名搜索,如果非要用form名称,那么就自己写函数做一下转换成别名喽(至少form有没有别名你自己最清楚了,这个函数也不难写吧)。

还有,你的form名称会不会是用中文的?如果是中文的,用form="中文名称",在某些服务器上好像不成功,我用的是@match()好像就可以了。

536

社区成员

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

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