2017-02-14 7 views
0

テーブルフィールドのデフォルト値を読みたい。私は現在、次の構文を使用しています:テーブルフィールドのデフォルト値を読み取るには?

しかし
DEF VAR iDefaultValue AS INT NO-UNDO. 

iDefaultValue = BUFFER MyTable:BUFFER-FIELD("MyField"):DEFAULT-VALUE. 

、このフィールドの名前が変更またはタイプミスがあります、それが正常にコンパイル処理スルー行こうと考えられるエラーは、実行時に、後にスローされます。

この値を読み書きせずに文字列として渡す方法はありますか?私は簡単な構文チェックですべての誤植やエラーをキャッチしたいと思います。

答えて

2

また、バッファ内のフィールド番号を使用することもできます。新しいフィールドが追加されたり、フィールドの順序が変更されたりすると、これが壊れる可能性があります。

iDefaultValue = BUFFER u-ort:BUFFER-FIELD(1):DEFAULT-VALUE. 

実行方法に関係なく、実行時にこのエラーをチェックしたり、アプリケーションに適したものをログに記録することができます。

DEFINE VARIABLE iDefaultValue AS INTEGER  NO-UNDO. 
DEFINE VARIABLE iErrors   AS INTEGER  NO-UNDO. 

iDefaultValue = BUFFER myTable:BUFFER-FIELD("MyField"):DEFAULT-VALUE NO-ERROR. 
IF ERROR-STATUS:ERROR THEN DO: 

    DO iErrors = 1 TO ERROR-STATUS:NUM-MESSAGES: 

     /* 7351 
     BUFFER-FIELD <field-name> was not found in buffer <buffer-name>. (7351) 
     You gave a character expression as the argument to the BUFFER-FIELD method of a buffer object, but the character string did not identify any field in that buffer. Check your PROGRESS dictionary for the field names for the table, and do not abbreviate the field name. 
     */ 

     IF ERROR-STATUS:GET-NUMBER(iErrors) = 7351 THEN DO: 
      MESSAGE "Buffer field name was wrong" VIEW-AS ALERT-BOX. 
     END. 

    END. 
END. 
1

変数likeを定義してその値を使用できます。

DEF VAR iDefaultValue like myTable.MyField NO-UNDO. 
/* Don't change the variable! */ 

データベースフィールドの初期値が変更された場合、再コンパイルする必要があります。そうでない場合は、古い初期値が取得されます。あなたは、常に現在の値を取得し、コンパイル時にエラーをキャッチすることを確認したい場合は フィールドの名前が変更されますときには、この場合

DEF VAR iDefaultValue like myTable.MyField NO-UNDO. 
iDefaultValue = BUFFER MyTable:BUFFER-FIELD("MyField"):DEFAULT-VALUE. 

を書くことができますが、コードは、あなたがまだランタイムを取得する再コンパイルされていませんエラー。 次のコードでは、後者の場合にプログラムを起動するときにエラーが発生するはずです。

DEF VAR iDefaultValue like myTable.MyField NO-UNDO. 
define frame f_dummy 
    myTable.MyField view-as fill-in skip 
with side-labels width 255 stream-io. 
iDefaultValue = BUFFER MyTable:BUFFER-FIELD("MyField"):DEFAULT-VALUE. 

どの行動が望ましいかを判断する必要があります。 すべての例では、コンパイル時にテーブル名とフィールド名がわかっているものとします。

関連する問題