Fórum Alterar todos valores qdo alterar a chave primária #257711
09/11/2004
0
Boa tarde pessoal,
estou finalizando um sisteminha aqui mas estou esbarrando na seguinte parte..
a pessoa cadastra sua notafiscal e seus respectivos cuponsfiscais
na tabela cupomfiscal ligo através do mastersource cuponsfiscais a notafiscal..
o cliente quer poder alterar o número da nota.. que no meu caso é a chave primária e o campo de ligação com a tabela cuponsfiscais..
acontece que qdo ele muda cuponsfiscais continua com o mesmo número de antes... mesmo que eu execute essa parte..
rocedure TFrmNotasFiscais.btngravarnotaClick(Sender: TObject);
begin
Try
begin
If nota <> Ednotafiscal.text then
begin
While not Dtmdb.Cupomfiscal.Eof do
begin
Dtmdb.Cupomfiscal.Edit;
Dtmdb.CupomfiscalNotafiscal.Value:= nota;
Dtmdb.Cupomfiscal.Post;
Dtmdb.Cupomfiscal.Next;
end;
end;
Dtmdb.NotaFiscal.Post;
Dtmdb.DBCombustivel.Commit;
Dtmdb.NotaFiscal.Refresh;
HabilitaNota;
CBlocal.DragMode:= dmautomatic;
end
except
begin
Dtmdb.DBCombustivel.Rollback;
Showmessage(´Ocorreu algum erro durante a gravação!´);
HabilitaNota;
end;
end;
end;
como posso resolver isso
valeu..
Eric
estou finalizando um sisteminha aqui mas estou esbarrando na seguinte parte..
a pessoa cadastra sua notafiscal e seus respectivos cuponsfiscais
na tabela cupomfiscal ligo através do mastersource cuponsfiscais a notafiscal..
o cliente quer poder alterar o número da nota.. que no meu caso é a chave primária e o campo de ligação com a tabela cuponsfiscais..
acontece que qdo ele muda cuponsfiscais continua com o mesmo número de antes... mesmo que eu execute essa parte..
rocedure TFrmNotasFiscais.btngravarnotaClick(Sender: TObject);
begin
Try
begin
If nota <> Ednotafiscal.text then
begin
While not Dtmdb.Cupomfiscal.Eof do
begin
Dtmdb.Cupomfiscal.Edit;
Dtmdb.CupomfiscalNotafiscal.Value:= nota;
Dtmdb.Cupomfiscal.Post;
Dtmdb.Cupomfiscal.Next;
end;
end;
Dtmdb.NotaFiscal.Post;
Dtmdb.DBCombustivel.Commit;
Dtmdb.NotaFiscal.Refresh;
HabilitaNota;
CBlocal.DragMode:= dmautomatic;
end
except
begin
Dtmdb.DBCombustivel.Rollback;
Showmessage(´Ocorreu algum erro durante a gravação!´);
HabilitaNota;
end;
end;
end;
como posso resolver isso
valeu..
Eric
Eric.miranda
Curtir tópico
+ 0
Responder
Posts
09/11/2004
Delphi32
Para fazer isso você pode criar uma chave estrangeira na sua tabela detalhe. Veja o código:
Aquela parte do código onde diz ´ON UPDATE CASCADE´ é a que faz com que o BD atualizar os detalhes de acordo com os registros do mestre.
Nesse exemplo, o ´ON DELETE´ faz com que quando você deletar um mestre o BD deleta os detalhes automaticamente para você.
Qualquer dúvida poste aqui de novo...
Até
ALTER TABLE "TABELA_DETALHE" ADD CONSTRAINT "FK_NOMEDACONSTRAINT" FOREIGN KEY ("CAMPO_CHAVE_DA_TABELA_DETALHE") REFERENCES "TABELA_MESTRE" ("CAMPO_CHAVE_DA_TABELA_MESTRE") ON UPDATE CASCADE ON DELETE CASCADE;
Aquela parte do código onde diz ´ON UPDATE CASCADE´ é a que faz com que o BD atualizar os detalhes de acordo com os registros do mestre.
Nesse exemplo, o ´ON DELETE´ faz com que quando você deletar um mestre o BD deleta os detalhes automaticamente para você.
Qualquer dúvida poste aqui de novo...
Até
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)