我有一个XPage正在使用用户的输入执行@DbLookup并尝试在同一服务器上的另一个数据库中的视图中查找该值。
我已经确认视图实际上是按第一列排序的,因此@DbLookup是友好的。以下代码显示在XPage上按钮的服务器端Javascript OnClick
事件处理程序中。
我的问题是尝试将lRep的值分配给'firstNameLabel'时发生错误。即使'FirstName'字段下的a记录存在密钥'P301993',lRep也会从dbLookup返回一个空值。这个dbLookup应该找到一个返回单个'FirstName'的结果。但事实并非如此。
var resultLabel = getComponent("firstNameLabel");
var dbName = new Array(@DbName()[0],"UKCSandbox.nsf");
var lRep = @DbLookup(dbName,"customerLookup","P301993","FirstName");
resultLabel.setValue(lRep.toString());
答案 0 :(得分:4)
除非您的格式在复制和粘贴中丢失,否则您的代码存在缺陷。这不是Java,这是JavaScript。行结尾不重要,函数不作用于对象,但返回值。此外@DbLookup
在you have exactly one match时返回一个字符串,因此检查字符串对您没有帮助。
您的代码应如下所示:
var ukcNumber = Registration.getItemValueString('UKCNumber').toUpperCase();
var resultLabel = getComponent("ukcNumberLabel");
var dbName = @DbName();
dbName[1] = "UKC\\UKCSandbox.nsf";
var lRep = @DbLookup(dbName,"customerLookup",ukcNumber,1);
resultLabel.setValue((lRep) ? "Success" : "Failed");
这对你有用吗?
更新:要检查的两件事:
答案 1 :(得分:2)
您是否尝试过让dblookup在xpages之外工作,即使用ScanEZ或Notes客户端?
答案 2 :(得分:2)
检查你的ukcNumber变量,使其包含一个值。
修改强>
检查以便用户有权在其他数据库中进行查找。 还可以在旧的Notes表单上尝试类似的代码,看看是否得到相同的结果。
答案 3 :(得分:0)
为什么不能在@DBLookup调用中使用关键字'[FAILSILENT]'。如果没有条目与您的密钥匹配,它将返回“”。 如果仍有问题,请使用SSJS / java代码查看它的分解位置。