Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpages 无法从XPiNC引用另一个数据库中的视图_Xpages_Xpinc - Fatal编程技术网

Xpages 无法从XPiNC引用另一个数据库中的视图

Xpages 无法从XPiNC引用另一个数据库中的视图,xpages,xpinc,Xpages,Xpinc,我重复了一次,其中值在当前数据库中的文档中循环,这些文档包含数据库和视图名称。然后,重复操作将打开数据库和视图,并从其中检索数据: var dbOther:NotesDatabase = session.getDatabase(null, doc.getItemValueString("Database")); if(dbOther != null){ var lookupView:NotesView = dbOther.getView(doc.getItemValueString("V

我重复了一次,其中值在当前数据库中的文档中循环,这些文档包含数据库和视图名称。然后,重复操作将打开数据库和视图,并从其中检索数据:

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时发生异常

我已经测试过dbOther变量是通过将服务器和文件路径属性写入日志来设置的。我检查了它是否可以通过使用GetView和GetAlias生成一个循环来查看视图,再次检查所有视图别名是否都写入了日志中,没有任何问题

我已手动输入视图名称,以防未从文档中正确选择值,但收到相同的错误


有没有办法连接到XPiNC中另一个数据库中的视图?我发现了一个XSnippet,它允许您将视图数据源动态添加到页面中,我认为这可能解决了我的问题,但在我重新编写所有内容之前,我想知道是否有其他解决方案

尝试以下几种获取数据库句柄的其他方法:

此参数使用
而不是
null
参数来指示当前服务器:

var dbOther:NotesDatabase = session.getDatabase("", doc.getItemValueString("Database"))
此参数使用
数据库.getServer()
而不是null参数:

var dbOther:NotesDatabase = session.getDatabase(database.getServer(), doc.getItemValueString("Database"))
此选项使用
sessionAsSigner
访问数据库(而不是使用当前用户的凭据):



您使用的是Lotus Notes 8.5.3客户端吗?

尝试以下几种获取数据库句柄的其他方法:

此参数使用
而不是
null
参数来指示当前服务器:

var dbOther:NotesDatabase = session.getDatabase("", doc.getItemValueString("Database"))
此参数使用
数据库.getServer()
而不是null参数:

var dbOther:NotesDatabase = session.getDatabase(database.getServer(), doc.getItemValueString("Database"))
此选项使用
sessionAsSigner
访问数据库(而不是使用当前用户的凭据):



您使用的是Lotus Notes 8.5.3客户端吗?

很久以前,我在这里读到有关此问题的文章:。基本上,作者使用
@Name(“[CN]”,@Subset(@DbName(),1))+“!!DbName.nsf”
的语法来调用数据库。也许这对你有用。那篇文章是我写的。这是个问题。我听说它在以后的版本中已经修复了,但我还没有真正验证过。我不再对XPiNC做太多的事情了。我确实在发布这篇文章之前找到了这个解决方案,但我不确定如何将它设置为NotesDatabase对象。它确实检索了数据库,但我当时不确定如何使用getView?很久以前,我在这里读到了有关此问题的文章:。基本上,作者使用
@Name(“[CN]”,@Subset(@DbName(),1))+“!!DbName.nsf”
的语法来调用数据库。也许这对你有用。那篇文章是我写的。这是个问题。我听说它在以后的版本中已经修复了,但我还没有真正验证过。我不再对XPiNC做太多的事情了。我确实在发布这篇文章之前找到了这个解决方案,但我不确定如何将它设置为NotesDatabase对象。它确实检索了数据库,但我当时不确定如何使用getView?您好,我尝试了您建议的每个解决方案,解决问题的方法是使用database.getServer()。感谢您的帮助reason database.getServer()是基于以下问题的解决方案:“当前服务器是什么?”null'和'''''用于当前服务器。在浏览器中,当前服务器是运行应用程序的服务器。但是在XPiNC中,当前服务器是您的本地机器,因为本地XULRunner是提供您的XPages的服务器。如果您没有数据库的本地副本,则必须告诉Notes要使用哪个服务器。您好,我尝试了您建议的每个解决方案,解决问题的方法是使用database.getServer()。感谢您的帮助reason database.getServer()是基于以下问题的解决方案:“当前服务器是什么?”null'和'''''用于当前服务器。在浏览器中,当前服务器是运行应用程序的服务器。但是在XPiNC中,当前服务器是您的本地机器,因为本地XULRunner是提供您的XPages的服务器。如果没有数据库的本地副本,则必须告诉Notes使用哪台服务器。