Fórum Deletar registro no DBGrid #371992
05/07/2009
0
Mais uma vez deparei com um problema que não estou conseguindo resolver. O caso é o seguinte:
Tenho uma consulta que exibe o resultado em um DBGrid com a SQL que faz consulta em duas tabelas. A tabela PROCESSO e a tabela HISTORICO
SQL
SELECT PROCESSO.PROCESSO, PROCESSO.NOME,HISTORICO.COD_PROCESSO, HISTORICO.DATA, MOVIMENTACAO.NOME_MOVIMENTACAO, HISTORICO.OBS FROM PROCESSO INNER JOIN (MOVIMENTACAO INNER JOIN HISTORICO ON MOVIMENTACAO.COD_MOVIMENTACAO = HISTORICO.COD_MOVIMENTACAO) ON PROCESSO.COD_PROCESSO = HISTORICO.COD_PROCESSO ORDER BY PROCESSO.NOME
Até aí tudo bem, agora precisaria deletar um dos registros (da tabela HISTORICO) exibidos, dando um duplo clique sobre o registro na DBGid.
Quando efetuo o duplo clique tudo se processa como se estivesse sido deletado , mas não acontece.
Acredito ser pelo fato d a SQL fazer a consulta em duas tabelas, pois como teste fiz a consulta direta na tabela HISTORICO e aí é deletado normalmente.
Não posso fazer a consulta diretamente na tabela pois as informações que retornassem não seria nada apresentáveis para o usuário.
O código que utilizei foi o seguinte:
begin if MessageDlg (´tem certeza que deseja excluir a informacao?´,mtConfirmation,[mbYes,mbNo],0)= mrYes then begin DataModule2.ADOTHistorico.Delete; ShowMessage(´Movimento deletado com sucesso´); end;
[b:34a6bb90a5]Como posso remover um registro utilizando essa Query?[/b:34a6bb90a5]
Desde já agradeço aqueles que puderem ajudar.
Edilsonlima
Curtir tópico
+ 0Posts
05/07/2009
Steve_narancic
ADODelHistorio.close; ADODelHistorio.sql.clear; ADODelHistorio.sql.add(´Delete from HISTRORIO where COD_PROCESSO =:COD_PROCESSO AND COD_MOVIMENTACAO = :COD_MOVIMENTACAO´); ADODelHistorio.Parambyname(´COD_PROCESSO´).value := ADOTHistorico.fieldbyname(´COD_PROCESSO´).value; ADODelHistorio.Parambyname(´COD_MOVIMENTACAO´).value := ADOTHistorico.fieldbyname(´COD_MOVIMENTACAO´).value; ADODelHistorio.execsql;
Gostei + 0
05/07/2009
Edilsonlima
Antes de mais nada obrigado pela atenção.
Fiz exatamente como vc sugeriu, mas continua do mesmo jeito, as mensagens são exibidas como se houvesse deletado o registro porem no banco não acontece nada.
Ficou assim:
procedure TF_Consulta_Proc.DBGrid1DblClick(Sender: TObject); begin if MessageDlg (´Tem certeza que deseja excluir a informacao?´,mtConfirmation,[mbYes,mbNo],0)= mrYes then begin DataModule2.ADOQDelHistorico.close; DataModule2.ADOQDelHistorico.sql.clear; DataModule2.ADOQDelHistorico.sql.add(´Delete from HISTORICO where COD_PROCESSO =:COD_PROCESSO AND COD_MOVIMENTACAO = :COD_MOVIMENTACAO´); DataModule2.ADOQDelHistorico.Parameters.Parambyname(´COD_PROCESSO´).value := DataModule2.ADOTHistorico.fieldbyname(´COD_PROCESSO´).value; DataModule2.ADOQDelHistorico.Parameters.Parambyname(´COD_MOVIMENTACAO´).value := DataModule2.ADOTHistorico.fieldbyname(´COD_MOVIMENTACAO´).value; DataModule2.ADOQDelHistorico.execsql; ShowMessage(´Movimento deletado com sucesso´); end;
Não sei onde está o erro.
Gostei + 0
05/07/2009
Steve_narancic
DataModule2.ADOTHistorico.commit;
Gostei + 0
08/07/2009
Edilsonlima
Estiv viajado e sem acss cmputaores, só agora fiz o teste, mas está faltan uma declaração e não estou conseguindo.
[Error] fConsulta.pas(112): Undeclared identifier: ´commit´
aguardo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)