2016-05-20 9 views
1

In diesem Programm, wenn Sie Artikelcode wählen, wird es 3 Felder anzeigen und fragt nach Update, wenn Sie aktualisieren, werden die Datensätze aktualisiert. Bis zu diesem Programm war gut.ON CTRL-D wie benutzt man es?

Ich habe eine Bedingung, wenn der Benutzer drücken Ctrl + D es zum Löschen Frage geht dahin, ja oder nein, es ist ja, was Sie aktualisiert, dass Felder leer sein sollte, sonst nichts tun, es ist etwas versucht, aber ich bin nicht in der Lage um es zu tun.

/*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. 

Antwort

1

Ihr Trigger muss früher in Ihrem Code platziert werden.

Schauen Sie sich das grundlegende Beispiel können Sie versuchen, die zwei Trigger Kommentar/uncomment, um zu sehen, was passiert:

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. 
*/ 

Fortschritt nur geht einmal den Code beim Kompilieren. Daher wird es nie etwas wissen, das "voraus" ist, wo Sie jetzt sind (mit FUNKTIONEN, die FORWARD als Ausnahme erklärt haben).