Transação com mestre detalhe
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?
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
Curtidas 0
Respostas
Pabhen
28/07/2004
sobe
GOSTEI 0
Rômulo Barros
28/07/2004
[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;
GOSTEI 0
Pabhen
28/07/2004
[quote:a0246fb890=´Undeclared Identifier´][color=red:a0246fb890][b:a0246fb890]Respondendo:[/b:a0246fb890][/color:a0246fb890]
[/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
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;
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
GOSTEI 0
Rômulo Barros
28/07/2004
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
GOSTEI 0
Pabhen
28/07/2004
[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?
antes de mais nada, tah valendo pela sua ajuda, mas
Vc tem um exemplo pra ficar mais claro pra mim?
GOSTEI 0
Pabhen
28/07/2004
sobe
GOSTEI 0