Fórum Deletar em cascata no Delphi 5 e banco Firebird 2.0? #328783
06/09/2006
0
Olah pessoal, nao sei seh eh aqui no forum do Delphi ou no do Firebird que devo postar essa duvida, mas, estou querendo deletar em cascata usando firebird, e nao sei como fazer ainda.
Tipo na tabela pai (sind2) tenho um campo chamado matricula PK e na tabela filha (corrente) tambem tenho o mesmo campo FK
Indices:
Na tabela pai criei uma unique chamada
UNQ_MATR
e Na tabela filha criei uma chave secundaria chamada
FK_CORRENTE_1
Agora preciso ao deletar um numero de matricula na tabela pai(SIND2) automaticamente apague a matricula da tabela filha (CORRENTE) independente dos lançamentos na tabela filha, deve deletar tudo.
Fiz o seguinte codigo em um no evento de um button para deletar na tabela pai
Aqui neste codigo nao estou conseguindo deletar nada, ou seja diz que excluiu, mais nao exclui nada, veja que uso a clausula where com o campo e e1.text(edit1.text) no edit o codigo que eu digitar deve ser excluido, mais nao esta acontecendo nada.
Na parte do IBExpert coloquei esse script
Mais aparece o erro de script
[b:f3d7747149]Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 22.
constraint.[/b:f3d7747149]
Agradeço a ajuda de todos
Abraços
Adriano.
Tipo na tabela pai (sind2) tenho um campo chamado matricula PK e na tabela filha (corrente) tambem tenho o mesmo campo FK
Indices:
Na tabela pai criei uma unique chamada
UNQ_MATR
e Na tabela filha criei uma chave secundaria chamada
FK_CORRENTE_1
Agora preciso ao deletar um numero de matricula na tabela pai(SIND2) automaticamente apague a matricula da tabela filha (CORRENTE) independente dos lançamentos na tabela filha, deve deletar tudo.
Fiz o seguinte codigo em um no evento de um button para deletar na tabela pai
procedure TFExcluirAssoc.BtExcluirClick(Sender: TObject); var ok: boolean; begin if trim(e1.text)=´´ then begin showmessage(´Selecione a ID do Associado que vc deseja excluir´); end else if application.messagebox(Pchar(´Deseja Excluir este Lançamento:´ + #13+ dm.ibq1.FieldByName(´Matricula´).AsString +´ ´+ 13+ dm.ibq1.FieldByName(´associado´).AsString), Pchar(´Excluir Dados´+Self.Caption), MB_ICONQUESTION + MB_YESNO) = IDYES then begin try //começo co except unie o laço with dm.ibq1 do begin close; sql.clear; sql.add(´delete from sind2´); //codigo SQL para deletar linha sql.add(´where matricula = ´+quotedstr(e1.text)+´´); ExecSQL; end; except application.MessageBox(´Erro na Exclusão! Tente Novamente!´,´Aviso´,mb_ok+mb_iconexclamation); ok:=false; end; // final do except if ok then begin dm.ibt2.Commit; //comitar o lançamento dm.ibq1.open; sbar.SimpleText := ´Linha Excluída...´; end else begin dm.ibt2.Rollback; sbar.SimpleText := ´Abortado...´; end; end; end;
Aqui neste codigo nao estou conseguindo deletar nada, ou seja diz que excluiu, mais nao exclui nada, veja que uso a clausula where com o campo e e1.text(edit1.text) no edit o codigo que eu digitar deve ser excluido, mais nao esta acontecendo nada.
Na parte do IBExpert coloquei esse script
alter table corrente constraint fk_corrente_1 //fk_corrente_1 eh a FK foreign key (matricula, associado) references sind2(matricula, associado) on delete CASCADE
Mais aparece o erro de script
[b:f3d7747149]Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 22.
constraint.[/b:f3d7747149]
Agradeço a ajuda de todos
Abraços
Adriano.
Adriano_servitec
Curtir tópico
+ 0
Responder
Posts
06/09/2006
Adriano_servitec
Pessoal, me desculpe, foi uma grande distraçao minha aqui, o edit nao estava localizando o associado certo conforme eu digitava o numero da ID do mesmo. Por isso nao excluia o associado.
Por um motivo de eu nao ter colocado um LOCATE tive esse problema, pois coloquei na linha do MESSAGEBOX o nome e o numero da matricula do associado, mais nao excluia soh me mostrava, poir isso o erro.
Me desculpe mesmo, ja resolvi meu problema.
Por um motivo de eu nao ter colocado um LOCATE tive esse problema, pois coloquei na linha do MESSAGEBOX o nome e o numero da matricula do associado, mais nao excluia soh me mostrava, poir isso o erro.
Me desculpe mesmo, ja resolvi meu problema.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)