我不明白为什么我的代码不被允许。
@If(@DbLookup("":"nocache";@DbName;"GPA";1)="GPnum";@Failure(@Command([FileSave])&@Command([CloseWindow]));@Success)`
请帮帮我。谢谢。
发布于 2012-11-23 08:05:39
@If(@DbLookup("":"nocache";@DbName;"GPA";1)="GPnum"
你的代码应该再有一个参数。
来自帮助
@DbLookup( class : cache ; server : database ; view ; key ; fieldName ; keywords )
所以你有"GPA“作为视图,然后你需要指定你想要返回的Key和字段/列。另外,对于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)
发布于 2012-11-25 07:06:44
编辑:我为保存当前文档的按钮操作添加了代码(参见下面的作者注释)
用户在其中输入我们检查的值的可编辑字段称为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)
第二次失败只是阻止了表单的验证,我从来没有尝试过(这没有意义)让它保存表单
希望能有所帮助
https://stackoverflow.com/questions/13524206
复制