zpy_01 2005年03月22日
更高效的通用查询方法
因为文档少,所以采用了以下方法:
Function GetDocUnidByOneStrField(ViewName As String,FieldName As String,FieldVal As String) As String
Dim session As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim TmpStr As Variant

Set session= New NotesSession
Set db = session.CurrentDatabase '(session、db是全局的,此处为示例代码)
Set view = db.GetView( ViewName )
GetDocUnidByOneField=""
Set doc = view.GetFirstDocument()

While Not(doc Is Nothing)
TmpStr = doc.GetItemValue("""" & FieldName & """")(0)
If FieldVal =TmpStr Then
GetDocUnidByOneField=doc.UniversalID
Goto last
End If

Set doc = view.GetNextDocument(doc)
Wend
last:
Set view = Nothing
Set doc = Nothing
End Function

说明:符合域值条件的文档只取第一条

问题:
1:TmpStr返回为空,但对应文档中的数据是确实存在的。
2:效率低下,有没有更好的办法?不采用GetDocumentByKey原因是因为域太多,不可能每个都建索引。

谢谢!
...全文
59 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
消息协作
创建于2007-08-27

282

社区成员

3.9w+

社区内容

企业开发 Exchange Server
社区公告
暂无公告