FW
Transações - Database Locked
Fechado
Pessoal.
Preciso de mais uma ajuda.
Tenho um formulário, onde preciso salvar os valores dele, e depois disto, realizar uma segunda transação para consumir os valores de um orçamento.
Porém estou recebendo uma mensagem de DataBase Locked. Já tentei de várias maneiras e não estou conseguindo.
Obrigado.
Preciso de mais uma ajuda.
Tenho um formulário, onde preciso salvar os valores dele, e depois disto, realizar uma segunda transação para consumir os valores de um orçamento.
Porém estou recebendo uma mensagem de DataBase Locked. Já tentei de várias maneiras e não estou conseguindo.
- <?php
- function onSave($param)
- {
- try
- {
- $orcamento = $this->onBuscaOrcamento($param['colaborador_id']);
-
- if($orcamento)
- {
- TTransaction::open('gestao_viagens');
-
- $conn = TTransaction::get();
- $result = $conn->query('PRAGMA foreign_keys = ON');
-
- $object = $this->form->getData('SolicitaViagem');
-
- $this->form->validate();
-
- $object->quem = TSession::getValue('id_user');
- $object->quando = date("Y-m-d H:i:s");
-
- $origem = $param['autoOrigem'];
- $destino = $param['autoDestino'];
-
- $object->origem_id = $this->onBuscaId($origem);
- $object->destino_id = $this->onBuscaId($destino);
-
- $object->store();
-
- 2557_via = $object->id_viagem;
-
- $this->form->setData($object);
-
- $consumir = $object->vlr_hotel + $object->vlr_transp + $object->vlr_adiantamento;
- $valor_orcamento = explode("-", $orcamento);
-
- TTransaction::close();
-
- sleep(5);
-
- $this->Consumir(2557_via, $valor_orcamento[0], $valor_orcamento[1], $consumir);
-
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- else
- {
- new TMessage('error', 'Orçamento inexistente.<br>Favor Verificar o Centro de Custo!');
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', '<b>Error:</b> ' . $e->getMessage());
-
- TTransaction::rollback();
- }
- }
- function Consumir(2557_via, 2557_orcamento, $vlr_orcamento, $consumir)
- {
- try
- {
- TTransaction::open('gestao_viagens');
-
- $consumo = new ConsumoOrcamento;
- $consumo->id_viagem = 2557_via;
- $consumo->id_orcamento = 2557_orcamento;
- $consumo->valor = $vlr_orcamento - $consumir;
- $consumo->store();
-
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
Obrigado.
Fernando, isso geralmente acontece quando uma transação não é fechada.
A função onBuscaOrcamento está fechando a conexão?
Em último caso faça um teste utilizando a mesma conexão para a onSave e Consumir.
Nataniel,
Está fechado sim. Pensei nisto também.
Não estou no escritório hoje, mas vou tentar utilizar uma conexão apenas para todos os métodos.
Obrigado por hora, assim que consegui testar posto novamente.
Nataniel,
Resolveu.
Removi as aberturas de conexão dos demais módulos e deixei apenas uma no OnSave.
Obrigado.