使用SQL语句作为比喻,可以说你有一个视图students
,列id
,name
和otherVar
。列id
应该排序(升序或降序)。因此,认为看起来是这样的
╔════╦════════════╦═════════════╗
║ id ║ name ║ otherVar ║
╠════╬════════════╬═════════════╣
║ 1 ║ Daniel ║ ---------- ║
║ 2 ║ Joseph ║ ---------- ║
║ 3 ║ Michelle ║ ---------- ║
╚════╩════════════╩═════════════╝
查找这个观点,你会写这样的事情在LotusScript中:
Dim session As New NotesSession 'Get current session
Dim currentDB As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim studentId As String
studentId = "<STUDENT_ID>" 'The student ID that needs to be searched
Set currentDB = session.CurrentDatabase 'Get current database
Set view = currentDB.GetView("students") 'Get the view
Set doc = view.GetDocumentByKey(studentId, True) 'Look up the view with student ID to get the student document
做一个简单的谷歌搜索NotesView
以获取更多信息。在公式语言中,您可以将其写为:
@DbLookup("Notes":"NoCache"; ""; "students"; "<STUDENT_ID>"; "<FIELD TO BE RETRIEVED>"; [FailSilent]);
但是如果您想要执行复杂的计算,则公式不太灵活。
我将您标记为答案,但我还在数据库类中找到了一个名为getDocumentByID的函数。我以前没有找到它,因为我错误地认为像这样的功能应该放在View类上。我猜这是有道理的,因为View只是一种组织数据库内容的方式。 –
@JRSmith:'getDocumentByID'函数通过Notes标识获取文档。 Lotus Notes中还有另一件名为Universal ID的概念,这个概念本身是一个单独的主题,所以我不会在这里离题。 'getDocumentByID'函数将在创建文档时基于Lotus Notes生成的Notes标识获取文档。你确定'studentId'与文档的Notes ID相同吗?如果是,那么它工作,如果没有,那么你将不得不通过'NotesView'去。 – Naveen
最好将它称为NoteID,而不是Notes标识 - 因为后者很容易与Notes标识文件混淆,这也是一个完全不同的概念。 NoteID不是一个稳定的值。你永远不能确定它匹配任何东西。甚至不能保证匹配相同数据库的两个不同副本中的同一文档。 –