Autor Tópico: Transacoes no scriptcase  (Lida 62 vezes)

emilio

  • Intermediário
  • ***
  • Mensagens: 106
Transacoes no scriptcase
« Online: Março 09, 2019, 09:25:43 am »
Ola Pessoal
Alguem poderia colocar exemplos do uso das macros sc_begin_transf, sc_commit e sc_rollback?

A documentacao a respeito não é muito clara.

Eu vi uma postagem de que bastaria colocar os comandos sc_exec_sql dentro dos eventos do form. Ora, se isso for o bastante, nao faz sentido ter essas macros.

Por isso, se alguem puder, cole aqui um exemplo esclarecedor sobre como usar essas macros para atualizar varias tabelas.

Abraco.

Haroldo

  • Expert
  • *****
  • Mensagens: 8974
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Transacoes no scriptcase
« Responder #1 Online: Março 09, 2019, 09:55:45 am »
O formulário nas suas ações de IO em disco já implemetam o commit.
As macros são e podem ser usadas quando você manualmente  executa. Processamento de banco de dados em lotes como faria em qualquer outro lugar.
Você tem essa necessidade?

Supondo, que deseja alterar vários registros e cria um loop para esse processamento, e precisa controlar um determinado erro que se ocorrer terá que desfazer os registros alterados até.esse.momento.

emilio

  • Intermediário
  • ***
  • Mensagens: 106
Re:Transacoes no scriptcase
« Responder #2 Online: Março 09, 2019, 01:53:31 pm »
Oi Haroldo

Digamos que ao gravar um registro, eu precise realizar varias consultas e gravar informacoes em 4 ou 5 tabelas.

Por exemplo, baixar contas a pagar, debitar conta corrente, lancamentos contabeis, etc.

Digamos que durante o processamento eu verifique algum problema e desee retornar ao estado inicial.

Eu precisaria realizar um rollback de tudo, inclusive do registro da primeira tabela. Isto é, ou tudo é gravado, ou nada será gravado.

Entao, se eu usar uma stored procedure eu consigo isso. Mas no sc, se nao hover garantia de que a transacao foi completada, eu poderei ter uma transacao feita pela metade.

Nao sei se fui claro. O fato é que eu gostaria de garantir que a transacao nao vai ficar pela metade.



emilio

  • Intermediário
  • ***
  • Mensagens: 106
Re:Transacoes no scriptcase
« Responder #3 Online: Março 09, 2019, 03:05:26 pm »
OI Haroldo

Outra duvida : Digamos que seja necessario gravar o ID do registro atual nas proximas 4 ou 5 tabelas.

Em que evento eu devo começar a gravar informacoes nas proximas tabelas, já pegando o numero do ID?

A principio eu imagino que o evento mais apropriado seria onAfterInsert.

Entao, se somente no onAfterInsert é que o ID estará disponivel, eu imagino que teriamos que colocar os demais comandos de inclusao dentro deste evento.

sc_exec_sql("insert na tabela1"); sc_exec_sql("insert na tabela 2"); etc.

O problema é em que parte eu devo colocar o commit ou rollback?


Haroldo

  • Expert
  • *****
  • Mensagens: 8974
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Transacoes no scriptcase
« Responder #4 Online: Março 09, 2019, 04:50:35 pm »
Commit sempre por último.

O rollback time que estar na condição de erro nos seus inserts e os inserts dentes de Begin e endereço transacional.

Mas ah necessidade mesmo de controlar as transações?