Como fazer para apagar dados em duas tabelas?

Delphi

06/11/2010

Amigos,          Como fazer o codigo para apagar o Aluno da tabela ALUNOTURMA e também apagar as notas referente as este aluno da tabela NOTAS, lembro que na tabela ALUNOTURMA tem o campo MATRICULA_ALUNO e na tabela NOTAS tem o campo MATRICULA_ALUNO_NOTAS os quais guardão a matricula do aluno, abaixo tenho o codigo que já está apagando o aluno. Mazo.
procedure TFrmCadTurDisc.BtnExcluirAlunoClick(Sender: TObject);
begin
        if not DmDados.IBQryAlunoTurma.IsEmpty then
  begin
    if Mensagem('Tem Certeza Que Deseja Excluir o Aluno da Turma?') then
    begin
       DmDados.IBQryAlunoTurma.Delete;        DmDados.IBQryAlunoTurma.Close;
       DmDados.IBQryAlunoTurma.Open;
    end;
  end
  else
    ShowMessage('Não existe nenhum Aluno na Turma para apagar!'); end;
Osmar

Osmar

Curtidas 0

Respostas

Rafael Ribeiro

Rafael Ribeiro

06/11/2010

Nos relacionamentos das tabelas, ao relacionar as chaves estrangeiras você tem que colocar "CASCADE" em updates e deletes.

Espero ter ajudado.

Rafael
GOSTEI 0
Osmar

Osmar

06/11/2010

Como faço Rafael,                             Uso Firebird e Ibexpert Delphi 7? Mazo
GOSTEI 0
Flavia Santos

Flavia Santos

06/11/2010

Qual ferramenta vc utiliza para criar seu banco de dados? No caso do IBExpert vc  pode alterar as colunas DELETE RULE da chave estrangeira da tabela NOTAS de NO ACTION para CASCADE, assim quando vc deletar dados da tabela Alunos, os dados relacionados na tabela Notas serão apagados automaticamente. Ou vc pode fazer tbm via código:

- Primeiro apaga a chave estrangeira anterior:

ALTER TABLE Tabela_de_Notas DROP CONSTRAINT NomeChaveEstrangeiraAtual;


- Depois cria uma nova com a opção de deletar em cascata:

ALTER TABLE NOTAS ADD CONSTRAINT FK_NOTAS FOREIGN KEY (MATRICULA_ALUNO_NOTAS) REFERENCES TURMA_ALUNO(MATRICULA_ALUNO) ON DELETE CASCADE
flw,
GOSTEI 0
Osmar

Osmar

06/11/2010

Agradeço a todos o problema já foi resolvido.   Osmar.
GOSTEI 0
POSTAR