私のコードが許可されない理由がわかりません。
@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)をチェックします。2
番目の失敗はフォームの検証をブロックするだけです。フォームを保存する
それが役に立てば幸い
@If(@DbLookup("":"nocache";@DbName;"GPA";1)="GPnum"
コードにはもう 1 つのパラメーターが必要です。
ヘルプから
@DbLookup( class : cache ; server : database ; view ; key ; fieldName ; keywords )
したがって、ビューとして「GPA」があり、返すキーとフィールド/列を指定する必要があります。また、DbLookup については、[FAILSILENT] をキーワードとして使用することをお勧めします。この場合、@IsError の結果を確認する必要はありません。
ただし、おそらく @DbLookup の代わりに @DbColumn を使用する必要があります。
データベース/ビューに値が存在するかどうかを確認する必要があることを理解したので、次のコードを試してください。
@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)