Fórum DELETE NOS REGISTROS DUPLICADOS DEIXANDO APENAS UM REGISTRO #590669

18/01/2018

0

BOM DIA ,
ESTOU COM UM PROBLEMA ESTOU TENTANDO EXCLUIR OS REGISTROS DUPLICADOS ,
ESTOU USANDO O TQUERY NO DELPHI , POREM TODOS OS SCRIPTS SQL QUE ESTOU USANDO
ELE NAO ACEITA DA ERRO .
ALGUEM SABE UM SCRIPT QUE EU POSSA USAR QUE IRA FUNCIONAR???
Lucas Domiciano

Lucas Domiciano

Responder

Post mais votado

18/01/2018

Coloca o nome dos componentes TQuery corretamente abaixo e veja se funciona:

var
vTel : string;
begin
Query1.Sql.Clear;
Query1.Sql.Add(' SELECT * FROM CONTATOS ORDER BY TEL_CLIENTE ');
Query1.Open;

vTel := '';

Query1.First;
while (not Query1.Eof) do
begin
if (vTel = Query1.FieldByName('TEL_CLIENTE').AsString) then
begin
Query2.Sql.Clear;
Query2.Sql.Add(' DELETE FROM CONTATOS WHERE COD_CONTATO = ' + Query1.FieldByname('COD_CONTATO').AsString );
Query2.ExecSql;
end;

vTel := Query1.FieldByName('TEL_CLIENTE').AsString;

Query1.Next;
end;
end;

Felipe Souza

Felipe Souza
Responder

Gostei + 1

Mais Posts

18/01/2018

Felipe Souza

Bom dia Lucas, esta colocando o script diretamente no componente TQuery ou fazendo um add manualmente ? Poderia postar o scritp que esta usando ? Qual banco de dados esta usando ? Ja vinculou a conexao do banco ao componente TQuery ?
Responder

Gostei + 0

18/01/2018

Lucas Domiciano

ESTOU FAZENDO ADD MANUALMENTE . USANDO O BANCO DATABASE DESKTOP , E FIZ A CONEXAO .
ESTOU FAZENDO UM SELECT PRIMEIRO BUSCANDO TODOS OS REGISTROS DUPLICADOS , PARA DEPOIS FAZER O DELETE .
ESSE É O SCRIPT DO SELECT QUE TO FAZENDO.
SELECT TEL_CLIENTE , COUNT(TEL_CLIENTE) FROM CONTATOS GROUP BY TEL_CLIENTE HAVING COUNT(TEL_CLIENTE)>1;
Responder

Gostei + 0

18/01/2018

Felipe Souza

Depois de ter o resultado desse Select, esta fazendo uma nova consulta para o delete ?
Responder

Gostei + 0

18/01/2018

Felipe Souza

Esta usando um novo TQuery para fazer o delete desses telefones duplicados ?
Responder

Gostei + 0

18/01/2018

Lucas Domiciano

nao uso o mesmo , estou usando o do select no onShow e depois criando outra sql no mesmo TQuery no evento do botao , mas eu nao estou sabendo fazer o script do delete , para excluir e deixar apenas um registro.
Responder

Gostei + 0

18/01/2018

Felipe Souza

usando o mesmo nao vai rolar, porque inutiliza a consulta anterior que voce fez se ela nao estiver sendo salva em memoria. Consegue me mandar a estrutura dessa tabela em banco pra eu ver as colunas e as chaves dela ? Imagino que o algoritmo deva ser um pouco mais trabalhado pra nao excluir todos os telefones, ao invés de excluir somente os duplicados.
Responder

Gostei + 0

18/01/2018

Lucas Domiciano

os campos do banco são
Table CONTATOS(
COD_CONTATO primary key
NOME_CLIENTE
TEL_CLIENTE
EMAIL
ENDERECO
TEL_CLIENTE
SITUACAO )
Responder

Gostei + 0

18/01/2018

Lucas Domiciano

mas ele vai deixar um registro , e apagar os duplicados?? ou vai apagar todos os registros , que tenha esse telefone que sera passado ?
Responder

Gostei + 0

18/01/2018

Felipe Souza

Fazendo o teste de mesa aqui, vai deixar sempre a primeira ocorrência de cada telefone na tabela. Mas por via das dúvidas faça o backup da mesma antes de fazer um teste.
Responder

Gostei + 0

18/01/2018

Felipe Souza

Deu certo ?
Responder

Gostei + 0

19/01/2018

Lucas Domiciano

DEU CERTO , OBRIGADO !
Responder

Gostei + 0

19/01/2018

Lucas Domiciano

ESTOU COM UMA OUTRA DUVIDA , ELE TA DELETANDO TELEFONES EM BRANCO EU NAO QUERIA , COMO FARIA PARA ISSO NAO ACONTECER?
Responder

Gostei + 0

19/01/2018

Lucas Domiciano

JA CONSEGUI RS !
Responder

Gostei + 0

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

Aceitar