莲花笔记,搜索等于文本框的数据

时间:2012-11-23 06:37:44

标签: lotus-notes lotus-domino lotusscript lotus-formula

我不明白为什么我的代码不被允许。

@If(@DbLookup("":"nocache";@DbName;"GPA";1)="GPnum";@Failure(@Command([FileSave])&@Command([CloseWindow]));@Success)`

请帮帮我。谢谢。

2 个答案:

答案 0 :(得分:0)

@If(@DbLookup("":"nocache";@DbName;"GPA";1)="GPnum"

您的代码应该还有1个参数。

来自帮助

@DbLookup( class : cache ; server : database ; view ; key ; fieldName ; keywords )

因此您将“GPA”视为视图,然后您需要指定要返回的字段/列。同样对于DbLookup我建议你使用[FAILSILENT]作为关键字,在这种情况下你不需要检查@IsError的结果

然而,您可能只需要使用@DbColumn而不是@DbLookup。

据我所知,您需要验证数据库/视图中是否存在某些值,请尝试以下代码:

@If(@DbColumn("":"NoCache";@DbName;"GPA";1)="GPnum"; @Failure(@Command([FileSave]) : @Command([CloseWindow])); @Success)

@If(@DbLookup("":"NoCache";@DbName;"GPA"; "GPnum"; 1; [FAILSILENT])<>""; @Failure(@Command([FileSave]) : @Command([CloseWindow])); @Success)

答案 1 :(得分:0)

编辑:我添加了一个用于保存当前文档的按钮操作的代码(参见下面的作者评论)
用户输入我们检查的值的可编辑字段称为GPnum。视图“GPA”按其第一个col显示GPnum值排序。

t:=@DbLookup("":"nocache";@DbName;"GPA"; GPnum ; 1 ; [FailSilent] );
@If(@IsError(t) ; @Prompt([Ok]; "DB has a problem:";@Text(t)) ;
  t = "" ; @Do(@Command([FileSave]);@Command([CloseWindow])) ;
  @Prompt([Ok] ; "unable to save" ; "The key already exists") )

原始回复

t:=@DbLookup("":"nocache";@DbName;"GPA"; @ThisValue ; 1 );
@If(@IsError(t) ; @Failure("DB has a problem:"+@Text(t)) ; t =  "" ; @Success ; @Failure("The key already exists") )

如果您使用@ failure / @ success,则必须位于表单中的可编辑字段(验证)。 据我所知,你检查你的价值是否已经存在。 这样:

首先将@thisValue添加为您在DBLOOKUP中搜索的关键字, 如上所述,DBLOOKUP可能会返回错误,因此检查@isError(t)
第二次失败只是阻止了表单的验证,我从未尝试过(它没有意义)使它保存表单

希望有所帮助