1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[RESOLVIDO] RPW - Valor do campo não atualiza

Discussão em 'EMS , HCM e Totvs 11' iniciado por afarns, Fevereiro 19, 2019.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. afarns

    afarns Sem Pontuação

    Bom dia Senhores,

    Temos uma rotina que importa pedidos de um canal externo ( tabela SQL ), ela também exporta informações referentes ao estoque, essa rotina roda via RPW.
    Como o canal externo também acessa e altera esta tabela, temos um campo lógico para indicar se algum processo está sendo executado.
    Pois bem, temo um problema em que varias vezes a rotina inicia sua execução mas não termina pois indica que o campo está setado como sim ( existe algo sendo processado ), demoramos um pouco mas conseguimos simular algumas vezes e via consulta direto no banco verificamos que isso não é verdade, mesmo o processo que está no RPW fazendo a consulta no banco trazendo o campo = sim, quando consultado direto no banco é possível verificar que o parâmetro está não.
    Isso só acontece quando a rotina está em RPW, rodamos exaustivamente a rotina manualmente e o problema não acontece.
    Já tiveram algum problema parecido ?

    Desde já muito obrigado pela atenção dos senhores.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    provavelmente a sua rotina está dentro de uma transação, durante o processo, todos os movimentos feitos, assigns ficam em cache, somente quando encerra a transação que realmente atualiza o banco, exatamente para fazer um UNDO quando houver algum problema, no caso, em sua rotina, vcs deveriam por a atualização desse campo dentro um bloco de transação menor, forçando assim a atualização do banco, porem, se der algum erro na rotina como um todo, vc ficará com uma parte dos registros atualizada e outra não, por conta de ter mudado o escopo da transação.
    afarns curtiu isso.
  3. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    É exatamente o que o Richard falou, diferente do progress, no SQL tudo fica em cache, se olhar o banco com a transação ainda aberta, ou seja, não rodou ainda o COMMIT ou o ROLLBACK, os dados continuam intactos.

    Já o progress, apesar de haver um cache de controle, a transação altera os dados em uso, por esse motivo tive que refazer todos os programas da empresa onde trabalho, removendo as mensagens que aparecem durante a transação e passadas para dentro de uma temp-table para evitar que dados "semi-alterados" sejam usados por outro usuário.
    afarns curtiu isso.
  4. afarns

    afarns Sem Pontuação

    Mas nesse caso não teria o mesmo problema rodando o programa manualmente varias vezes seguidas ?
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    não, porque o RPW cria um bloco de transação pra ele.
    afarns curtiu isso.
  6. afarns

    afarns Sem Pontuação

    Primeiro agradeço a atenção dos senhores.
    Verifiquei também que as procedures que verificam o parâmetro lógico na tabela externa, estão no mesmo .P que realiza as alterações.
    Como não existe nenhuma transação nessa rotina, acredito que realmente oque deve estar mantendo o cache como vocês mesmo disseram é o RPW.
    Vou realizar uma alteração colocando a logica que verifica esse parâmetro em um .p diferente, e instanciar ele em um handle, e após a verificação/alteração do parâmetro eliminar o handle, na tentativa de limpar o "cache" para evitar o problema na próxima verificação, será que funciona ?
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página