示例I有2个视图:
在交易表单中,我希望能够从视图中搜索文档(使用姓氏和名字)并获取地址并插入到事务中的计算地址字段中。
我在考虑在postOpen事件中插入LotusScript。
一个例子会有很大帮助。
答案 0 :(得分:2)
您的编码经验是什么?如果您对这一切都不熟悉,那么您应该从公式语言开始: 首先:独立于解决方案的外观,视图的第一个排序列必须包含您的搜索键。
最佳做法是,为此使用单独的隐藏视图,以免干扰用户对视图设计的期望。
第二列包含一个计算字符串,其中包含您想要在另一个文档中包含的所有信息,由一个特殊字符分隔(〜是一个非常常见的字符) 该列中的公式可能如下所示:
City + "~" + Zip + "~" + StreetAddress + "~" + PhoneNumber
然后在表单中使用以下代码创建一个计算字段(例如LookupData):
_lkp := @DbLookup("":"NoCache";"";"NameOfHiddenView";"HereIsYourSearchKey";2)
@If( @IsError( _lkp ); ""; _lkp )
您将获得该字段中给定名称/密钥的所有数据,并可以使其他字段从中进行计算。例如。你有一个名为“城市”的字段。它的公式是:
@Word(LookupData; "~"; 1)
字段“电话”将具有以下公式:
@Word(LookupData; "~"; 4)
就是这样。
当然这也可以在LotusScript中完成......这看起来像(在Postopen事件中):
Dim ses as New NotesSession
Dim db as NotesDatabase
Dim view as NotesView
Dim strKey as String
Dim docLkp as NotesDocument
Dim doc as NotesDocument
Set doc = Source.document
Set db = ses.CurrentDatabase
Set view = db.getView("NameOfHiddenView")
StrKey = "HereIsYourSearchKey"
Set docLkp = view.GetDocumentByKey(strKey, True)
Call doc.ReplaceItemvalue( "City", docLkp.GetItemValue("City")
Call doc.ReplaceItemvalue( "Phone", docLkp.GetItemValue("PhoneNumber")
此代码中没有错误处理,不检查文档是否真的存在等等... 只是用它作为起点......