【问题标题】:DB Lookup issue, Lotus Notes数据库查找问题,Lotus Notes
【发布时间】:2013-10-22 19:51:53
【问题描述】:

我有一个场景,其中有三个字段,基于第一个字段(第一个字段中的 3 个值)的选择,下一个字段是通过 DBcolumn 获取值(它是一个对话列表字段)。然后在选择第二个领域的基础上,第三个领域来了。以上所有字段均为对话列表字段。

问题在于多选,当从第一个字段中选择多个值时,下一个字段将在使用 DBColumn 时出现(由于值较小),但由于第二个字段有很多值,我们必须使用 DB往上看,这里的多选没有获取对应字段的数据。

例如。我有一个名为 Database 的字段(有 3 个值),另外两个字段是 Project(许多值)和 Brand。

我正在使用 DBColumn 从数据库字段选择(多选)中获取项目字段中的值,我得到了正确的(使用@if),但是在项目字段的多选之后(有很多值)我不是能够在下一个字段中获取值(使用 DBLookup)。

请告诉我任何解决方法....

【问题讨论】:

    标签: lotus-notes lotusscript lotus-formula


    【解决方案1】:

    首先:您的代码可能有助于解决这个问题,尽管我认为它与代码无关:

    请检查项目上的字段属性“关键字更改时刷新字段”和品牌字段上的属性“文档刷新时刷新选项”。

    如果您在选择第二个项目时没有获得 ANY- 值,请检查您的查找键是否正确用作 DBLookup 的多个值,并且它不会尝试查找类似“value1;value2”的内容" 而不是 "value1" : "value2"...

    调试这样的事情的最佳实践是有一个“BrandList”字段,Computed for Display,隐藏,其中包含 DBLookup:

    _viw := "YourViewName";
    _crit := Project;
    _col := 2;
    REM "Don't do lookups, if project is empty"; 
    @if( _crit = "" ; @Return( "" ) ; "" ); 
    _lkp := @DBLookup( "" : "NoCache" ; _viw ; _crit ; _col );
    @if( @IsError( _lkp ) ; "" ; _lkp );
    

    并且让品牌指向这个字段(只需使用字段名作为公式)。这样您就可以轻松调试返回的值。

    另外:如果你不确定,你选择的每个项目都会有品牌,你需要在查找中添加[FailSilent],否则如果只有一个项目找不到,整个查找将失败..._lkp := @DBLookup( "" : "NoCache" ; _viw ; _crit ; _col; [Failsilent] );

    但是:在调试某些东西时,Failsilent 非常糟糕,因为您永远不会收到错误消息... 并且:出于调试目的,您当然不要使用@IsError- 行并简单地返回 _lkp...

    【讨论】:

    • 感谢 Torsten 的建议,但问题是我不确定要使用什么键进行查找,因为可以有多个排列和组合,我们可以在第一列中写下所有组合在获取查找的视图中,我主要是在这里寻找传递 ass 键的内容。
    • 你不需要置换任何东西。视图的第一列按项目分类。您的查找将列表作为键。 @DBlookup 查找每一个键(一个接一个)并返回所有查找的结果......
    • 这就是公式语言的主要力量:Beeing 能够像处理单个值一样处理列表,而无需考虑排列...
    • 这里有一个小的更正:@DbLookup 确实对列表中的每个键进行了查找,但是......它在第一次不成功的查找时停止。所以最好确保键(仍然)在列表中。
    • @D.Bugger 很常见的问题。安全的解决方法是使用“@Transform”或“@For”进行多次查找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多