0

我有一个 XPage,它正在使用用户的输入执行 @DbLookup,并尝试在同一服务器上的不同数据库中的视图中找到该值。

我已经验证了视图实际上是按第一列排序的,因此对@DbLookup 很友好。下面的代码出现在OnClick我的 XPage 上一个按钮的服务器端 Javascript 事件处理程序中。

我的问题是尝试将 lRep 的值分配给“firstNameLabel”时发生错误。lRep 正在从 dbLookup 返回一个空值,即使“名字”字段下的记录存在,键为“P301993”。此 dbLookup 应该找到返回单个“名字”的结果。然而,事实并非如此。

var resultLabel = getComponent("firstNameLabel");
var dbName = new Array(@DbName()[0],"UKCSandbox.nsf");
var lRep = @DbLookup(dbName,"customerLookup","P301993","FirstName");
resultLabel.setValue(lRep.toString());
4

4 回答 4

4

除非您的格式在复制和粘贴中丢失,否则您的代码存在缺陷。这不是 Java,这是 JavaScript。行尾很重要,函数不会作用于对象,而是返回一个值。当您只有一个匹配时也会@DbLookup返回一个字符串,因此检查字符串对您没有帮助。

您的代码应如下所示:

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");

那对你有用吗?

更新:要检查的两件事:

  • 查找是否使用@DbName 在同一个数据库中工作?
  • XPage 具有与 Java 代理相同的安全约束。您在服务器文档中是否有足够的权限来执行“从其他数据库获取值”?默认为否!
于 2013-06-05T01:11:51.327 回答
2

您是否尝试过使 dblookup 在 xpages 之外工作,即使用 ScanEZ 或在 Notes 客户端中?

于 2013-06-04T18:25:32.940 回答
2

检查您的 ukcNumber 变量,使其包含一个值。

编辑

检查用户是否有权在其他数据库中进行查找。还可以在旧的 Notes Form 上尝试类似的代码,看看是否得到相同的结果。

于 2013-06-04T20:02:13.850 回答
0

为什么不能在 @DBLookup 调用中使用关键字“[FAILSILENT]”。如果没有条目与您的密钥匹配,它将返回“”。如果您仍然有问题,请使用 SSJS/java 代码查看它在哪里崩溃。

于 2013-06-05T14:11:14.723 回答