Como fazer para apagar dados em duas tabelas?
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;
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
Curtidas 0
Respostas
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
Espero ter ajudado.
Rafael
GOSTEI 0
Osmar
06/11/2010
Como faço Rafael,
Uso Firebird e Ibexpert Delphi 7?
Mazo
GOSTEI 0
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,
- 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
06/11/2010
Agradeço a todos o problema já foi resolvido.
Osmar.
GOSTEI 0