Identificar campos e Conteudos automáticamente

(Rui [Geocad]) #1

Olá pessoal,

Estou criando uma função para aprimorar a segurança do sistema onde pretendo armazenar o NOME DO CAMPO e o VALOR que o Usuário alterou naquele campo.

Dessa forma, preciso de uma dica de como faço para quando um formulário for aberto (no Load do mesmo), executar uma função que possa percorrer o formulário e detectar todos os campos existentes (automáticamente, sem a necessidade de informar os nomes dos mesmos manualmente) e seus respectivos conteúdos e armazená-los numa variável de ARRAY.

Após um Insert ou Update dos dados (nos eventos onAfterInsert e onAfterUpdate), possa novamente repassar todos os campos, compará-los com os valores inicialmente armazenados no ARRAY e identifiar quais foram alterados.

Rui
GEOCAD

(Allan Medeiros) #2

Rui,
Pq vc não faz isso via log no banco?
Eu uso a seguinte estratégia:
Para uma tabela Cliente por exemplo eu crio a tabela LOG_Cliente com a mesma estrutura, mais os campos usuario, data e operacao.
O campo operação pode ser: “inserido”, “apagado”, “atualizado” ou “antigo”.
Nesta tabela eu guardo cada operação executada na tabela Cliente. Inclusão, exclusão e, para o caso de alteração eu guardo dois registros. O anterior (“antigo” e o novo “atualizado”).
Isso é implementado via trigger no banco de dados.
Espero ter ajudado.
[]s
Allan

(Haroldo) #3

eu usaria trigers no banco.