Registro não esta disponivel

Discussão em 'Progress 4GL' iniciado por luizclairrodrigues, Janeiro 6, 2012.

  1. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Olá pessoal!

    Oque faço quando no relatório ao buscar registro e da esse erro á baixo



    Nr.Ordem Projeto Manejo Data Abertura Data Encerramento Horas Prog Horas Reais Total Paradas
    ----------- ---------------- -------- ------------- ----------------- --------------- --------------- -------------
    511.953 J0051002 MAEV2P01 08/11/2011 08/11/2011 60,3400 1.103,9643 0,0833
    ** Registro tt-ord-manut nao esta' disponivel. (91)
    ** Registro tt-ord-manut nao esta' disponivel. (91)
    ** Registro tt-ord-manut nao esta' disponivel. (91)
    ** Registro tt-ord-manut nao esta' disponivel. (91)
    511.964 J0041004 MAJL0106 09/11/2011 09/11/2011 618,4700 0,0000 0,5333
    511.964 J0041004 MAJL0106 09/11/2011 09/11/2011 1.455,2100 13,8332 0,5333
    511.964 J0041004 MAJL0106 09/11/2011 09/11/2011 687,1800 0,0000 0,5333
    511.964 J0041004 MAJL0106 09/11/2011 09/11/2011 24,7400 25,3167 0,5333
    511.965 J0041004 MAJL0316 09/11/2011 09/11/2011 618,4700 0,0000 0,5000
    511.965 J0041004 MAJL0316 09/11/2011 09/11/2011 1.455,2100 37,9333 0,5000
    511.965 J0041004 MAJL0316 09/11/2011 09/11/2011 687,1800 0,0000 0,5000
    511.965 J0041004 MAJL0316 09/11/2011 09/11/2011 24,7400 32,2334 0,5000
    511.985 J0041005 MAJL0009 10/11/2011 10/11/2011 149,4300 6,0000 1,4667
    511.985 J0041005 MAJL0009 10/11/2011 10/11/2011 29.885,7200 48,9164 1,4667
    511.985 J0041005 MAJL0009 10/11/2011 10/11/2011 373,5700 12,0002 1,4667
    511.985 J0041005 MAJL0009 10/11/2011 10/11/2011 149,4300 256,4840 1,4667
  2. jonas

    jonas Membro Participativo

    Você deve estar dando um find first nesta tabela, só que o registro não foi encontrado para a cláusula where informada.

    Sugiro adicionar um "if available tt-ord-manut" e utilizar os campos dessa tabela somente se cair nesta condição, desta forma se o registro não for encontrado então o erro não ocorrerá.
  3. luizclairrodrigues

    luizclairrodrigues Membro Participativo

  4. allan.oliveira

    allan.oliveira Sem Pontuação

    É importante lembrar que em uma clausula Find você deve declarar explicitamente que não quer receber erro STANDARD do progress.
    Para isso você dever usar NO-ERROR no comando Find. Vamos a um exemplo prático.

    Código:
    Find First NomeDaTabela where NomeDaTabela.NomeDoCampo = Variavel NO-LOCK NO-ERROR.
    Utilizando o NO-LOCK o banco não fica preso...
    Utilizando o NO-ERROR nenhum erro "standard" do PROGRESS vai ocorrer...

    Quando você usa essa cláusula no-error isso significa para o progress que você vai controlar quando os dados estarão disponiveis ou não, entende?

    Por exemplo:

    Se você utilizar o find dentro de uma instrução FOR EACH, faça o seguinte:

    Código:
    for each tabela1:
        find first tabela2 where tabela2.id = tabela1.id NO-LOCK NO-ERROR.
        If NOT available tabela2 Then next.  /*isso fára o progress ir para a proxima interação do for each - otimização de código*/
        else do:
            /*suas rotinas - registro disponivel*/
        end.
    end.

Compartilhe esta Página