Senhores, Existe algum comando no progress que verifica se o registro que esta sendo editado na tela sofreu alguma alteração em algum campo ? Isso é para uma geração de log de alterações. Marcosoliv
Caro colega, Se você usa o EMS e está querendo controlar tabelas do produto, pode usar a tabela de dicionarios de dados e criar as triggers de dicionários comparando o <tabela>-new com a <tabela>-old (buffers) pelo comando BUFFER-COMPARE. Porém se não usa o EMS ou está querendo controlar tabelas especificas, fiz um exemplo que pode ajudar: Código: def var c-alteracao as character. def temp-table tt_emitente like emitente. find last emitente exclusive-lock no-error. /***** Antes de Salvar o registro, cria a tt com o registro atual *****/ empty temp-table tt_emitente. create tt_emitente. buffer-copy emitente to tt_emitente. /***** Altere o registro *****/ assign emitente.int-1 = random(5,10) emitente.dec-1 = random(5,10). /***** Depois Salvar o registro, compare a TT com o registro atual, os campos alterados serão mostrados na variavel c-alteração *****/ buffer-compare emitente to tt_emitente save c-alteracao. message emitente.cod-emitente skip emitente.int-1 skip(1) tt_emitente.cod-emitente skip tt_emitente.int-1 skip(1) "Campos Alterados: " c-alteracao view-as alert-box.
Só complementando o Eduardo, independente de utilizar o EMS ou não é possível fazer a verificação na trigger utilizando o buffer-old e buffer-new: Código: TRIGGER PROCEDURE FOR WRITE OF tabela NEW tabela-novo OLD tabela-antiga. def var c-alteracao as character. buffer-compare tabela-novo to tabela-antiga save c-alteracao. message "campos alterados: " c-alteracao view-as alert-box. Utilizando componentes dinâmicos (handles) é possível descobrir quais campos foram alterados e seus valores. Qualquer coisa posta mais detalhes. T+
Olá Galera, Obrigado pelas dicas... vou estar testando e depois complemento o post caso seja necessário. Marcosoliv