Página 1 de 1

QUEUE - No sale del Loop

Publicado: Jue Sep 14, 2017 8:06 pm
por CWeidl
Buenas tardes a todos, tengo una Queue que necesito recorrer para hacer una impresion, pero no sale del Loop al terminar de recorrer la cola, sino que vuelve a leer varias veces la Queue. Adjunto codigo que estoy usando a ver si alguno sabe donde esta el error.
Desde ya muchisimas gracias a todos.

LOOP X# = 1 to Records(QAudiDeriva)
dbg('X# = ' & X#)
GET(QAudiDeriva,X#)
IF ERRORCODE() THEN BREAK END
L:COD_NUM = WHAT(QAudiDeriva,1) ! WHAT Retorna un campo especifico
dbg('******>>> CODIGO LEVANTADO DE LA QUEUE QUE CARGO EN L:COD_NUM : ' & L:COD_NUM)
END

Y aca una pequeña muestra de lo que me esta haciendo :

[6160] X# = 1
[6160] ******>>> CODIGO LEVANTADO DE LA QUEUE QUE CARGO EN L:COD_NUM : 1129
[6160] X# = 2
[6160] ******>>> CODIGO LEVANTADO DE LA QUEUE QUE CARGO EN L:COD_NUM : 1298
[6160] X# = 3
[6160] ******>>> CODIGO LEVANTADO DE LA QUEUE QUE CARGO EN L:COD_NUM : 1302
[6160] X# = 1
[6160] ******>>> CODIGO LEVANTADO DE LA QUEUE QUE CARGO EN L:COD_NUM : 1129
[6160] X# = 2
[6160] ******>>> CODIGO LEVANTADO DE LA QUEUE QUE CARGO EN L:COD_NUM : 1298
[6160] X# = 3
[6160] ******>>> CODIGO LEVANTADO DE LA QUEUE QUE CARGO EN L:COD_NUM : 1302
[6160] X# = 1
............................ y asi muchas veces

Re: QUEUE - No sale del Loop

Publicado: Jue Sep 14, 2017 10:42 pm
por CWeidl
Tambien probe contando los Registros cargados en la QUEUE :

Registros# = RECORDS(QAudiDeriva)
dbg('Registros# :' & Registros#)
LOOP x# = 1 TO Registros#
!!! LOOP X# = 1 to Records(QAudiDeriva)
dbg('X# = ' & X#)
GET(QAudiDeriva,X#)
IF ERRORCODE() THEN BREAK.
L:COD_NUM = QUE:COD_NUM
...........
END

Cualquier ayuda sera muy bienvenida.
Saludos

Carlos Weidl

Re: QUEUE - No sale del Loop

Publicado: Vie Sep 15, 2017 3:26 pm
por R.Pacheco
Hola colega pprueba este codigo



Imprimir Cola de Memoria
Este codigo se coloca el Takerecord de la Proces(Cla) Pp5001

loop X# = 1 to records(QImpresion)
get(QImpresion,X#)
L:Medicamento = what(QImpresion,1)
L:NomComercial = what(QImpresion,2)
L:DrogaPrincipal = what(QImpresion,3)
L:Accion = what(QImpresion,4)
print(RPT:Detail)
end

Tambien te dejo otro codigo

En TakeRecord PP 5001

!Codigo control de Impresion Modelo 2
LOOP C# = 1 to RECORDS(Datos1)
GET(Datos1,C#)
IF ERRORCODE() THEN STOP(ERROR()).
PRINT(RPT:DETAIL)
END!LOOP
ENDPAGE( Report)
Free(datos1)

Nota: En la Propieda del reporte
en filtro poner
FALSE

Espero que te sirva

muchas bendiciones

Re: QUEUE - No sale del Loop

Publicado: Vie Sep 15, 2017 5:42 pm
por CWeidl
Gracias Ramon por la respuesta, viendo el ejemplo que me pasaste es lo mismo que vengo haciendo. Pero el LOOP no se corta.
Te paso el codigo completo :

Registros# = RECORDS(QAudiDeriva)
LOOP x# = 1 TO Registros#
GET(QAudiDeriva,X#)
IF ERRORCODE() THEN BREAK.
L:COD_NUM = QUE:COD_NUM
!
CLEAR(DES:RECORD)
DES:COD_NUM = L:COD_NUM
Access:DESPACHO.Fetch(DES:key_1)
IF NOT ERROR()
PRINT(RPT:Detail)
!
CLEAR(HIS:RECORD)
HIS:COD_NUM = L:COD_NUM
SET(HIS:key_1,HIS:key_1)
LOOP Until Access:HISTORIAL.Next() OR HIS:COD_NUM <> L:COD_NUM
IF NOT ERROR()
PRINT(RPT:DetailHISTORIAL)
END
END
!
END

Esto lo tenia en el Process Manger - Take Record - Priority 5500 (Ahora tambien probe en 5001 y es lo mismo )

Tengo 2 FILTERS : Detail = FALSE y DetailHISTORIAL = FALSE

Y la declaracion en Tablas esta de la siguiente manera :
Report Procedure -> DESPACHO - DES:key_1
Other Tables - HISTORIAL - HIS:key_1


Me da la impresion que hace el LOOP por cada Registro en DESPACHO. No se, no logro entender que esta mal.
Desde ya muchas gracias por cualquier ayuda.
Saludos

Carlos Weidl

Re: QUEUE - No sale del Loop

Publicado: Vie Sep 15, 2017 10:55 pm
por HDMadeira
Hola, en report properties, data source, elegiste la opción memory ?

Saludos

Daniel

Re: QUEUE - No sale del Loop

Publicado: Sab Sep 16, 2017 11:10 am
por R.Pacheco
Hola colega

Busca en la seccion de truco este
demo de mi autoria llamado asi:
Demo de Queue evitando el Devoldamiento en los reportes

Te enseñara haracer lo que tu quiere

Re: QUEUE - No sale del Loop

Publicado: Sab Sep 16, 2017 10:14 pm
por CWeidl
Muchisimas gracias Daniel y Ramon. Al final lo hice sin usar la QUEUE, directamente filtre en cada una de las tablas involucradas y lo mande a imprimir.
Igual el reporte me lo deje para ver, con mas tiempo, por que no salia del LOOP, he hecho varios reportes usando QUEUES y no me habia pasado esto, asi que me quede con la duda.

Si logro ver donde estaba la falla la posteo aca por si alguien se encuentra con el mismo problema.
Nuevamente muchas gracias.
Saludos

Carlos Weidl

PD. : Daniel, buen dato, cuando intentaba imprimir la QUEUE el Data Source lo tenia en File.
Ramon, muy buen aporte el ejemplo de manejo de Queues lo voy a chusmear tranquilo, gracias.