Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wilsoncrescencio

Porque não está deletando em sql?

Recommended Posts

Bom dia a todos...

Delphi7 + ADOConnection + BD ACCESS

 

Estou utilizando a seguinte maneira para deletar os dados de uma tabela:

procedure TF_Simulado_vis.ApagarClick(Sender: TObject);
begin
//////////////apagar dados gravados nas tabelas: matricula, pontos e e simulado /////////////////
ADQ_Visual.Open;
ADQ_Visual.Active := true;
ADQ_Visual.SQL.Add('SELECT aluno.nome, materias.*, total.*, simulado.simulado');
ADQ_Visual.SQL.Add('DELETE FROM materias, total, simulado');
ADQ_Visual.SQL.Add('WHERE aluno.nome = "'+DBedit1.text+'"');
ADQ_Visual.Close;
ADQ_Visual.SQL.Clear;
ADQ_Visual.Open;
ADQ_Visual.Active := true;
  end;

Não está deletando e sim mostrando um erro: "EDAtaBAseError whith message 'ADQ_Visual: Missing SQL property'.

 

Alguém sabe me dizer o que estou fazendo de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

'SELECT aluno.nome, materias.*, total.*, simulado.simulado'

'DELETE FROM materias, total, simulado'

'WHERE aluno.nome = "'+DBedit1.text+'"'

que confusão é essa que você colocou aí?

 

faz assim

delete from materiais where nome = "'+DBedit1.text+'"'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... tentei o que você me recomendou dessa maneira:

 

ADQ_Visual.Close;
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM materias, total, simulado WHERE nome = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);

"Especifique a tabela que contem os registros que você deseja excluir"

 

Como devo proceder?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... tentei o que você me recomendou dessa maneira:

 

ADQ_Visual.Close;
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM materias, total, simulado WHERE nome = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);

"Especifique a tabela que contem os registros que você deseja excluir"

 

Como devo proceder?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que é o seguinte, você está tentando excluir dados de três tabelas ao mesmo tempo e quer excluir onde o campo nome for igual a dbedit1.text,

o banco não está sabendo localizar o campo nome.

 

Esse campo nome tem na tabela materiais? na tabela total? e na tabela simulado?

 

talvez dê para fazer assim

DELETE FROM materias, total, simulado 
WHERE materias.nome = "'+DBedit1.text+'"
OR total.nome = "'+DBedit1.text+'"
OR simulado .nome = "'+DBedit1.text+'"

mas o que dá certo é fazer três comandos diferentes

ADQ_Visual.Close;
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM materias WHERE nome = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM total WHERE nome = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM simulado WHERE nome = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu explicar direito:

 

Eu tenho uma tabela chamada aluno que tem o campo nome, chave primaria aluno_id

 

Esta tabela se relaciona com as outras: materias, total e simulado...todas com o campo: aluno_id

 

O que quero é apagar os dados das tabelas relacionadas com a tabela aluno

Compartilhar este post


Link para o post
Compartilhar em outros sites

então troca o 'nome' por 'id_aluno'

ADQ_Visual.Close;
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM materias WHERE id_aluno = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM total WHERE id_aluno = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);
ADQ_Visual.SQL.Clear;
ADQ_Visual.SQL.Add('DELETE FROM simulado WHERE id_aluno = "'+DBedit1.text+'"');
ADQ_Visual.ExecSQL;);

se você não tem o id_aluno, só o nome, pode fazer um select para pegar o id_aluno e jogar numa variável

e no delete comparar o id_aluno das tabelas com a variável

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.