Reporte con Agrupamiento y filtrado de registros.
Jue Jul 19, 2012 4:10 pm
Buen día, me gustaría saber si hay alguna forma de modificar la clausula WHERE que condiciona los registros que van a determinado reporte.
El caso es que estoy intentando hacer un reporte en el que solo se muestren registros de 2 ("000001" y "000002") de los 5 Grupos de Inventario con sus totales (es un desglose complementario a la factura).
He copiado el reporte de factura y estoy utilizando "nombregrupo" como parametro de agrupación de los registros...
Además de los condicionales para la impresión de cada uno de los campos.
"nombregrupo" es alias de "grupos.NOMBRE" y "grupoart" de "opermv.GRUPO".
Sin embargo, cuando en la factura no se ingresan en orden los registros de cada grupo, el reporte asume que se trata de otro grupo y se imprime incorrectamente el reporte, como sucede en este caso con el grupo de "MEDICAMENTOS", ya que entre el CARDIOPRIL y la CLINDAMICINA se ingresaron otros registros no pertenecientes a este grupo de inventario.
El reporte completo de puede descargar del siguiente link
https://www.dropbox.com/s/5na0rcqx71elmem/relmatymed2.pdf
Creo que la solución pasaría por algún parámetro que estoy obviando en el agrupamiento del reporte o por la modificación de la clausula WHERE del mismo, para asi recuperar solo los registros que serán utilizados en el reporte y evitar el salto.
Si alguien sabe como resolverlo de una forma u otra, le agradezco de antemano la información que pueda facilitarme al respecto.
Saludos.
El caso es que estoy intentando hacer un reporte en el que solo se muestren registros de 2 ("000001" y "000002") de los 5 Grupos de Inventario con sus totales (es un desglose complementario a la factura).
He copiado el reporte de factura y estoy utilizando "nombregrupo" como parametro de agrupación de los registros...
Además de los condicionales para la impresión de cada uno de los campos.
"nombregrupo" es alias de "grupos.NOMBRE" y "grupoart" de "opermv.GRUPO".
Sin embargo, cuando en la factura no se ingresan en orden los registros de cada grupo, el reporte asume que se trata de otro grupo y se imprime incorrectamente el reporte, como sucede en este caso con el grupo de "MEDICAMENTOS", ya que entre el CARDIOPRIL y la CLINDAMICINA se ingresaron otros registros no pertenecientes a este grupo de inventario.
El reporte completo de puede descargar del siguiente link
https://www.dropbox.com/s/5na0rcqx71elmem/relmatymed2.pdf
Creo que la solución pasaría por algún parámetro que estoy obviando en el agrupamiento del reporte o por la modificación de la clausula WHERE del mismo, para asi recuperar solo los registros que serán utilizados en el reporte y evitar el salto.
Si alguien sabe como resolverlo de una forma u otra, le agradezco de antemano la información que pueda facilitarme al respecto.
Saludos.
Re: Reporte con Agrupamiento y filtrado de registros.
Miér Jul 25, 2012 3:10 pm
Pude resolver el problema creando un Informe Adicional, con una copia de los reports y query de la FACTURA STANDAR y modificando de la siguiente forma las condiciones del mismo.
- syhcomputacion
- Cantidad de envíos : 393
Edad : 50
Fecha de inscripción : 18/02/2008
Re: Reporte con Agrupamiento y filtrado de registros.
Miér Jul 25, 2012 3:38 pm
creo que con ordenar el cursor resultante tienes por "nombregrupo" tienes...
en el dataenviroment en el procedure init, alli capturas el cursor y lo ordenas por ese campo "nombregrupo", ej:
w_allias=alias()
select * from &w_alias order by nombregrupo into cursor &w_alias
go top
prueba e informas..
Saludos
en el dataenviroment en el procedure init, alli capturas el cursor y lo ordenas por ese campo "nombregrupo", ej:
w_allias=alias()
select * from &w_alias order by nombregrupo into cursor &w_alias
go top
prueba e informas..
Saludos
Re: Reporte con Agrupamiento y filtrado de registros.
Jue Jul 26, 2012 7:49 pm
Buen día Richard.
Agradezco tu respuesta. La verdad en Visual Fox Pro no tengo nada de experiencia; he intentado modificar el Data Environment tomando como referencia el ejemplo que me diste y no logro que se ordenen los registros de la forma deseada.
El Data Evironment que corresponde al formato que necesito modificar es una copia del Factur01
Cualquier orientación adicional al respecto será bien recibida.
Saludos.
Agradezco tu respuesta. La verdad en Visual Fox Pro no tengo nada de experiencia; he intentado modificar el Data Environment tomando como referencia el ejemplo que me diste y no logro que se ordenen los registros de la forma deseada.
El Data Evironment que corresponde al formato que necesito modificar es una copia del Factur01
- Código:
PROCEDURE Init
*INITBLOCK
*------------------
* Parametros de seteo de entorno
initset()
select alias()
lnameAlias=alias()
cm_documento=documento
** para obtener las formas de pago del documento, si el cursor devuelve al menos un registro es porque tiene abonos
** adicionalmente si posee mas de un abono sera sumado en cada forma de pago correspondiente, la estructura del cursor es identica a la de operclit
**
ArmaFormaPago("FAC",cm_documento,3) && 1= traer formas de pago , 2=trae el vuelto, 3=devuelve copia de operclit pero con los saldos acumulados
SELECT formapago
*
* Este bloque permite exportar en un archivo texto los parámetros que requiere el centro de impresión fiscal
* la idea es que por la reimpresión de factura (NO FISCAL) el usuario puedo crear un archivo plano para que otro software pueda
* tomar la información de la factura hecha en Premium Soft y registrarlo en su producto de software que use
*
*!* SELECT(lnameAlias)
*!* cDocumentoCIF="FACTI"+ALLTRIM(documento)
*!* cArchivoTi="FACTI"+ALLTRIM(documento)+".txt"
*!* cArchivoMv="FACMV"+ALLTRIM(documento)+".txt"
*!* cRutaInArchivo="C:\x\Gary\" &&&&& ACA SE MODIFICA LA RUTA DONDE SE GENERARA EL ARCHIVO (2)
*!* *
*!* create cursor cursor_operti (documento c(20),;
*!* nombrecli c(80),;
*!* rif c(15),;
*!* direccion c(150),;
*!* totdescuen n(19,2),;
*!* totpagos n(19,2),;
*!* totalfinal n(19,2),;
*!* recargos n(19,2),;
*!* recargoprc n(19,2),;
*!* efectivo n(19,2),;
*!* cheque n(19,2),;
*!* tcredito n(19,2),;
*!* tdebito n(19,2),;
*!* ncredito n(19,2),;
*!* otrotipo n(19,2),;
*!* Tipodoc c(3),;
*!* totneto n(19,2),;
*!* totimpuest n(19,2),;
*!* alicuota n(19,3),;
*!* baseimpo1 n(19,2),;
*!* baseimpo2 n(19,2),;
*!* baseimpo3 n(19,2),;
*!* notas c(100),;
*!* aplicadoa c(20),;
*!* fechadev d(8),;
*!* horadev c(5),;
*!* serialprint c(25),;
*!* facfiscal c(8))
*!* **
*!* * Tabla de movimientos de factura
*!* *
*!* create cursor cursor_opermv (documento c(20),;
*!* codigo c(25),;
*!* nombre c(80),;
*!* unidad c(20),;
*!* cantidad n(19,4),;
*!* preciofin n(19,2),;
*!* timpueprc n(19,3),;
*!* agrupado n(3),;
*!* baseimpo1 n(19,3),;
*!* baseimpo2 n(19,3),;
*!* baseimpo3 n(19,3))
*!* *--- encabezado
*!* select cursor_operti
*!* append blank
*!* replace documento with cDocumentoCIF
*!* replace nombrecli with &lnameAlias->nombrecli
*!* replace rif with &lnameAlias->rif
*!* replace direccion with &lnameAlias->direccion
*!* replace totpagos with &lnameAlias->totpagos
*!* replace totalfinal with &lnameAlias->totalfinal
*!* replace efectivo WITH formapago.efectivo
*!* replace cheque WITH formapago.bcocheqmto
*!* replace tcredito WITH formapago.mtotarjeta
*!* replace tdebito WITH formapago.tardebmto
*!* replace otrotipo WITH formapago.otrotipo
*!* replace totimpuest with &lnameAlias->totimpuest
*!* replace totdescuen WITH &lnameAlias->totdescuen
*!* *--- movimiento
*!* select * from (lnameAlias) where 1=1 into cursor opermv_export readwrite
*!* select opermv_export
*!* go top
*!* do while !eof()
*!* select cursor_opermv
*!* append blank
*!* replace documento with cDocumentoCIF
*!* replace codigo with opermv_export.codigo
*!* replace nombre with opermv_export.nombre
*!* replace unidad with opermv_export.unidad
*!* replace cantidad with opermv_export.cantidad
*!* replace preciofin with opermv_export.preciofin
*!* replace timpueprc with opermv_export.timpueprc
*!* *--
*!* select opermv_export
*!* skip
*!* ENDDO
*!* select cursor_operti
*!* GO top
*!* * Copiando archivo de encabezado
*!* COPY TO (cRutaInArchivo+cArchivoTi) DELIMITED WITH tab
*!* select cursor_opermv
*!* GO top
*!* COPY TO (cRutaInArchivo+cArchivoMV) DELIMITED WITH tab
*
* Fin del proceso
*
*
SELECT (lnameAlias)
GO top
ENDPROC
Cualquier orientación adicional al respecto será bien recibida.
Saludos.
- syhcomputacion
- Cantidad de envíos : 393
Edad : 50
Fecha de inscripción : 18/02/2008
Re: Reporte con Agrupamiento y filtrado de registros.
Jue Jul 26, 2012 7:54 pm
contactame y te ayudo en eso...
Saludos
Saludos
Re: Reporte con Agrupamiento y filtrado de registros.
Jue Jul 26, 2012 7:59 pm
Acabo de hacer una prueba y funcionó.
Solo sustituí la línea
Por
Gracias Richard, una vez mas!
Solo sustituí la línea
- Código:
SELECT (lnameAlias)
Por
- Código:
SELECT * from &lnameAlias order by nombregrupo into cursor &lnameAlias
Gracias Richard, una vez mas!
- syhcomputacion
- Cantidad de envíos : 393
Edad : 50
Fecha de inscripción : 18/02/2008
Re: Reporte con Agrupamiento y filtrado de registros.
Jue Jul 26, 2012 8:20 pm
Excelente Marco, esa es la idea de este foro ayudarnos y aprender todos..
Saludos
Saludos
Permisos de este foro:
No puedes responder a temas en este foro.