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

004 - Mostrando um registro

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

  1. Agnaldo

    Agnaldo Membro Ativo

    Tempo estimado de leitura: menos de 5 minutos

    A programação para web é, do ponto de vista de pesquisar dados do banco, igual ao que já fazemos no caracter ou no gráfico.
    Já sabemos que {&out} é o "comando" que usamos para mostrar algo. Porém podemos lançar mão de um outro pré-processor, chamado {&display}.
    {&display} faz o equivalente a um DISPLAY padrão, a saber, um saída formatada, como se tivéssemos um frame comum do caracter/gráfico.

    O programa abaixo:
    PHP:
    /* 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</title>' SKIP
           
    '</head>' SKIP
           
    '<body>' SKIP(1).

    /* Conteúdo da página html */
    FIND FIRST Customer NO-LOCK NO-ERROR.
    IF 
    NOT AVAILABLE Customer
       THEN
           
    {&out'Tabela esta vázia' SKIP.
       ELSE
           {&
    DISPLAYCustomer WITH 2 COLUMNS TITLE "Exemplo de Consulta".

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

    /* Fim do arquivo */
    Produz uma saída como esta:

    [​IMG]

    Podemos notar que é muito parecido com o frame padrão que é mostrado no caracter/gráfico.

    Obs:
    Sobre WebSpeed, o comando DISPLAY gera uma tela em branco.
    Sobre StarWeb FrameWork, tanto DISPLAY quanto {&display} têm o mesmo funcionamento que é mostrar os dados sem formatação alguma.
    Sobre o StarWeb FrameWork, para ter o efeito de frame, tanto com {&display} quanto com DISPLAY, deve-se gerar a tag HTML <pre> (pré-formatação).

    Nosso código, sobre StarWeb, seria ligeiramente diferente.
    PHP:
    /* 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</title>' SKIP
           
    '</head>' SKIP
           
    '<body>' SKIP(1).

    /* Conteúdo da página html */
    FIND FIRST Customer NO-LOCK NO-ERROR.
    IF 
    NOT AVAILABLE Customer
       THEN
           
    {&out'Tabela esta vázia' SKIP.
       ELSE
           DO:
              {&
    out'<pre>' SKIP.
              {&
    DISPLAYCustomer WITH 2 COLUMNS TITLE "Exemplo de Consulta".
              {&
    out'</pre>' SKIP.
           
    END.

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

    /* Fim do arquivo */
    Embora pareça prático e simples (e o é realmente), não é comum o uso de {&display} ou da tag <pre>, isso porque eles, normalmente, não permitem um melhor desenho da interface.
    Estamos lidando com HTML, o que por si só já exige de nós, programadores "desenhadores de telas", que confeccionemos uma interface um pouco mais elegante.

    O uso de uma tabela (table) do HTML ajuda nesse ponto.
    Abaixo o mesmo código, mas fazendo o "display" dos dados usando {&out} e usando o recurso de tabelas do HTML.
    PHP:
    /* 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</title>' SKIP
           
    '</head>' SKIP
           
    '<body>' SKIP(1).

    /* Conteúdo da página html */
    FIND FIRST Customer NO-LOCK NO-ERROR.
    IF 
    NOT AVAILABLE Customer
       THEN
           
    {&out'Tabela esta vázia' SKIP.
       ELSE
           DO:
              {&
    out'<table border="0" cellspacing="1" cellpadding="1" width="100%">' SKIP
                     
    '   <tr>' SKIP
                     
    '      <td colspan="4" align="center" bgcolor="#FFFFCC"><strong>Registro do cliente ' Customer.Cust-Num '</strong></td>' SKIP
                     
    '   <tr>' SKIP
                     
    '   <tr>' SKIP
                     
    '      <td align="right"><strong>Nome:</strong></td>' SKIP
                     
    '      <td colspan="3">' Customer.Name '</td>' SKIP
                     
    '   </tr>' SKIP
                     
    '   <tr>' SKIP
                     
    '      <td align="right"><strong>Endereço:</strong></td>' SKIP
                     
    '      <td colspan="3">' Customer.Address (IF Customer.Address2 <> '' THEN (', ' Customer.Address2) ELSE '''</td>' SKIP
                     
    '   </tr>' SKIP
                     
    '   <tr>' SKIP
                     
    '      <td align="right"><strong>Cidade:</strong></td>' SKIP
                     
    '      <td>' Customer.City '</td>' SKIP
                     
    '      <td align="right"><strong>Estado:</strong></td>' SKIP
                     
    '      <td>' Customer.State '</td>' SKIP
                     
    '   </tr>' SKIP
                     
    '   <tr>' SKIP
                     
    '      <td align="right"><strong>Código postal:</strong></td>' SKIP
                     
    '      <td>' Customer.Postal-Code '</td>' SKIP
                     
    '      <td align="right"><strong>Telefone:</strong></td>' SKIP
                     
    '      <td>' Customer.Phone '</td>' SKIP
                     
    '   </tr>' SKIP
                     
    '   <tr>' SKIP
                     
    '      <td align="right"><strong>Contato:</strong></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"><strong>Representante:</strong></td>' SKIP
                            
    '      <td colspan="3">' Customer.Sales-Rep ' - ' SalesRep.Rep-Name '</td>' SKIP
                            
    '   </tr>' SKIP.
                 ELSE
                     {&
    out'   <tr>' SKIP
                            
    '      <td align="right"><strong>Representante:</strong></td>' SKIP
                            
    '      <td colspan="3">' Customer.Sales-Rep '</td>' SKIP
                            
    '   </tr>' SKIP.

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

           
    END.

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

    /* Fim do arquivo */
    Podemos notar que, apesar de dar um pouco mais de trabalho, temos uma tela bem mais agradável.

    [​IMG]



    Curtiu?
    Até o próximo post.

    Última edição: Janeiro 21, 2014
    weiss_sbs, ffranco e liliane curtiram isso.
  2. Agnaldo

    Agnaldo Membro Ativo

  3. Agnaldo

    Agnaldo Membro Ativo

    .

Compartilhe esta Página