我有一个重复,其中值循环遍历当前数据库中的文档,这些文档包含数据库和视图名称。然后重复打开数据库并查看并从中检索数据:
var dbOther:NotesDatabase = session.getDatabase(null, doc.getItemValueString("Database"));
if(dbOther != null){
var lookupView:NotesView = dbOther.getView(doc.getItemValueString("ViewName"));
var viewNav:NotesViewNavigator = lookupView.createViewNavFromCategory(key);
}
这适用于所有浏览器但如果我在Notes客户端中查看xpage,我会收到以下错误:调用方法时出现异常NotesDatabase.getView(string)null
我测试过通过将Server和FilePath属性写入日志来设置dbOther变量。我检查了它可以通过使用getViews和getAliases生成循环来查看视图,所有视图别名都被写入日志而没有问题。
我已手动输入了视图名称,以防未正确地从文档中选择值但收到相同的错误。
有没有办法可以连接到XPiNC中另一个数据库中的视图?我找到了一个XSnippet,它允许你动态地将视图数据源添加到你的页面,我想这可能会解决我的问题但是想在我重新编写所有内容之前找出是否有替代解决方案!
答案 0 :(得分:3)
尝试使用其他一些方法来获取数据库的句柄:
这个使用""
而不是null
参数来表示当前服务器:
var dbOther:NotesDatabase = session.getDatabase("", doc.getItemValueString("Database"))
这个使用database.getServer()
而不是null参数:
var dbOther:NotesDatabase = session.getDatabase(database.getServer(), doc.getItemValueString("Database"))
这个使用sessionAsSigner
来访问数据库(而不是使用当前用户的凭据):
var dbOther:NotesDatabase = sessionAsSigner.getDatabase(database.getServer(), doc.getItemValueString("Database"))
您使用的是Lotus Notes 8.5.3客户端吗?