BlackTDN Search

sexta-feira, 14 de dezembro de 2012

BlackTDN :: Alterando o dicionário :: ON FLIGHT

 

images

 

Alguém aí arriscaria trocar a asa de um avião em pleno voô?
Pelo menos alguém em sua sã consciência nao faria isso.. e os loucos?

 

Realizando uma comparação ao fato acima, eis a porta aberta para alterações no dicionario em tempo de execução através do antigo e 'usual' campo formulas.

 

Participando de um projeto.. updates para lá, updates para cá.. então surge a necessidade de se fazer uma alteração na SX3, mas o acesso ao CFG é restrito ao pessoal da TI. Então testamos essa alteração usando o campo formulas, e para a surpresa de todos, foi possível alterar uma propriedade do dicionário, tornando um campo anteriormente como [V]isual para [A]lterável.

A sequencia de operações a ser seguida é:

  • Posiciona na tabela SX3 para o campo a ser alterado.
    MSGINFO(POSICIONE('SX3',2,'A1_NOME','X3_VISUAL'))

FORM1

  • Realiza o lock da tabela e exibe se conseguiu ou não.
    MSGINFO(CVALTOCHAR(RECLOCK('SX3')))

FORM2

  • Define o novo valor ao campo da X3
    SX3->X3_VISUAL := 'A' (importante usar o alias da tabela)

FORM3

  • Libera o lock realizado.
    DBUNLOCKALL()

FORM4

  • Veja que o campo que antes era V-Visual passou a ser A-Alterado.
    MSGINFO(POSICIONE('SX3',2,'A1_NOME','X3_VISUAL'))

FORM5

* A operação apresentada é bem sucedida para alterações que não são transportadas para o banco de dados.

** No projeto não adotamos essa solução para alteração! Foi um pensamento louco que acabou revelando essa falha, espero que a detentora do Produto tome as devidas providências em tempo.

[]’s,
OBona,

2 comentários:

  1. Eu fiz parte dessa manobra e vi ela funcionando. Muito bom! Não é à toa que essa cara, oBona, é considerado um dos MAIORES THE WORLD CHAMPIONS!!! Valeu Bona por mais uma força! Abs.

    ResponderExcluir
  2. A totvs já tomou providencias para esse tipo de situação, existe um parametro que desabilita execuções via "fórmulas", gambiarra das mais toscas, como de costume.

    ResponderExcluir