Como inserir dados em várias tabelas ao mesmo tempo

Delphi

04/06/2013

Caros.

Como inserir dados em várias tabelas ao mesmo tempo usando Delphi 7, Firebird 2.5, DBExpress.?

Exemplo:

Uma venda que deve ser registrada na tabela de vendas, na tabela de Contas a Receber e na tabela de Estoque(baixa) ?

l) Dentro de uma transação - fazendo três inserts e por fim um AppliUpDates()?
2) Stored Procedure ??

Ou outra forma ? e Qual a melhor em termos de segurança e performance ??

Obrigado.

Romario
Romario Kilian

Romario Kilian

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

04/06/2013

Basicamente você deve usar um bloco de try except usando transação, sendo assim ou tudo é executado ou nada.

Exemplo:
try
  if not Transacao.InTransaction then
    Transacao.StartTransaction;
  //Insere venda
  //Insere Itens da Venda
  //Insere Contas a Receber
  //Insere Caixa
  //Insere mais o que tiver de inserir
  Transacao.CommitRetaining;  
except
  Transacao.RollbackRetaining
end;


Eu não uso ApplyUpdate, pois utilizo componentes query com transação.
GOSTEI 0
Romario Kilian

Romario Kilian

04/06/2013

Obrigado, Claudia, por responder.

Só não entendi "não uso ApplyUpDate e uso query com transação". Isso significa que você usa os componentes da palheta IBX (Interbase) ?? e não a palheta DBExpress ?? é isso ??

Obrigado.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

04/06/2013

Uso os componentes da paleta Interbase, e o ApplyUpdates se torna inútil já que eu trabalho com transações, pois o que estiver dentro do bloco try except ou é tudo executado, ou nada. Nunca precisei usar ApplyUpdates pra nada e tenho sistemas grandes feitos em Delphi com Firebird.

Obrigado, Claudia, por responder.

Só não entendi "não uso ApplyUpDate e uso query com transação". Isso significa que você usa os componentes da palheta IBX (Interbase) ?? e não a palheta DBExpress ?? é isso ??

Obrigado.
GOSTEI 0
Romario Kilian

Romario Kilian

04/06/2013

Ola Claudia.

Tudo entendido e compreendido.

Muito Obrigado
GOSTEI 0
POSTAR