DEFINE REPORT (with filtered data)

Moderator: Rathinagiri

User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: DEFINE REPORT (with filtered data)

Post by SALINETAS24 »

Hola Andy, no tengo problemas de equipo ni de memoria, el problema es mio, llevo desde el 2000 si programar e igual voy un poco perdido. Como te digo tu solución me parece muy correcta, es más.., a la vista de como está desarrollado el REPORT creo que es la única solución y la mejor para poder imprimir un numero determinado de registros de una base de datos, felicidades.

Como estoy cambiando PRG de CLIPPER a HMG, he llegado a la creación de informes y lo que comento es que me gustaría que se implementará una solución desde la propia activación del REPORT, que me imagino que no podrá ser y pongo unas lineas de ejemplo de como lo tenia en un programa de Clipper 5,2 con una LIB "sptools".

Agradezco sinceramente tu solución, te hecho te la copio y la implemento.

Oye.., y aprovecho.

¿como puedo imprimir subtotales..?
Tengo que hacer un informe que va ordenado por dias, y por cada dia tengo que hacer un subtotal.
Para que queda algo así.


FECHA - ARTICULO - PEDIDO
13/04 - 001020001 - 10
13/04 - 0010200003- 12
13/04 - 0010200004 5
subtotal 27
20/04 - 00200200001 1
subtotal 1
TOTAL 28

Muchas gracias por vuestras enseñanzas y paciencia.
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: DEFINE REPORT (with filtered data)

Post by andyglezl »

Checa el ejemplo
HMG\3.4.4\SAMPLES\Controls\ReportAdvanced\REPORT_ADVANCED_1 a
HMG\3.4.4\SAMPLES\Controls\ReportAdvanced\REPORT_ADVANCED_8
trae un archivo de definicion demo.rmg de un reporte

O existe está otra forma

HMG\3.4.4\SAMPLES\Controls\ReportBasic
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: DEFINE REPORT (with filtered data)

Post by SALINETAS24 »

Hola otra vez,me puedes ayudar.
cogi el programa de ejemplo "contactos" y modifique la impresión.
hice parte con tu codigo y parte con el mio.
pero cuando termina la impresión, si cierro el fichero MEM los datos del GRID me desaparecen, por el contrario si no lo cierro los datos del GRID siguen estando y me puedo mover de forma correcta, pero si le vuelvo a dar a la impresión entonces me de un error al existir el fichero MEM.
Creo que cuando hago el CLOSE se me cierran todos las DBF.
¿te ha pasado a ti.., ?
me puedes ayudar. gracias.


//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
// ---> FUNCION PARA IMPRIMIR
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------

STATIC FUNCTION Imprime_ped(aField)
Local RecContactos , RecTipos, cAlias, cClase
Local nEnvio:=1

cClase:= Win_1.t_arti.Value

LPEDIDOS->(DBCLEARFILTER())
lPedidos -> ( DBSETORDER(2) )
lPedidos -> ( DbSeek(dtos( aField[1])+ cClase) )

*-------------------------------------------------------------
DBCREATE("mem:DBTemp", lPedidos->( DBSTRUCT() ),, .T., "MEMDATO")
*-------------------------------------------------------------

DO WHILE LPEDIDOS -> (!EOF()) .AND. LPEDIDOS->TIPO = cClase
* Msgbox(aField[1])
* msgbox(cClase)

MEMDATO->(DBAPPEND())
MEMDATO ->(lLockRec())
MEMDATO ->(FieldPut( 1, LPEDIDOS->FECHA_PE ) )
MEMDATO ->(FieldPut( 2, LPEDIDOS->ARTICULO ) )
MEMDATO ->(FieldPut( 3, LPEDIDOS->FECHA_SE ) )
MEMDATO ->(FieldPut( 4, LPEDIDOS->CANTIDAD ) )
MEMDATO ->(FieldPut( 5, LPEDIDOS->ESTADO ) )
MEMDATO ->(FieldPut( 6, LPEDIDOS->TIPO ) )
MEMDATO ->(UnLockRec())

LPEDIDOS->(dBSkip())
ENDDO

MEMDATO->(DbGoTop())

DO REPORT ;
TITLE 'INFORME PEDIDOS' ;
HEADERS {'','','',"","",""} , {'PEDIDO','ARTICULO','TIPO',"F.SERVICIO","CANTIDAD","ESTADO"};
FIELDS {'FECHA_PE','ARTICULO','TIPO',"FECHA_SE", "CANTIDAD","ESTADO"};
WIDTHS {10,10,10,10,5,5} ;
TOTALS {.F.,.F.,.F.,.F.,.t.,.f.} ;
WORKAREA MEMDATO ;
LPP 50 ;
CPL 80 ;
LMARGIN 5 ;
PREVIEW

* MEMDATO->(DBCloseArea()) //--> he probado dos formas de cerrar pero me en ambas
* CLOSE MEMDATO //--> me desaperencen los datos de grid
DBDROP("mem:DBTemp")

lPedidos -> ( DBSETORDER(1) )
Win_1.grid_1.RecNo := PEDIDOS->(RECNO())
Win_1.grid_1.Refresh


RETURN NIl
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: DEFINE REPORT (with filtered data)

Post by SALINETAS24 »

Perdon por que tengo que volver a molestar. No entiendo bien el funcionamiento de MEM:DBTEMP
¿tengo alguna forma de saber si esta ya creado..?
Es para evitar que los datos del GRID me desaparezcan.
He probado con USED pero no funciona

gracias.
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: DEFINE REPORT (with filtered data)

Post by andyglezl »

La intencion de esto

DBCREATE("mem:DBTemp", lPedidos->( DBSTRUCT() ),, .T., "MEMDATO")

es crear una DB en memoria y agilizar su lectura, pero es como cualquier otra base de datos
física (.dbf), si la cierras, pues ya no tienes los datos.

La otra intención (en el caso del REPORT) es que solo era para generar el reporte con los registros generados
en ella. Ya que es lo que filtraste en el DO WHILE

Si deseas seguir manejando los datos en el GRID, no la cierres con ninguno de los siguientes:

*MEMDATO->(DBCloseArea()) //--> he probado dos formas de cerrar pero me en ambas
*CLOSE MEMDATO //--> me desaperencen los datos de grid
*DBDROP("mem:DBTemp")
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: DEFINE REPORT (with filtered data)

Post by andyglezl »

Esto debe de ser suficiente SOLO para genererar el REPORT con los registros
filtrados ( dtos( aField[1] ) + cClase )

Code: Select all

STATIC FUNCTION Imprime_ped(aField)
Local RecContactos , RecTipos, cAlias, cClase
Local nEnvio:=1

cClase:= Win_1.t_arti.Value 
lPedidos -> ( DBSETORDER(2) )
*-------------------------------------------------------------
DBCREATE("mem:DBTemp", lPedidos->( DBSTRUCT() ),, .T., "MEMDATO")
*-------------------------------------------------------------
APPEND FROM LPEDIDOS FOR LPEDIDOS->FECHA_PE + LPEDIDOS->TIPO = dtos( aField[1] ) + cClase

DO REPORT	;
TITLE 'INFORME PEDIDOS'	;
HEADERS {'PEDIDO','ARTICULO','TIPO',"F.SERVICIO","CANTIDAD","ESTADO"};
FIELDS {'FECHA_PE','ARTICULO','TIPO',"FECHA_SE", "CANTIDAD","ESTADO"};
WIDTHS {10,10,10,10,5,5} ;
TOTALS {.F.,.F.,.F.,.F.,.t.,.f.}	;
WORKAREA MEMDATO	;
LPP 50	;
CPL 80	;
LMARGIN 5	;
PREVIEW	

DBDROP("mem:DBTemp")

lPedidos -> ( DBSETORDER(1) )

RETURN NIl
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
mustafa
Posts: 1158
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Contact:

Re: DEFINE REPORT (with filtered data)

Post by mustafa »

Hola amigo SALINETAS24:
Mírate este Sample haber si te puede servir ?
pulsa a la izquierda algún registro y así quedarán seleccionados los Registros
parciales a imprimir y pulsa el Botón "Sales" también te calcula el precio
con el formato del Euro.

Che!! si fas eixida per a TORREVIEJA prenem unes "canyes"
Saludos
Mustafa
*-----------------------------------------------------Google -------------------------------------------------*
Hello friend SALINETAS24:
See this Sample have if it can serve you?
press any record to the left and the Records will be selected
partial to print and press the button "Sales" also calculates the price
with the format of the Euro.

regards
Mustafa
Attachments
Grid Price Euro.zip
(408.95 KiB) Downloaded 314 times
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: DEFINE REPORT (with filtered data)

Post by SALINETAS24 »

Hola y muchas gracias.
Andy he conseguido imprimir 1 vez, pero cuando devuelvo el control al GRID y quiero volver a imprimir es cuando tengo problemas. Si no cierro me da un error ya que no ejecuta otra vez el DBCreate..., y si cierro pues entonces pierdo el GRID.

Mustafa, gracias lo usare, y me gusta como haces los colores del Grid.., y la "serveseta, per supost que la farem...". Un abraç.
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: DEFINE REPORT (with filtered data)

Post by andyglezl »

En realidad, sin ver tu programa o algún ejemplo funcional donde se pueda ver cual es
tu problema, es en vano estar suponiendo que es lo que ocurre y como lo estas haciendo.

Como ya se ha dicho varias veces aquí en el foro, para poder ayudar es necesario que se envie el
programa o ejemplo con sus archivos correspondientes en donde al compilarlo por cualquier miembro
del foro, se refleje el error o problema mencionado.
-----------------------------------------------------------------------------------------------------------------------------
Actually, without seeing your program or any functional example where you can see which one is
your problem, it is in vain to be assuming what is happening and how you are doing it.

As has already been said several times here in the forum, in order to help it is necessary to send the
program or example with its corresponding files where when compiled by any member
of the forum, reflect the error or problem mentioned.
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: DEFINE REPORT (with filtered data)

Post by srvet_claudio »

SALINETAS24 wrote: Tue Apr 10, 2018 4:43 pm Andy he conseguido imprimir 1 vez, pero cuando devuelvo el control al GRID y quiero volver a imprimir es cuando tengo problemas. Si no cierro me da un error ya que no ejecuta otra vez el DBCreate..., y si cierro pues entonces pierdo el GRID.
Creo que el problema está ahí. El dbcreate lo debes ejecutar una sola vez por ej al inicio del programa, luego cuando llamas la rutina de imprimir en lugar de poner el dbcreate haces un
Delete all
Pack
En el archivo memdato para borrar todo su contenido antes de hacer el filtrado.
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
Post Reply