Fórum Auditoria com Clientdataset #403562
22/06/2011
0
Como seria o sql para cadastrar em uma tabela AUDITORIA todas as alterações realizadas nos registros de outras tabelas do banco, quando dado um ApplyUpdate().
Estou usando Delphi 2010, Firebird 2.1, dbExpress com Clientdataset.
Francisco Macedo
Curtir tópico
+ 0Posts
22/06/2011
Marco Salles
de cada clientdataSet que ser aatualizado ()
Porém vc pode da vários Applayupdates dentro de uma unica transação e desfazer todos os Applayupdares de
algo não sair da maneira que vc deseja
Se Tiver utilizando Insert/Delet/Updad em várias tabelas , também podera utilizar dentro de uma ùnica Transação,utilizando a nova classe TDBXTransaction do Delphi ( Versoes mais novas ,a partir do Delphi 2007)
Gostei + 0
24/06/2011
Rafael Mattos
tem uma revista sobre isso só não sei qual edição, que tem a função que Gera em XML o que foi alterado incluido e excluido
--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Gostei + 0
24/06/2011
Marco Salles
tem uma revista sobre isso só não sei qual edição, que tem a função que Gera em XML o que foi alterado incluido e excluido
entendi a questão de outro modo ( me parece que entendi do modo Errado )...
Mas de qualquer forma o Xml das alteraçoes não precisa de função , dá para acess-lo de modo direto .
Acho que é assim teria que olhar nos meus Bizus ..
ClientDataSet2.Data:=ClientDataSet1.Delta;
clientDataSet2.SaveToFile('xmlAlterado.xml',dfXMLUTF8);
se colocar um datasorce e um dbgrid ligado ao clientdataset2 da para ver as alterações
Gostei + 0
24/06/2011
Rafael Mattos
[code]
ClientDataSet2.Data:=ClientDataSet1.Delta;
clientDataSet2.SaveToFile('xmlAlterado.xml',dfXMLUTF8);
assim ele controla as alteração? os registro Excluido e Alterados?
Gostei + 0
24/06/2011
Marco Salles
[code]
ClientDataSet2.Data:=ClientDataSet1.Delta;
clientDataSet2.SaveToFile('xmlAlterado.xml',dfXMLUTF8);
assim ele controla as alteração? os registro Excluido e Alterados?
Tem que olhar nos meus bizuz ... Minhas anotações .. Mas quase que certeza que controla todos.
Sobre a matéria da revista que voce comentou eu tb li a matéria ... Tenho que procura-la a edição
"Maledita" fauta de tiempo....
Gostei + 0
24/06/2011
Rafael Mattos
Rotina
Procedure CreateLog(DataSet : TCustomClientDataSet);
var
S : String;
begin
// Usar o Log do Usuário
if not(DirectoryExists(DirLog)) then
CreateDir(DirLog);
with DataSet do
begin
SetOptionalParam('DATA',Date,True);
SetOptionalParam('HORA',Time,True);
SaveToFile( DirLog +Format(
' %s,%s,%s,%s,log.xml',[
GetOptionalParam('USUARIO'),
GetOptionalParam('TABELA'),
FormatDateTime('ddmmyyyy',Date),
FormatDateTime('hhnnss',Time)]));
end;
end;
No Evento GetDataSetProperties vc coloca o código
procedure TDMCliente.dspClienteGetDataSetProperties(Sender: TObject; DataSet: TDataSet; out Properties: OleVariant); begin Properties := VarArrayCreate([0,3], varVariant); Properties[0] := VarArrayOf(['USUARIO',NomeUsuario,True]); Properties[1] := VarArrayOf(['TABELA', IProviderSupport(DataSet).PSGetTableName,True]); Properties[2] := VarArrayOf(['DATA',Date,True]); Properties[3] := VarArrayOf(['HORA',Time,True]); end;
e no evento UpdateData do DataSetProvider colo o código
procedure TDMCliente.dspClienteUpdateData(Sender: TObject; DataSet: TCustomClientDataSet); begin CreateLog(DataSet); end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)