1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

012 - Consulta com zoom (008 + 007 + 011)

Discussão em 'Ambiente Web - Webspeed e/ou StarWeb FrameWork' iniciado por Agnaldo, Janeiro 19, 2014.

  1. Agnaldo

    Agnaldo Membro Ativo

    Tempo estimado de leitura: menos de 10 minutos

    Vamos fazer uma coisa diferente...

    No tópico 8 fizemos uma tela onde digitávamos o "código" de um cliente e era mostrado o detalhe do mesmo.
    No tópico 7 vimos como um programa podia chamar outro, passando parâmetros, através de link´s.
    E no tópico anterior, o 11, vimos como paginar dados.

    Vamos aproveitar o conhecimento desses três tópicos (e parte do código já pronto deles) para montar uma tela de consulta de clientes.
    Nessa tela, poderemos digitar o código do cliente e mostrarmos o detalhe dele. Mas se não soubermos o código, poderemos linkar (chamar) uma tela de "zoom", que liste os registros, paginando eles. De maneira que, selecionado um cliente na tela de listagem, paginada, o mesmo seja mostrado na tela de detalhe.

    Nós vamos ter dois programas.
    A tela de "consulta de clientes", que será o programa consulta-cliente.p
    E a tela de "zoom", que contém a lista paginada, que será o zoom-clientes.p

    Os dois estão listados abaixo e podem ser executados, testados, antes de continuarmos, pois faremos mudanças em ambos na continuação.

    Continua...

    Arquivos Anexados:

    Última edição: Janeiro 20, 2014
    brazjuniorgyn curtiu isso.
  2. Agnaldo

    Agnaldo Membro Ativo

    Programa consulta-cliente.p
    PHP:
    /*
    *
    * consulta-cliente.p
    *
    */

    DEFINE VARIABLE codigo AS CHARACTER.

    /* Include com as funcionalidades web */
    src/web/method/wrap-cgi.}

    /* Gera o header html */
    output-content-type("text/html").

    /* Abre a página html */
    {&out'<html>' SKIP
           
    '<head>' SKIP
           
    '<title>Consulta cliente</title>' SKIP
           
    '</head>' SKIP
           
    '<body>' SKIP(1).

    {&
    out'<div align="center">' SKIP.

    /* *** Lê o valor da interface *** */
    ASSIGN codigo GET-VALUE("codigo").

    {&
    out'<form method="post" name="form" action="consulta-cliente">' SKIP
           
    '   <table border="0" cellspacing="2" cellpadding="1">' SKIP
           
    '      <tr>' SKIP
           
    '         <td align="right">Cliente a pequisar:</td>' SKIP
           
    '         <td>' SKIP
           
    '            <input type="text" name="codigo" value="' codigo '" size="5" maxlength="5">' SKIP
           
    '            <input type="submit" name="btn" value="Pesquisar">' SKIP
           
    '         </td>' SKIP
           
    '      </tr>' SKIP
           
    '   </table>' SKIP
           
    '</form>' SKIP.

    IF 
    REQUEST_METHOD "POST"
       
    THEN
           
    DO:
              
    /* *** Busca o registro do cliente o mostra na interface *** */
              
    FIND FIRST Customer WHERE Customer.Cust-Num INTEGER(codigoNO-LOCK NO-ERROR.
              IF 
    NOT AVAILABLE Customer
                 THEN
                     
    {&out'<b>Este código de cliente não existe.</b>' SKIP.
                 ELSE
                     DO:
                        {&
    out'<table border="0" cellspacing="1" cellpadding="1" width="100%">' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td colspan="4" align="center" bgcolor="#FFFFCC"><b>Registro do cliente ' Customer.Cust-Num '</b></td>' SKIP
                               
    '   <tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Nome:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Name '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Endereço:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Address (IF Customer.Address2 <> '' THEN (', ' Customer.Address2) ELSE '''</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Cidade:</b></td>' SKIP
                               
    '      <td>' Customer.City '</td>' SKIP
                               
    '      <td align="right"><b>Estado:</b></td>' SKIP
                               
    '      <td>' Customer.State '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Código postal:</b></td>' SKIP
                               
    '      <td>' Customer.Postal-Code '</td>' SKIP
                               
    '      <td align="right"><b>Telefone:</b></td>' SKIP
                               
    '      <td>' Customer.Phone '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Contato:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Contact '</td>' SKIP
                               
    '   </tr>' SKIP.

                        
    FIND FIRST SalesRep OF Customer NO-LOCK NO-ERROR.
                        IF 
    AVAILABLE SalesRep
                           THEN
                               
    {&out'   <tr>' SKIP
                                      
    '      <td align="right"><b>Representante:</b></td>' SKIP
                                      
    '      <td colspan="3">' Customer.Sales-Rep ' - ' SalesRep.Rep-Name '</td>' SKIP
                                      
    '   </tr>' SKIP.
                           ELSE
                               {&
    out'   <tr>' SKIP
                                      
    '      <td align="right"><b>Representante:</b></td>' SKIP
                                      
    '      <td colspan="3">' Customer.Sales-Rep '</td>' SKIP
                                      
    '   </tr>' SKIP.

                        {&
    out'   <tr>' SKIP
                               
    '      <td align="right"><b>Crédito:</b></td>' SKIP
                               
    '      <td>' Customer.Credit-Limit FORMAT "->>>,>>>,>>9.99" '</td>' SKIP
                               
    '      <td align="right"><b>Balanço:</b></td>' SKIP
                               
    '      <td>' Customer.Balance FORMAT "->>>,>>>,>>9.99" '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Termos:</b></td>' SKIP
                               
    '      <td>' Customer.terms '</td>' SKIP
                               
    '      <td align="right"><b>Desconto:</b></td>' SKIP
                               
    '      <td>' Customer.Discount FORMAT "->>9.99" '%</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Observações:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Comments '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '</table>' SKIP.
                     
    END.
           
    END.

    {&
    out'</div>' SKIP.

    {&
    out'</body>' SKIP
           
    '</html>' SKIP(1).
    Continua...
  3. Agnaldo

    Agnaldo Membro Ativo

    Programa zoom-clientes.p
    PHP:

    /* 
     *
     * zoom-clientes.p
     *
     */

    DEFINE VARIABLE limiteDaPagina AS INTEGER INITIAL 10.
    DEFINE VARIABLE contaRegistros 
    AS INTEGER.
    DEFINE VARIABLE opcao          AS CHARACTER.
    DEFINE VARIABLE ponteiro       AS CHARACTER.
    DEFINE VARIABLE posicao        AS CHARACTER.
    DEFINE VARIABLE corDeFundo     AS CHARACTER.
    DEFINE QUERY q1 FOR Customer SCROLLING.

    /* Include com as funcionalidades web */
    src/web/method/wrap-cgi.}

    /* Gera o header html */
    output-content-type("text/html").

    /* Abre a página html */
    {&out'<html>' SKIP
           
    '<head>' SKIP
           
    '<title>Exemplo de paginação</title>' SKIP
           
    '</head>' SKIP
           
    '<body>' SKIP(1).

    ASSIGN opcao    GET-VALUE("opcao").
           
    ponteiro GET-VALUE("ponteiro").

    OPEN QUERY q1 FOR EACH Customer NO-LOCK INDEXED-REPOSITION.

    GET FIRST q1 NO-LOCK.
    IF 
    NOT AVAILABLE Customer
       THEN
           
    {&out'<h1>Tabela esta vazia</h1>' SKIP.
       ELSE
           DO:
              CASE 
    opcao:
                  
    WHEN "primeiro" THEN
                       
    DO:
                          
    GET FIRST q1 NO-LOCK.
                          
    ASSIGN posicao "inicio".
                       
    END.
                  
    WHEN "ultimo" THEN
                       
    DO:
                          
    GET LAST q1 NO-LOCK.
                          
    REPOSITION q1 BACKWARDS limiteDaPagina.
                          
    GET NEXT q1 NO-LOCK.
                          
    ASSIGN posicao "final".
                       
    END.
                  
    WHEN "proximo" THEN
                       
    DO:
                          
    REPOSITION q1 TO ROWID TO-ROWID(ponteiroNO-ERROR.
                          
    REPOSITION q1 FORWARD (limiteDaPagina 1).
                          
    GET NEXT q1 NO-LOCK.
                          IF 
    NOT AVAILABLE Customer
                             THEN
                                 
    DO:
                                    
    GET LAST q1 NO-LOCK.
                                    
    REPOSITION q1 BACKWARDS limiteDaPagina.
                                    
    GET NEXT q1 NO-LOCK.
                                    
    ASSIGN posicao "final".
                                 
    END.
                             ELSE
                                 DO:
                                    
    REPOSITION q1 TO ROWID TO-ROWID(ponteiroNO-ERROR.
                                    
    REPOSITION q1 FORWARD 1.
                                    GET NEXT q1 NO
    -LOCK.
                                 
    END.
                       
    END.
                  
    WHEN "anterior" THEN
                       
    DO:
                          
    REPOSITION q1 TO ROWID TO-ROWID(ponteiroNO-ERROR.
                          
    REPOSITION q1 BACKWARDS ((limiteDaPagina 2) - 1).
                          
    GET PREV q1 NO-LOCK.
                          IF 
    NOT AVAILABLE Customer
                             THEN
                                 ASSIGN posicao 
    "inicio".
                          
    GET NEXT q1 NO-LOCK.
                       
    END.
                  
    OTHERWISE
                       
    DO:
                          
    GET FIRST q1 NO-LOCK.
                          
    ASSIGN posicao "inicio".
                       
    END.
              
    END CASE.
         
              {&
    out'<div align="center">' SKIP
                     
    '   <table border="1" cellspacing="2" cellpadding="1" style="border-collapse:collapse">' SKIP
                     
    '      <tr bgcolor="#FFFFCC">' SKIP
                     
    '         <td><b>Código</b></td>' SKIP
                     
    '         <td><b>Nome do cliente</b></td>' SKIP
                     
    '      </tr>' SKIP.
              DO WHILE 
    AVAILABLE Customer AND contaRegistros limiteDaPagina:
                 
    ASSIGN ponteiro STRING(ROWID(Customer)).
                 IF 
    corDeFundo "#FFFFF0"
                    
    THEN
                        ASSIGN corDeFundo 
    "#EEEEE0".              
                    ELSE
                        
    ASSIGN corDeFundo "#FFFFF0".              
                 {&
    out'      <tr bgcolor="' corDeFundo '">' SKIP
                        
    '         <td align="center">' Customer.Cust-Num FORMAT "9999" '</td>' SKIP
                        
    '         <td>' Customer.Name '</td>' SKIP
                        
    '      </tr>' SKIP.
                 
    GET NEXT q1 NO-LOCK.
                 
    ASSIGN contaRegistros contaRegistros 1.
              END
    .

              {&
    out'      <tr>' SKIP
                     
    '         <td colspan="2" align="center">' SKIP.

              IF 
    NOT posicao "inicio"
                 
    THEN 
                     
    {&out'            <a href="zoom-clientes.p?opcao=primeiro"><img src="/webforum4each/imagens/btn_primeiro.png" alt="Primeiro" border="0"></a>' SKIP
                            
    '            <a href="zoom-clientes.p?opcao=anterior&ponteiro=' ponteiro '"><img src="/webforum4each/imagens/btn_anterior.png" alt="Anterior" border="0"></a>' SKIP.

              IF 
    NOT posicao "final" 
                 
    THEN
                     
    {&out'            <a href="zoom-clientes.p?opcao=proximo&ponteiro=' ponteiro '"><img src="/webforum4each/imagens/btn_proximo.png" alt="Proximo" border="0"></a>' SKIP
                            
    '            <a href="zoom-clientes.p?opcao=ultimo"><img src="/webforum4each/imagens/btn_ultimo.png" alt="Ultimo" border="0"></a>' SKIP.

              {&
    out'         </td>' SKIP
                     
    '      </tr>'.

              {&
    out'   </table>' SKIP
                     
    '</div>' SKIP.
           
    END.


    /* Fecha a página html */
    {&out'</body>' SKIP
           
    '</html>' SKIP(1).

    Continua...
  4. Agnaldo

    Agnaldo Membro Ativo

    No programa consulta-cliente temos o form com o campo código, bem como o botão de pesquisar, que executa a pesquisa.
    Código:
    '<input type="text" name="codigo" value="' codigo '" size="5" maxlength="5">' SKIP
    '<input type="submit" name="btn" value="Pesquisar">' SKIP
    
    O que vamos fazer é colocar junto ao campo código a imagem de uma lupa. A mesma esta em anexo.
    Código:
    '<input type="text" name="codigo" value="' codigo '" size="5" maxlength="5">' SKIP
    '<img src="/webforum4each/imagens/lupa.png" border="0">' SKIP     
    '<input type="submit" name="btn" value="Pesquisar">' SKIP
    
    E esta imagem terá um link nela. Esse link será para uma função Javascript (ainda vamos escrever), responsável por "abrir", por chamar o programa de zoom.
    Código:
    
    '<a href="javascript:abreZoom()"><img src="/webforum4each/imagens/lupa.png" border="0"></a>' SKIP     
    
    O que deixará nosso bloco do form com algo assim:
    PHP:
    {&out'<form method="post" name="form" action="consulta-cliente">' SKIP
           
    '   <table border="0" cellspacing="2" cellpadding="1">' SKIP
           
    '      <tr>' SKIP
           
    '         <td align="right">Cliente a pequisar:</td>' SKIP
           
    '         <td>' SKIP
           
    '            <input type="text" name="codigo" value="' codigo '" size="5" maxlength="5">' SKIP
           
    '            <a href="javascript:abreZoom()"><img src="/webforum4each/imagens/lupa.png" border="0"></a>' SKIP     
           
    '            <input type="submit" name="btn" value="Pesquisar">' SKIP
           
    '         </td>' SKIP
           
    '      </tr>' SKIP
           
    '   </table>' SKIP
           
    '</form>' SKIP.
    E uma tela assim:

    [​IMG]

    Então, quando clicarmos no link na imagem da lupa chamaremos a função JavaScript abreZoom.
    Essa função irá abrir a janela com a tela de zoom (programa zoom-clientes.p).
    Produzindo algo como
    [​IMG]


    Continua...
  5. Agnaldo

    Agnaldo Membro Ativo

    Nossa função, que irá usar o recurso de window.open do Javascript, seria algo assim
    Código:
    <script language="Javascript">
        function abreZoom()
            {
                window.open("zoom-clientes","zoom","toolbar=0,location=0,diretories=0,status=1,menubar=0,scrollbars=0,resizable=0,width=300,height=300,left=10,top=10");
            }
    </script>
    
    Em 4GL progress, então, a "desenhariamos" assim
    PHP:
    {&out'<script language="Javascript">' SKIP
           
    '    function abreZoom()' SKIP
           
    '        ~{' SKIP
           
    '            window.open("zoom-clientes","zoom","toolbar=0,location=0,diretories=0,status=1,menubar=0,scrollbars=0,resizable=0,width=300,height=300,left=10,top=10");' SKIP
           
    '        }' SKIP
           
    '</script>' SKIP(1).
    O código final do programa consulta-cliente seria algo como
    PHP:
    /* 
     *
     * consulta-cliente.p
     *
     */

    DEFINE VARIABLE codigo AS CHARACTER.

    /* Include com as funcionalidades web */
    src/web/method/wrap-cgi.}

    /* Gera o header html */
    output-content-type("text/html").

    /* Abre a página html */
    {&out'<html>' SKIP
           
    '<head>' SKIP
           
    '<title>Consulta cliente</title>' SKIP
           
    '</head>' SKIP
           
    '<body>' SKIP(1).

    {&
    out'<script language="Javascript">' SKIP
           
    '    function abreZoom()' SKIP
           
    '        ~{' SKIP
           
    '            window.open("zoom-clientes","zoom","toolbar=0,location=0,diretories=0,status=1,menubar=0,scrollbars=0,resizable=0,width=300,height=300,left=10,top=10");' SKIP
           
    '        }' SKIP
           
    '</script>' SKIP(1).

    {&
    out'<div align="center">' SKIP.

    /* *** Lê o valor da interface *** */
    ASSIGN codigo GET-VALUE("codigo").

    {&
    out'<form method="post" name="form" action="consulta-cliente">' SKIP
           
    '   <table border="0" cellspacing="2" cellpadding="1">' SKIP
           
    '      <tr>' SKIP
           
    '         <td align="right">Cliente a pequisar:</td>' SKIP
           
    '         <td>' SKIP
           
    '            <input type="text" name="codigo" value="' codigo '" size="5" maxlength="5">' SKIP
           
    '            <a href="javascript:abreZoom()"><img src="/webforum4each/imagens/lupa.png" border="0"></a>' SKIP          
           
    '            <input type="submit" name="btn" value="Pesquisar">' SKIP
           
    '         </td>' SKIP
           
    '      </tr>' SKIP
           
    '   </table>' SKIP
           
    '</form>' SKIP.

    IF 
    REQUEST_METHOD "POST"
       
    THEN
           
    DO:
              
    /* *** Busca o registro do cliente o mostra na interface *** */
              
    FIND FIRST Customer WHERE Customer.Cust-Num INTEGER(codigoNO-LOCK NO-ERROR.
              IF 
    NOT AVAILABLE Customer
                 THEN
                     
    {&out'<b>Este código de cliente não existe.</b>' SKIP.
                 ELSE
                     DO:
                        {&
    out'<table border="0" cellspacing="1" cellpadding="1" width="100%">' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td colspan="4" align="center" bgcolor="#FFFFCC"><b>Registro do cliente ' Customer.Cust-Num '</b></td>' SKIP
                               
    '   <tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Nome:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Name '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Endereço:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Address (IF Customer.Address2 <> '' THEN (', ' Customer.Address2) ELSE '''</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Cidade:</b></td>' SKIP
                               
    '      <td>' Customer.City '</td>' SKIP
                               
    '      <td align="right"><b>Estado:</b></td>' SKIP
                               
    '      <td>' Customer.State '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Código postal:</b></td>' SKIP
                               
    '      <td>' Customer.Postal-Code '</td>' SKIP
                               
    '      <td align="right"><b>Telefone:</b></td>' SKIP
                               
    '      <td>' Customer.Phone '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Contato:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Contact '</td>' SKIP
                               
    '   </tr>' SKIP.

                        
    FIND FIRST SalesRep OF Customer NO-LOCK NO-ERROR.
                        IF 
    AVAILABLE SalesRep
                           THEN
                               
    {&out'   <tr>' SKIP
                                      
    '      <td align="right"><b>Representante:</b></td>' SKIP
                                      
    '      <td colspan="3">' Customer.Sales-Rep ' - ' SalesRep.Rep-Name '</td>' SKIP
                                      
    '   </tr>' SKIP.
                           ELSE
                               {&
    out'   <tr>' SKIP
                                      
    '      <td align="right"><b>Representante:</b></td>' SKIP
                                      
    '      <td colspan="3">' Customer.Sales-Rep '</td>' SKIP
                                      
    '   </tr>' SKIP.

                        {&
    out'   <tr>' SKIP
                               
    '      <td align="right"><b>Crédito:</b></td>' SKIP
                               
    '      <td>' Customer.Credit-Limit FORMAT "->>>,>>>,>>9.99" '</td>' SKIP
                               
    '      <td align="right"><b>Balanço:</b></td>' SKIP
                               
    '      <td>' Customer.Balance FORMAT "->>>,>>>,>>9.99" '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Termos:</b></td>' SKIP
                               
    '      <td>' Customer.terms '</td>' SKIP
                               
    '      <td align="right"><b>Desconto:</b></td>' SKIP
                               
    '      <td>' Customer.Discount FORMAT "->>9.99" '%</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '   <tr>' SKIP
                               
    '      <td align="right"><b>Observações:</b></td>' SKIP
                               
    '      <td colspan="3">' Customer.Comments '</td>' SKIP
                               
    '   </tr>' SKIP
                               
    '</table>' SKIP.
                     
    END.
           
    END.

    {&
    out'</div>' SKIP.

    {&
    out'</body>' SKIP
           
    '</html>' SKIP(1).

    Nosso programa consulta-cliente já possui agora, então, a habilidade de abrir a tela de zoom.


    Continua...


    Última edição: Janeiro 19, 2014
  6. Agnaldo

    Agnaldo Membro Ativo

    Vamos agora, no programa de zoom (zoom-clientes.p) colocar o recurso de poder selecionar um registro.
    Usaremos aqui o que vimos no tópico 007, onde tinhamos uma listagem com um link sobre o código do cliente. Algo como:
    PHP:
    '<td align="center"><a href="javascript:fechaZoom(~'' Customer.Cust-Num '~')">' Customer.Cust-Num FORMAT "9999" '</a></td>' SKIP
    Estamos chamando a função Javascript fechaZoom (ainda vamos escreve-la) passando para ela o código do cliente.
    E a função teria algo assim
    Código:
    <script language="Javascript">
        function fechaZoom(valor)
            {
                window.opener.document.form.codigo.value = valor;
                window.opener.document.form.submit();
                window.close();
            }
    </script>
    
    Onde:
    Pegamos o valor do código e passamos para a "janela chamadora" (window.opener).
    Executamos o submit da janela chamadora (equivalente a clicar no botão pesquisar)
    Fechamos a janela corrente, que é janela de zoom.

    Aqui o código do programa zoom-cliente.
    PHP:
    /*
    *
    * zoom-clientes.p
    *
    */

    DEFINE VARIABLE limiteDaPagina AS INTEGER INITIAL 10.
    DEFINE VARIABLE contaRegistros 
    AS INTEGER.
    DEFINE VARIABLE opcao          AS CHARACTER.
    DEFINE VARIABLE ponteiro       AS CHARACTER.
    DEFINE VARIABLE posicao        AS CHARACTER.
    DEFINE VARIABLE corDeFundo     AS CHARACTER.
    DEFINE QUERY q1 FOR Customer SCROLLING.

    /* Include com as funcionalidades web */
    src/web/method/wrap-cgi.}

    /* Gera o header html */
    output-content-type("text/html").

    /* Abre a página html */
    {&out'<html>' SKIP
           
    '<head>' SKIP
           
    '<title>Exemplo de paginação</title>' SKIP
           
    '</head>' SKIP
           
    '<body>' SKIP(1).


    {&
    out'<script language="Javascript">' SKIP
           
    '    function fechaZoom(valor)' SKIP
           
    '        ~{' SKIP
           
    '            window.opener.document.form.codigo.value = valor;' SKIP
           
    '            window.opener.document.form.submit();' SKIP
           
    '            window.close();' SKIP
           
    '        }' SKIP
           
    '</script>' SKIP(1).


    ASSIGN opcao    GET-VALUE("opcao").
           
    ponteiro GET-VALUE("ponteiro").


    OPEN QUERY q1 FOR EACH Customer NO-LOCK INDEXED-REPOSITION.

    GET FIRST q1 NO-LOCK.
    IF 
    NOT AVAILABLE Customer
       THEN
           
    {&out'<h1>Tabela esta vazia</h1>' SKIP.
       ELSE
           DO:
              CASE 
    opcao:
                  
    WHEN "primeiro" THEN
                       
    DO:
                          
    GET FIRST q1 NO-LOCK.
                          
    ASSIGN posicao "inicio".
                       
    END.
                  
    WHEN "ultimo" THEN
                       
    DO:
                          
    GET LAST q1 NO-LOCK.
                          
    REPOSITION q1 BACKWARDS limiteDaPagina.
                          
    GET NEXT q1 NO-LOCK.
                          
    ASSIGN posicao "final".
                       
    END.
                  
    WHEN "proximo" THEN
                       
    DO:
                          
    REPOSITION q1 TO ROWID TO-ROWID(ponteiroNO-ERROR.
                          
    REPOSITION q1 FORWARD (limiteDaPagina 1).
                          
    GET NEXT q1 NO-LOCK.
                          IF 
    NOT AVAILABLE Customer
                             THEN
                                 
    DO:
                                    
    GET LAST q1 NO-LOCK.
                                    
    REPOSITION q1 BACKWARDS limiteDaPagina.
                                    
    GET NEXT q1 NO-LOCK.
                                    
    ASSIGN posicao "final".
                                 
    END.
                             ELSE
                                 DO:
                                    
    REPOSITION q1 TO ROWID TO-ROWID(ponteiroNO-ERROR.
                                    
    REPOSITION q1 FORWARD 1.
                                    GET NEXT q1 NO
    -LOCK.
                                 
    END.
                       
    END.
                  
    WHEN "anterior" THEN
                       
    DO:
                          
    REPOSITION q1 TO ROWID TO-ROWID(ponteiroNO-ERROR.
                          
    REPOSITION q1 BACKWARDS ((limiteDaPagina 2) - 1).
                          
    GET PREV q1 NO-LOCK.
                          IF 
    NOT AVAILABLE Customer
                             THEN
                                 ASSIGN posicao 
    "inicio".
                          
    GET NEXT q1 NO-LOCK.
                       
    END.
                  
    OTHERWISE
                       
    DO:
                          
    GET FIRST q1 NO-LOCK.
                          
    ASSIGN posicao "inicio".
                       
    END.
              
    END CASE.

              {&
    out'<div align="center">' SKIP
                     
    '   <table border="1" cellspacing="2" cellpadding="1" style="border-collapse:collapse">' SKIP
                     
    '      <tr bgcolor="#FFFFCC">' SKIP
                     
    '         <td><b>Código</b></td>' SKIP
                     
    '         <td><b>Nome do cliente</b></td>' SKIP
                     
    '      </tr>' SKIP.
              DO WHILE 
    AVAILABLE Customer AND contaRegistros limiteDaPagina:
                 
    ASSIGN ponteiro STRING(ROWID(Customer)).
                 IF 
    corDeFundo "#FFFFF0"
                    
    THEN
                        ASSIGN corDeFundo 
    "#EEEEE0".         
                    ELSE
                        
    ASSIGN corDeFundo "#FFFFF0".         
                 {&
    out'      <tr bgcolor="' corDeFundo '">' SKIP
                        
    '         <td align="center"><a href="javascript:fechaZoom(~'' Customer.Cust-Num '~')">' Customer.Cust-Num FORMAT "9999" '</a></td>' SKIP
                        
    '         <td>' Customer.Name '</td>' SKIP
                        
    '      </tr>' SKIP.
                 
    GET NEXT q1 NO-LOCK.
                 
    ASSIGN contaRegistros contaRegistros 1.
              END
    .

              {&
    out'      <tr>' SKIP
                     
    '         <td colspan="2" align="center">' SKIP.

              IF 
    NOT posicao "inicio"
                 
    THEN
                     
    {&out'            <a href="zoom-clientes.p?opcao=primeiro"><img src="/webforum4each/imagens/btn_primeiro.png" alt="Primeiro" border="0"></a>' SKIP
                            
    '            <a href="zoom-clientes.p?opcao=anterior&ponteiro=' ponteiro '"><img src="/webforum4each/imagens/btn_anterior.png" alt="Anterior" border="0"></a>' SKIP.

              IF 
    NOT posicao "final"
                 
    THEN
                     
    {&out'            <a href="zoom-clientes.p?opcao=proximo&ponteiro=' ponteiro '"><img src="/webforum4each/imagens/btn_proximo.png" alt="Proximo" border="0"></a>' SKIP
                            
    '            <a href="zoom-clientes.p?opcao=ultimo"><img src="/webforum4each/imagens/btn_ultimo.png" alt="Ultimo" border="0"></a>' SKIP.

              {&
    out'         </td>' SKIP
                     
    '      </tr>'.

              {&
    out'   </table>' SKIP
                     
    '</div>' SKIP.
           
    END.


    /* Fecha a página html */
    {&out'</body>' SKIP
           
    '</html>' SKIP(1).


    Curtiu?
    Até o próximo post.​
    Última edição: Janeiro 21, 2014
    liliane curtiu isso.

Compartilhe esta Página