0

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

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

请帮我。谢谢你。

4

2 回答 2

0

编辑:我为保存当前文档的按钮操作添加了一个代码(请参见下面的作者评论)
用户输入我们检查的值的可编辑字段称为 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)
第二次失败只是阻止表单的验证,我从未尝试过(它没有意义)使其保存表单

希望能帮助到你

于 2012-11-25T07:06:44.060 回答
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)
于 2012-11-23T08:05:38.760 回答