0

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

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

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

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

请让我知道任何解决方法....

4

1 回答 1

1

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

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

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

调试这样的事情的投注实践是有一个“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...

于 2013-10-22T11:51:53.633 回答