Exemplo de query e frame

Discussão em 'Comandos Básicos' iniciado por fdantas, Fevereiro 3, 2009.

  1. fdantas

    fdantas Administrator Moderador

    Código:
    DEF VAR x  AS LOGICAL.              
    DEF VAR y  AS LOGICAL.              
    DEF VAR rec AS ROWID.
    
    DEF BUTTON bt-fim LABEL "&Ok"      SIZE 10 BY 1.
    DEF BUTTON bt-inc LABEL "&Inclui"  SIZE 10 BY 1.
    
    DEF QUERY q-cust FOR customer SCROLLING.
    DEF BROWSE b-cust QUERY q-cust
        DISPLAY customer.cust-num 
                customer.name
                customer.credit-limit
        ENABLE  customer.name
                customer.credit-limit
                WITH SIZE 44.8 BY 7.6 SEPARATORS.  
                
    OPEN QUERY q-cust FOR EACH customer WHERE
                               customer.name BEGINS "XYZ".
    
    DEFINE FRAME a
            SKIP(1)  SPACE(3) b-cust
            SKIP(2)  bt-inc  AT ROW 12  COLUMN 04 SKIP(1) 
            bt-fim           AT ROW 12  COLUMN 15 SKIP(1)
            WITH CENTERED ROW 1
            VIEW-AS DIALOG-BOX SIZE 53 BY 14.
    DISPLAY b-cust bt-fim WITH FRAME a.
    ENABLE ALL WITH FRAME a.       
    
    ON CHOOSE OF bt-inc                                
       DO:          
          MESSAGE "Nova Linha?" VIEW-AS ALERT-BOX QUESTION
              BUTTONS YES-NO UPDATE y.   
          IF y THEN                         
             DO:
                IF AVAILABLE(customer) THEN 
                   x = b-cust:INSERT-ROW("AFTER").
                ELSE
                   DO:
                       CREATE customer.
                       ASSIGN rec = ROWID(customer).
                       OPEN QUERY q-cust FOR EACH customer 
                            WHERE ROWID(customer) = rec.
                       DISPLAY customer.cust-num 
                               WITH BROWSE b-cust.     
                       APPLY "ENTRY" TO BROWSE b-cust.        
                   END.
             END.
          ELSE 
             MESSAGE "INCLUSAO CANCELADA"
                VIEW-AS ALERT-BOX ERROR.
       END. 
      
    ON ROW-LEAVE OF BROWSE b-cust 
      DO:
       IF b-cust:NEW-ROW IN FRAME a THEN 
          DO:                                       
                   CREATE customer.
                   ASSIGN INPUT BROWSE b-cust
                                       customer.name
                                       customer.credit-limit.
                   DISPLAY customer.cust-num WITH BROWSE b-cust.
          END.                                               
       x = b-cust:CREATE-RESULT-LIST-ENTRY().
      END.
          
    WAIT-FOR CHOOSE OF bt-fim.  
    
    CLOSE QUERY q-cust.

Compartilhe esta Página