Ultimo registro/exclusão

Delphi

29/07/2009

Deparei com o seguinte problema:

Tenho duas tabelas: (Processo e histórico)

Com relacionamento 1 Processo para muitos Historicos
ProcessoHistórico                             
================
COD_PROCESSOCOD_PROCESSO
NOMECOD_MOVIMENTACAO
SEXODATA
PROCESSOOBS
DATA_CADASTRO
STATUS

Gostaria de poder excluir na tabela Histórico, somente o último histórico de um determinado processo.
Não estou conseguindo resolver.


Edilsonlima

Edilsonlima

Curtidas 0

Respostas

Edilsonlima

Edilsonlima

29/07/2009

Corrigindo

Tabela Processo
===========
COD_PROCESSO
NOME
SEXO
PROCESSO
DATA_CADASTRO
STATUS



Tabela Histórico
==========
COD_PROCESSO
COD_MOVIMENTACAO
DATA
OBS


GOSTEI 0
Osocram

Osocram

29/07/2009

no Before Delete (não sei se vc esta na aplicação cliente, servidor ou banco) vc veja qual o o maior COD_MOVIMENTACAO e verifica se o registro que sendo removido é ele, se não for não deixa.

Corrigindo Tabela Processo =========== COD_PROCESSO NOME SEXO PROCESSO DATA_CADASTRO STATUS Tabela Histórico ========== COD_PROCESSO COD_MOVIMENTACAO DATA OBS



GOSTEI 0
Discorpio

Discorpio

29/07/2009

Bom dia a todos.

Uma simples instrução SQL

   Delete From Historico Where Cod_Processo = <valor> and Cod_Movimentacao = <valor>


Voce ainda pode optar além de deletar por número do processo, também pela data.

   Delete From Historico Where Cod_Processo = <valor> and Data = <valor>



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

29/07/2009

se você quiser apagar o último registro do histórico, sem precisar/se importar saber qual é:
delete from
  Historico
where
  Cod_Processo = <valor>
  and Cod_Movimentacao =
    (select
       Max(Cod_Movimentacao)
     from
       Historico
     where
       Cod_Processo = <valor>)


isso supondo que [i:8942881382]Cod_Movimentacao[/i:8942881382] seja o ID da tabela Historico.


GOSTEI 0
Edilsonlima

Edilsonlima

29/07/2009

Amigos,

Obrigado a todos pela ajuda.
Não fui muito claro anteriormente e esclareço agora:

O COD_MOVIMENTAÇÃO, não dá para servir como parâmetro, pois este também é um campo que está relacionado a uma outra tabela chamada MOVIMENTAÇÃO.
Segue imagem do relacionamento do banco.


Utilizo o ACCESS, Delphi 6, Componentes ADO, o banco é local


GOSTEI 0
Discorpio

Discorpio

29/07/2009

Boa tarde a todos.

Então neste caso, porque não fazer por data, e pegando a dica do nosso amigo Emerson, é só mudar o campo Cod_Movimentacao pelo campo Data, assim:

delete from
  Historico
where
  Cod_Processo = <valor>
  and Data =
    (select
       Max(Data)
     from
       Historico
     where
       Cod_Processo = <valor>)


Obviamente que a maior data corresponderá o último histórico do processo.


GOSTEI 0
POSTAR