[Domino]从嵌入另一个数据库嵌入的Embedded View无法正常显示,提示unable to lauch

发现问题

1. 项目中需要在一个数据库中插入另一个数据库的Embedded View,使用起来十分费劲,在选择数据库的下拉菜单中经常会找不到目标数据库:

[Domino]从嵌入另一个数据库嵌入的Embedded View无法正常显示,提示unable to lauch_第1张图片

2. 在做日文版的时候,从workbench导出数据库之后,发现前面插入的Embedded View,无法正常显示,提示unable to launch。用Designer打开的时候发现点击这个Embedded View就会弹框,然后就不能点击该Form里面任何东西,很难选中。

[Domino]从嵌入另一个数据库嵌入的Embedded View无法正常显示,提示unable to lauch_第2张图片

分析原因&解决问题

1. Google了一下第一个问题,只要在Designer里面先打开被引用的数据库(view实际所在的数据库),再添加Embedded View,就会在数据库列表中出现被引用数据库。

2. 一开始尝试在重新导出数据库之后,删掉Embedded View再重新添加,可以解决这个问题。

但是每次导出数据库之后都要这么操作一下有些麻烦,我就很奇怪他这个Embedded View到底是通过什么方式去连到另一个数据库的。网上一些说法说是现在domino目录、data目录、相同路径下查找,测试了一下,觉得都不靠谱,因为不管把被引用数据库copy到哪里,根本就还是提示unable to lauch。

最后终于找到一个方法,用Designer打开数据库,在左边的form列表中,右键点击包含Embedded View的那个form,选择“Edit with DXL”,这时候会将这个form用XML的格式打开!!搜索了一下关键字“embedded”,果然发现了一些有用的东西:

 

发现里面有个名为database的属性,这一串字符串肯定是跟被引用数据库有关的。于是去被引用数据库的属性里面看(未经过workbench导出的原版数据库),发现这个字符串是和Replica ID一样的。

[Domino]从嵌入另一个数据库嵌入的Embedded View无法正常显示,提示unable to lauch_第3张图片

所以一切就能解释通了:Embedded View是通过Replica ID来找到被引用数据库的,而在做日文版的时候,导出的目标数据库Replica ID肯定是和之前的不一样,所以没法launch。因此重新添加一次Embedded View是可行的,另一个解决方法就是把新导出数据库的Replica ID改成跟导出前一样。

修改Replica ID通过写程序是可以实现的,我也在网上找到了一个方便的工具:
http://www.turtleweb.com/turtleweb.nsf/otherpageslookup/toolsandtoys?opendocument
在这个链接里面找到“Change.nsf”,这就是一个普通的Domino数据库,里面包含了修改Replica ID的agent。

打开界面如下,第一个空填入要修改的数据库路径,第二个空不用填,第三个空填入想修改的Replica ID的值。

[Domino]从嵌入另一个数据库嵌入的Embedded View无法正常显示,提示unable to lauch_第4张图片

至此问题全部解决!

你可能感兴趣的:(EMBED)