BlackTDN Search

terça-feira, 11 de outubro de 2011

Protheus :: Advpl :: Dicas do Robson :: Como criar uma consulta específica utilizando os recursos do dicionário SXB

Robson Luiz nos passou mais uma dica:

“Como criar uma consulta específica utilizando os recursos do dicionário SXB – Consulta padrão.

O exemplo descrito abaixo é apenas para se ter uma idéia de como unir os mecanismos disponíveis. Neste exemplo será demonstrado como gravar o endereço lógico de um arquivo tipo MS-Word ou Adobe em um campo da tabela em questão.

  1. Crie um campo na tabela SA6 – Cadastro de Bancos; 
    • A6_CONTRAT – tipo caractere, tamanho 50; 
    • Crie uma consulta SXB da seguinte forma:

    sxb_1

    • Clique no botão Avançar e preencha a próxima tela da seguinte forma:

    sxb_2

    • Repare que no campo retorno há a menção somente da função U_SA6_01(). 
    • Clique no botão Finalizar para salvar os dados e vamos programar.
  2. Abra o DevStudio (IDE)
  3. Abra um novo arquivo e digite o seguinte programa:

    sxb_3

    • Salve este arquivo.
    • Anexe a um gerente de projetos do DevStudio.
    • Compile este programa.
  4. Coloque o ALIAS da consulta SXB no campo X3_F3 do campo SA6_CONTRAT.

É possível construir diversas soluções utilizando este recurso, porém o mais importante ressaltar que a consulta deverá ter sempre um retorno lógico, e se possível atribua valor ao campo dentro da rotina construída.

p/ Robson Luiz”

9 comentários:

  1. vlw a dica.
    estava precisando desta solução.
    o Fato de utilizar uma variável STATIC não torna esta soução um pouco confusa para dar manutenção mais tarde???

    ResponderExcluir
    Respostas
    1. ..confusa é a mente dos que se confundem com novidades!

      Open Your Mind!

      Excluir
  2. Totalmente Arrogante o comentário do colega acima, ainda posta anônimo que mostra a falta de coragem de expor suas opiniões...

    ResponderExcluir
  3. Realmente Evandro, totalmente arrogante, mas infelizmente exitem muitas pessoas assim, enfim, vamos seguir em frente.
    Kelven, a fato de utilizar uma variável com escopo STATIC no arquivo de programa e não nas funções é para atender as duas Function, pois assim é possível trabalhar com ela em momentos diferentes quando as funçõs forem acionadas. Boa Sorte! Robson Luiz (rleg).

    ResponderExcluir
  4. Bom Dia, mas sua solução apesar de Excelente pode ser Melhorada, ao invés de criar uma Variavel Static, faça como eu sempre fiz na Expressão coloque .T. e em Retorno coloque a Função u_SA6CONTRATO() entretanto com uma pequena modificação ao inves de retornar .T. coloque-a para Retornar o Valor Solicitado

    Exe.: Return SA6->A6_CONTRATO

    Posteriormente ficará muito mais fácil possíveis Manutenções e por experiencia própria o Protheus tem Problema em Respeita Escopo de Variáveis.

    PS. Outro Detalhe interessante e que quando se utiliza uma consulta especifica e você coloca uma Função independe da Tabela que esta sedo Utilizada em Tabela.
    Exemplo: Nesta Consulta Acima o Resultado de se Colocar SA6 será o Mesmo se Colocarmos AAA.

    ResponderExcluir
  5. Pessoal, alguém tentou essa solução (do Robson) com MVC?
    a Mesma tela funcionou em um mbrowse normal, mas no MVC da erro!!!!
    até o momento não consegui resolver o problema, acho q vou colocar um evento em uma tecla para ativar a janela!
    Se alguém tiver uma dica posta ae!
    vlw!!!

    ResponderExcluir
  6. Muchas gracias por tu conocimiento,

    Quede gratamente sorprendido como es que se puede manejar una consulta de está manera.

    Mil gracias!!!!

    ResponderExcluir