我不明白为什么不允许我的代码。
@If(@DbLookup("":"nocache";@DbName;"GPA";1)="GPnum";@Failure(@Command([FileSave])&@Command([CloseWindow]));@Success)`
请帮我。谢谢你。
我不明白为什么不允许我的代码。
@If(@DbLookup("":"nocache";@DbName;"GPA";1)="GPnum";@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 中搜索的键,如上所述 DBLOOKUP 可能会返回错误,因此检查 @isError(t)
第二次失败只是阻止表单的验证,我从未尝试过(它没有意义)使其保存表单
希望能帮助到你
@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)