2016-05-20 3 views
1

このプログラムでは、項目コードを選択すると3つのフィールドが表示され、更新すると更新を尋ねてレコードを更新します。このプログラムまでうまくいった。CTRL-Dの使い方は?

それはイエス削除質問を尋ねるか、いや、それはそれがそうでなければ、何もそれが何かをしようとしたんが、私はできませんよんあなたはフィールドを空白にする必要があることを更新何イエスであるユーザーを押しCtrlキー + D場合、私は一つの条件を追加そうするために。

/*Sample Item master Maintenance Program*/          
/* DISPLAY TITLE */ 
{us/mf/mfdtitle.i "3+ "} 
def var l_qad like pt__qad13. 
def var l_draw like pt_draw. 
def var l_group like pt_group. 
def var ans as logical no-undo. 
form 
    pt_part colon 25 
    with frame a side-labels width 80. 
/* SET EXTERNAL LABELS */ 
setFrameLabels(frame a:handle). 

form 
    "Enter the Value of" l_qad colon 30 skip(1) 
    "Enter the Value of" l_draw colon 30 skip(1) 
    "Enter the Value of" l_group colon 30 skip(1) 
    with frame b side-labels width 80. 
setFrameLabels(frame b:handle). 
view frame a.                 
repeat with frame a:                
     prompt-for pt_part               
     editing:                 
     /* FIND NEXT/PREVIOUS RECORD */          
     {us/mf/mfnp.i pt_mstr pt_part "pt_mstr.pt_domain = global_domain and pt_part" pt_part pt_part pt_part }        
     if recno <> ? then               
      do:                 
       display pt_part. 
      end. 
     end. 
     for first pt_mstr exclusive-lock where pt_domain = global_domain and pt_part = input pt_part: 
     assign l_qad= pt__qad13 
       l_draw= pt_draw 
      l_group= pt_group. 
     disp l_qad l_draw l_group with frame b. 
     update l_qad l_draw l_group with frame b. 
      assign pt__qad13 = input l_qad 
        pt_draw = input l_draw 
        pt_group = input l_group. 

     end. 
     hide frame b. 
     on CTRL-D ANYWHERE 
     do: 
     message "Please confirm delete" view-as alert-box question buttons yes-no update ans as logical. 
     if ans= true then 
      message "yes". 
      assign pt__qad13 = "" 
        pt_draw = "" 
        pt_group = "". 

     else 
      message "no". 
     end.  
end. 

答えて

1

トリガーをコードの前に配置する必要があります。

この基本的な例を見て、あなたは何が起こるか見てコメント解除/ 2つのトリガをコメントしようとすることができますが:コンパイルするとき

DEFINE VARIABLE cUpdate AS CHARACTER NO-UNDO. 

/* Placing the trigger here works! */ 
ON 'ctrl-d':U ANYWHERE DO: 
    MESSAGE "You rang sir?" VIEW-AS ALERT-BOX INFORMATION TITLE "Early trigger". 
    RETURN. 
END. 


UPDATE cUpdate. 

/* Placing the trigger here wont work! */ 
/* 
ON 'ctrl-d':U ANYWHERE DO: 
    MESSAGE "You rang sir?" VIEW-AS ALERT-BOX INFORMATION TITLE "Late trigger".  
    RETURN. 
END. 
*/ 

進展は一度だけのコードを渡します。したがって、あなたが現在いる場所の "先行"について何も知らないでしょう(FORWARDが例外であると宣言されたFUNCTIONSで)。