[RESOLVIDO] Concorrencia de dados

Discussão em 'EMS , HCM e Totvs 11' iniciado por Will, Agosto 3, 2010.

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

    Will Membro Participativo

    Olá galera, estou com um baita problema no sistema. Tenho um programa customizado, que por sua vez tem a função de reportar peças. Enfim, o mesmo trabalha com uma api de código fechado que é a cpapi001.p. Problema, este programa chama uam rotina da cpapi001.p que por sua vez altera dados da tabela reservas. Até então está de acordo. Porém quando coloco duas máquinas para reportar ao mesmo tempo ele dá conflito na tabela SALDo, apresentando a mensagem a tabela saldos está em uso por usuário X. E fica parado para ambos usuários, até que um cancele o processo. Gostaria de saber se existe alguma maneira de tratar o mesmo???? De verificar se a tabela já está em uso por outro usuário antes de chamar a rotina da api, caso sim aguarda ate´ser liberada senão chama a rotina??????
  2. mcarril

    mcarril Membro Participativo

    Veja exemplo do Help do Progress:


    r-locked.p

    REPEAT:
    PROMPT-FOR customer.cust-num.
    FIND customer USING customer.cust-num NO-ERROR NO-WAIT.
    IF NOT AVAILABLE customer THEN DO:
    IF LOCKED customer
    THEN MESSAGE "Customer record is locked".
    ELSE MESSAGE "Customer record was not found".
    NEXT.
    END.
    DISPLAY cust-num name city state.
    END.
  3. Will

    Will Membro Participativo

    hm show de bola cara era isso mesmo, só para saber como poderia implementar de forma que ele segure o usuário em modo de espera até que o registro da tabela esteja disponível ?????
  4. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Olha meu caros,

    Todo processamento do reporte é feito pelo API da Datasul, porém você não conseguira fazer este controle na sua rotina, uma vez que somente executado a API é que poderá ocorrer e dentro dela é que fará a validação e o LOCEKD.

    Se você colocar tratamentos dentro da sua rotina como fará, pois quando consultar pode ser que ainda não esteja travado e acionado o botão o mesmo já trava. Imagine que os usuários podem acionar o botão de reporte simultaneamente, então não terá tratamento antes da API.

    Eu já passei por isso algumas vezes e a única solução é bater de frente com o suporte da TOTVS para solucionar o problema, uma vez o que mesmo deve ser tratado internamente na API. Já tive casos com Reporte e com o Recebimento, sei que é chato e difícil convencer esse pessoal de que a API está com problema, mas envolvendo ouvidoria e o processo fica mais fácil.

    Uma dica, quanto mais informação você fornecer na FO mais fácil será CONVENCÊ-LOS de que a API está com problemas, por exemplo: Extrato de Versão, Log do Debugger, Telas das Mensagens, etc.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página