【问题标题】:Lotus Script: Passing a string variable to Evaluate statementLotus Script:将字符串变量传递给 Evaluate 语句
【发布时间】:2014-01-07 16:02:13
【问题描述】:

我无法让简单的 DbLookup 公式与变量一起使用。我有员工及其经理的视图,我通过 DbColumn 获得唯一的经理记录,然后我需要此人管理的人员列表

pms=Evaluate({@Unique(@Dbcolumn("":"";"":"";"admin";3))})

ForAll pm In pms
   result = Evaluate({@DBlookup("":"";"":"";"admin";} & pm & {;1)})

这不起作用,我也尝试在 pm 周围使用竖线和附加引号,但我不断收到类型不匹配或执行失败错误

result = Evaluate({@DBlookup("":"";"":"";"admin";} & "keyword" & {;1)})

这很好用

【问题讨论】:

  • 您在 pms 中的测试数据元素中是否包含引号?
  • 没有。我确实有斜线

标签: lotusscript lotus evaluate


【解决方案1】:

您也必须将 pm 的值用引号引起来:

result = Evaluate({@DBlookup("":"";"":"";"admin";"} & pm & {";1)})

这样它就被识别为一个字符串。

例子:

如果 pm 有一个字符串值“Domino”,那么 Evaluate 字符串必须如下所示:

@DBlookup("":"";"":"";"admin";"Domino";1)

但在您原来的公式版本中它会是

@DBlookup("":"";"":"";"admin";Domino;1)

顺便说一句,如果 pm 包含引号,则代码将中断。如果您确定这不会发生,那么代码就可以了。

【讨论】:

  • 我以前试过,现在又试了一次——类型不匹配,CStr(pm) 也无济于事。 pm 不能包含引号
  • 如果您像处理字符串一样处理 result 但它是一个数组,则会出现类型不匹配。改用result(0),例如print(result(0)).
  • 我不知道。每次出现错误时,结果数组都是空的( isEmpty(result) 返回 True),我使用它的唯一方法是在另一个 ForAll 循环中选择单个记录并创建一个单独的列表,因此问题仍在 Evaluate 中:)
  • 您在第一列中查找 pm 的值并返回第一列 - 这有意义吗? @DbLookup 总是在第一个排好序的列中查找键(可能不是带有管理器的第三列)
  • 这是一个分数!我几乎可以肯定我之前考虑过它,但似乎我忘记了:)非常感谢!
猜你喜欢
  • 2020-06-16
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多