ADO loop infinito

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADO loop infinito

Mensagem por JoséQuintas »

É a primeira vez um problema deste tipo:

Código: Selecionar todos

   WITH OBJECT cnSQL
      :cSQL := "SELECT CUGRUPO, CUCCUSTO FROM JPBACCUSTO ORDER BY CUGRUPO, CUCCUSTO"
      :Execute()
      DO WHILE ! :Eof()
         SayScroll( :String( "CUGRUPO" ) + "," + :String( "CUCCUSTO" ) )
         AAdd( aCCustoList, { :String( "CUGRUPO" ), "", .T. } )
         cGrupo := :String( "CUGRUPO" )
         DO WHILE cGrupo == :String( "CUGRUPO" ) .AND. ! Eof()
            AAdd( aCCustoList, { :String( "CUGRUPO" ), :String( "CUCCUSTO" ), .F. } )
            :MoveNext()
         ENDDO
      ENDDO
      :CloseRecordset()
   ENDWITH
Está entrando em loop infinito.
A rotina está em uso faz muito tempo.

É como se não entrasse no segundo DO WHILE.
E o segundo DO WHILE é o que faz o "skip" através do :MoveNext()

Código: Selecionar todos

      DO WHILE ! :Eof()
         cGrupo := :String( "CUGRUPO" )
         DO WHILE cGrupo == :String( "CUGRUPO" ) .AND. ! Eof()
            :MoveNext()
         ENDDO
      ENDDO
Não faz sentido o resultado de :String( "CUGRUPO" ) ser diferente num mesmo registro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADO loop infinito

Mensagem por JoséQuintas »

Esqueçam....

Olhando direito o fonte:

:EOF()

EOF()

o segundo está analisando DBF, coisa que não existe.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADO loop infinito

Mensagem por JoséQuintas »

Comentário:

Não apaguei o post, pra mostrar que nem tudo aqui é festa.
TALVEZ, quando postei mais resumido, facilitou enxergar o erro, ao comparar os dois EOF() que estavam perto.

Comentário adicional:

:eof() usa o que foi declarado no WITH OBJECT, vale por cnSQL:Eof()
Acaba sendo menos coisa pra digitar no fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

ADO loop infinito

Mensagem por alxsts »

Olá!

Percebi assim que bati o olho...

Acho que o Harbour deveria emitir um run time error "Work Area Not in Use"...
[]´s
Alexandre Santos (AlxSts)
Responder