Fórum registrar acoes dos usuarios no uso do sistema #336545

21/01/2007

0

olha só pessoal


Gostaria de criar não sei e é plo trigger ou similar uma forma que registrasse toda açao dos usuarios nas tabelas como ´INCLUSAO,ALTERAÇAO,EXCLUSAO´ de preferencia em qual compo da tabela ele fez a açao.

estou com este problema aqui...


teria como?[/list]


Erivando

Erivando

Responder

Posts

21/01/2007

Aroldo Zanela

Colega,

Se estiver um SGBD, você pode fazer usando triggers, mas ficará dependente do banco de dados e sua portabilidade ficará comprometida. Uma alternativa é utilizar o manipulador de eventos BeforeAlgumaCoisa dos datasets ou descendentes. Terá uma performance inferior a primeira opção, porém, maior portabilidade.


Responder

Gostei + 0

21/01/2007

Erivando

[quote:cc331d5c52=´Aroldo Zanela´]Colega,

Se estiver um SGBD, você pode fazer usando triggers, mas ficará dependente do banco de dados e sua portabilidade ficará comprometida. Uma alternativa é utilizar o manipulador de eventos BeforeAlgumaCoisa dos datasets ou descendentes. Terá uma performance inferior a primeira opção, porém, maior portabilidade.[/quote:cc331d5c52]



Então amigo Zanela, poderei até criar uma tabela onde poderei estar marzenando todas as acoes executadas pelos usuarios com data horarios etc.. isso? para que a quaquer momento o administrador do sistema possa fazer filtros e pequisas sobre as açoes dos usuarios! Que vc acha?



Responder

Gostei + 0

22/01/2007

Macario

Olá.

Uma maneira de implementar um Log de ações é utilizar o evento BeforeUpdateRecord do DataSetProvider.

Na edição 51 da revista ClubeDelphi você encotrará um artigo sobre tema.

Qualquer coisa é so postar novamente.

[]´s 8)


Responder

Gostei + 0

22/01/2007

Aroldo Zanela

Colega,

Eu implementei isso num sistema há alguns anos usando um campo BLOB e armazenando em formato XML para qualquer tabela as ações antes de serem aplicadas.

Exemplo:

<log>
<tabela>clientes</tabela>
<acao>remoção</acao>
<campoA>DadosA</campoA>
<campoB>DadosB</campoB>
</log>


Neste exemplo, é possível saber qual ERA a informação armazenada em um determinado instante.


Responder

Gostei + 0

22/01/2007

Macario

Ola.

No BeforeUpdateRecord, é disponibilizado o Delta do DataSet onde temos acesso as variaveis NewValue e OldValue, com isso podemos manter o historico do registro.

Outro detalhe é que é possivel implementar uma rotina que grava apenas os campos efetivamente alterados.


[]´s


Responder

Gostei + 0

22/01/2007

Erivando

Olá. Uma maneira de implementar um Log de ações é utilizar o evento BeforeUpdateRecord do DataSetProvider. Na edição 51 da revista ClubeDelphi você encotrará um artigo sobre tema. Qualquer coisa é so postar novamente. []´s 8)


Obrigado Macario, eu tenho a revista fui verificar e achei bacana, irei adaptar a minha aplicação!


Responder

Gostei + 0

22/01/2007

Macario

Obrigado Macario, eu tenho a revista fui verificar e achei bacana, irei adaptar a minha aplicação!


Qualquer duvida post aqui novamente, eu fiz uso das dicas do artigo.


[]´s


Responder

Gostei + 0

24/01/2007

Francisco.riva1

Ola amigos,

DataSetProvider funciona legal ... agora como vcs resolveram quando existem relacionamentos mestre x detalhe (onde temos somente o log da tabela mestre) !?

Abraco.


Responder

Gostei + 0

24/01/2007

Macario

Olá.

É so usar o evento de cada DSP.

8)


Responder

Gostei + 0

25/01/2007

Francisco.riva1

Ola´ Macario,

O q estou dizendo e´ q quando ha´ um relacionamento mestre x detalhe, so´ existe um DSP para as duas tabelas.

Para a tabela mestre, tudo bem, funciona normalmente ... mas para a tabela detalhe (que nao tem um DSP) nao ha´ essa funcionalidade.

Em seus projetos vc nao tem esse tipo de relacionamento, se tiver faca o teste para ver, vc nunca tera´ a informacao das alteracoes da tabela Detalhe por nao ter um DSP pra ela.

Ainda nao sei como criar esse mesmo recurso nesse caso, vc tem ideia de como fazer (ou seja, fazer o mesmo controle que faz no DSP so´ q no CDS) ?

Obrigado.
Abracos.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar