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



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

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

请帮助我。谢谢。

@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)

编辑:我为保存当前文档的按钮操作添加了一个代码(请参阅下面的作者评论)
用户在其中输入我们检查的值的可编辑字段称为 GPnum。视图"GPA"按其显示 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 可能会返回错误,因此检查 @isError(t)
第二次失败只是阻止表单的验证,我从未尝试过(没有意义)让它保存表单

希望对你有帮助

最新更新