Descobrir o nome do campo chave da tabela em run time
Olá pessoal!
Estou com um problema em um projeto aqui na empresa.
Estou implementando um registro de LOG nesse projeto, e o problema é que alguns dos procedimentos que preciso registrar o LOG, foram feitos de formas abstratas para que possam ser usados em varios momento e em diferentes tabelas
portanto preciso de uma maneira de descobrir qual o campo que é chave primaria na tabela passada como parameto
obs:
Estou usando delphi7 e banco de dados access
estou usando adotable para conectar
desde ja agradeço
t++
Estou com um problema em um projeto aqui na empresa.
Estou implementando um registro de LOG nesse projeto, e o problema é que alguns dos procedimentos que preciso registrar o LOG, foram feitos de formas abstratas para que possam ser usados em varios momento e em diferentes tabelas
portanto preciso de uma maneira de descobrir qual o campo que é chave primaria na tabela passada como parameto
obs:
Estou usando delphi7 e banco de dados access
estou usando adotable para conectar
desde ja agradeço
t++
Douglas Maicon
Curtidas 0
Respostas
Leonardo Xavier
12/03/2012
como é o arquivo gerado, que é lido pelo seu sistema?
GOSTEI 0
Douglas Maicon
12/03/2012
como é o arquivo gerado, que é lido pelo seu sistema?
Estou armazenado diretamente no Banco de Dados (Criei uma tabela chamada AuditoriaAtividades para este fim, --- pq ja tinha uma tabela chamada LOG que armazena os acessos dos usuarios de todas as filiais)
procedure excluir(var tabela : tadotable);
begin
if dados_principal.exc then
if messagedlg(TEM CERTEZA QUE DESEJA EXCLUIR O REGISTRO ATUAL?, mtConfirmation ,[mbyes,mbno],0) = mryes then
begin
if tabela.RecordCount > 0 then
begin
tabela.Delete;
showmessage(Registro excluído com êxito);
end;
end;
end;Como podem ver na linha de codigo acima, este procedimento pede uma tabela como parametro e usa tabela.delete para excluir o registro atual da tabela, o problema é que preciso implementar para registrar a ação do func logado (esta rotina ja esta pronta) mas preciso saber em qual tabela e qual registro esta sendo excluido para armazenar na tabela AuditoriaAtividades
da forma que esta a procedure pode estar sendo chamado por exemplo para excluir um cliente ou como tambem para excluir uma parcela ou registro do caixa
se tiver alguma maneira de descobrir qual é o campo chave da tabela(parametro) ou se alguem tiver uma outra solução estou à disposição para trocar ideias
valeu galera ate maissss
GOSTEI 0
Leonardo Xavier
12/03/2012
coloque um for ente o cif e o tabela delete...
for x=1 to datamodule.tabela.count do begin
if x=tabela.recordnum then begin
..grava seus dados na tabela desejada
end;
end;
for x=1 to datamodule.tabela.count do begin
if x=tabela.recordnum then begin
..grava seus dados na tabela desejada
end;
end;
GOSTEI 0
Douglas Maicon
12/03/2012
coloque um for ente o cif e o tabela delete...
for x=1 to datamodule.tabela.count do begin
if x=tabela.recordnum then begin
..grava seus dados na tabela desejada
end;
end;
for x=1 to datamodule.tabela.count do begin
if x=tabela.recordnum then begin
..grava seus dados na tabela desejada
end;
end;
Nao deu certo Leonardo, mas valeu a intensão
optei por outra solução:
Alterar a procedure solicitando não so o nome da tabela como tambem o valor do campo chave que está sendo excluido
a assinatura do procedimento ficou da seguinte forma:
procedure excluir(var tabela : tadotable; campo_PK : integer);
abraços até a proxima
GOSTEI 0