Fórum Transação com mestre detalhe #244754

28/07/2004

0

Olá amigos, eu tou precisando de uma luz

Eu nunca usei transações, mas o conceito eu conheço. O meu problema é o seguinte-exemplo:

Tenho uma tabela de Pedidos e outra de ItensdoPedido, primeiro eu gravo os dados da tabela Pedidos pra ser gerado o codigo da chaveprimaria pra ser usada como estrangeira na tabela de itens certo?

O problema está se o operador não cadastrar nehum item pra tabela de pedido. No banco vai conter um Pedido sem itens. Eu keria colocar tudo dentro de uma transação pra naum acontecer esse problema.

a teoria eu sei:

Starto uma transação com o banco
Insiro na tabela Mestre
Post na tabela mestre
insiro na tabela detalhe
post na tabela detalhe
se acontecer algum problema na gravação dos dados (tabela mestre ou detalhe), dou um rollback na transação.

Só q eu naum sei como fazer isso já q os botões de inserir, gravar, etc saum diferentes para cada tabela

Será q alguem poderia me orientar?


Pabhen

Pabhen

Responder

Posts

29/07/2004

Pabhen

sobe


Responder

Gostei + 0

29/07/2004

Rômulo Barros

[color=red:a596e9d079][b:a596e9d079]Respondendo:[/b:a596e9d079][/color:a596e9d079]

   1 - Usuário pede para inserir novo pedido(botão inserir);
   2 - Iniciar Transação;
   3 - Formulário para preenchimento dos dados do pedido é exibido;
   4 - Usuário pede para gravar o pedido(botão salvar);
   5 - Formulário para preenchimento dos items do pedido é exibido;
   6 - Evento OnClose do formulário dos items do pedido:
        6.1 - Select * From ItemsPedidos Where CodPedido = CodigoDoPedido;
        6.2 - If(RecordCount >0)Then
                   Commit
                else
                    Rolback;



Responder

Gostei + 0

29/07/2004

Pabhen

[quote:a0246fb890=´Undeclared Identifier´][color=red:a0246fb890][b:a0246fb890]Respondendo:[/b:a0246fb890][/color:a0246fb890]

   1 - Usuário pede para inserir novo pedido(botão inserir);
   2 - Iniciar Transação;
   3 - Formulário para preenchimento dos dados do pedido é exibido;
   4 - Usuário pede para gravar o pedido(botão salvar);
   5 - Formulário para preenchimento dos items do pedido é exibido;
   6 - Evento OnClose do formulário dos items do pedido:
        6.1 - Select * From ItemsPedidos Where CodPedido = CodigoDoPedido;
        6.2 - If(RecordCount >0)Then
                   Commit
                else
                    Rolback;
[/quote:a0246fb890]

Eu posso iniciar uma tansação num procedimento, e encerra-lá em outro? Como se faz isso? Vc poderia ser mais claro. Desculpa minha ignorancia


Responder

Gostei + 0

29/07/2004

Rômulo Barros

Claro que pode, amigo. A transação é iniciada no componente de conexão (DataBase,SqlConnection,IBDatabase ...). Apenas para a DBExpress a variável de transação (Var MinhaTransacao : TTransactionDesc) tem que ser declarada em um formulario que esteja sempre criado em memória(<>nil). Gosto sempre de declará-la no formulário principal. :P :P :P


Responder

Gostei + 0

29/07/2004

Pabhen

[quote:4b740e64b1=´Undeclared Identifier´]Claro que pode, amigo. A transação é iniciada no componente de conexão (DataBase,SqlConnection,IBDatabase ...). Apenas para a DBExpress a variável de transação (Var MinhaTransacao : TTransactionDesc) tem que ser declarada em um formulario que esteja sempre criado em memória(<>nil). Gosto sempre de declará-la no formulário principal. :P :P :P[/quote:4b740e64b1]

antes de mais nada, tah valendo pela sua ajuda, mas

Vc tem um exemplo pra ficar mais claro pra mim?


Responder

Gostei + 0

29/07/2004

Pabhen

sobe


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar