Ronaldo Silva

Members
  • Content count

    8
  • Joined

  • Last visited

Community Reputation

3 Neutral

About Ronaldo Silva

  • Rank
    Soldier
  1. Algumas telas do Quantum, sistema que vai substituir o OrionElite em Netcobol. Optei pelo tema escuro para dar mais conforto visual aos operadores. Após entrar em produção irei disponibilizar todo o skin. Não foi usado nenhum template do Windev. Qualquer dúvida sobre como foi criado o Skin e a forma em que usei no Windev entre em contato. Abçs Ronaldo Silva (Rui)
  2. Claudio , o problema não é com o postgres, é na forma que se usa a instrução SQL dentro do Windev. select * from tabela where cod = 1 for update nowait, nowait é muito importante. Isso porque a instrução HReadSeekFirst com hLockWrite não traz o código de lock do postgres. Baixe o projeto que anexei, no code da table tem a instrução da forma correta.
  3. Esse é o código usado nos testes para travamento de registro no Postgres. A instrução HReadSeekFirst com a diretiva lockWrite HReadSeekFirst(cobradores,id_cob,TABLE_Cobradores.COL_id_Cob,hLockWrite+hLimitParsing) Não retornava o código que indica registro travado ( 55P03 ) do Postgres. Após várias tentativas chegamos a essa instruçào: sSql is string= "select * from cobradores where id_cob ="+TABLE_Cobradores.COL_id_Cob+" for update nowait;" sQ is Data Source SQLTransaction(sqlStart,Quantum_Conection) // abre a transação IF HExecuteSQLQuery(sQ,Quantum_Conection,hQueryWithoutCorrection,sSql) = False THEN Info(HErrorInfo(hErrFullDetails)) SQLTransaction(sqlRollBack,Quantum_Conection) RETURN ELSE FOR EACH sQ Trace(sQ.nome_cob) EDT_Nome = sQ.nome_cob RADIO_Situ= sQ.situ_cob EDT_Comissao= sQ.comissao_cob END END Note que a finalização da transação não foi feita, essa terá de ser acionada após um update. SQLTransaction(sqlRollBack,Quantum_Conection) Ela só foi chamada quando deu erro. No projeto de testes, criei um botão de liberação para simular o fechamento da transação. Com essa solução o update após a alteração, se existir, terá de ser feito com outra query da mesma forma que foi feita a query da select. Isso anulará as instruções FileToScreen e ScreenToFile. No projeto eu utilizei a conection do Analysis, mas isso poderá ser feito sem o Analysis. A imagem mostrando o Lock ( lock de registro Windev + Postgres.png ), está dentro do projeto zipado. Agradecimentos a todos que de alguma forma contribuíram para essa solução, em especial a Paulo Viana e Nelson da Softcomp. Qualquer erro encontrado ou uma nova forma que encontraram, agradeceria se reportassem. Abcs Ronaldo Silva Record_Lock.rar
  4. No nosso caso, do Postgres, não conseguimos obter diretamente com hLockWrite no HreadSeekFirst. Nossa solução foi parecida com a sua. Vou postar as telas mostrando o lock e a instrução SQL que usamos no HexecuteSQLQuery. Agradecemos a todos do Grupo Windev Cobol pelas dicas e ajuda efetiva em especial a Paulo Viana que passou um tempo comigo nos testes. Parabéns pela sua solução.
  5. Willian, eu e Paulo Viana já resolvemos o problema de travamento fazendo testes nesses últimos dias. Com os comandos Hread com lock nào funcionam para Postgres e nem para SQLServer. Assim que os testes estiverem 100%, postaremos a solução. A todos que de qualquer forma ajudaram para resolver o problema meus agradecimentos.
  6. Willian, está havendo uma confusão quando falamos em SQLCode, SQLState e SQLMsg. O Postgres tem alguns retornos de status e eles são SQLCode ( código de retorno da transação), SQLState( O estado da transação) e SQLMsg ( a mensagem de retorno ). Na nossa linguagem, muitos ainda a utilizam, após qualquer interação com o banco podemos receber alem dos dados os retornos que identificam o estado da solicitação. Os comandos H para Lock, só se aplicam ao HFSQL. Para usar travamento de registro no windev + Postgres, teremos que abandonar os comandos H e passar a usar SQLExec ou colocar toda a regra no banco através de functions, triggers, SP; ou combinar as duas formas. Esse assunto é muito delicado, seria interessante uma LIVE sobre o assunto onde os mais experientes, e principalmente os que usam o POSTGRES com windev, pudessem nos dar uma ideia de como fazem.
  7. Olá confrades. Alguém tem alguma Function com retorno do SQLCode, SQLState e SqlMsg?.