In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

TOTAL en Report

Foro público de Xailer en español
Responder
Israel Solis
Mensajes: 162
Registrado: Mié Nov 03, 2004 12:42 pm
Ubicación: Cancún, México
Contactar:

TOTAL en Report

Mensaje por Israel Solis »

Hola
En un reporte, deseo especificar que se totalicen ciertas columnas con valores numéricos, lo hago alterando la propiedad oRep:lTotal := .T. lo hago de esta manera ya que las columnas las defino:
NOTA: <::aColumnas1> y <::aColumnas2> contienen las definiciones de cada propiedad de las columnas
METHOD RepToPrint(aTitulo, lToExcel) CLASS tFrmRepMovsCont
REPORT oRep;
PREVIEW MODAL;
FONT oFntNormal, oFntBld, oFnt2Bld;
HEADER SetIni("Escuela"), TimeRep(), " " ALIGN taRIGHT;
JOBNAME ::cName;
TITLE "Movimientos Contables", " ", " ", " ", " ", " " // Máximo de lí­neas a ocupar en el tí­tulo del reporte
// mas abajo se sobreescribe con :oTitle:aLine := <aTitulo>
// El array <aTitulo> no puede ser mas grande de lo especificado
// en TITLE ya que si no truena.
FOR nColumna := 1 TO LEN(::aColumnas1)
IF !::aColumnas1[nColumna, REP_IMPRIMIR]
LOOP
ENDIF
WITH OBJECT oRep:AddColumn()
:aTitle := ::aColumnas2[nColumna, REP_TITLES]
:aData :={::aColumnas2[nColumna, REP_DATA]}
:nCharSize := ::aColumnas1[nColumna, REP_SIZE]
:aPicture :={::aColumnas1[nColumna, REP_PICTURE]}
:nDataFont := ::aColumnas1[nColumna, REP_FONT, 2]
:nTitleFont:= ::aColumnas1[nColumna, REP_FONT, 1]
:nAlignment:= ::aColumnas1[nColumna, REP_ALIGN]
// Si se omite :lTotal el reporte funciona perfectamente...
:lTotal := ::aColumnas1[nColumna, REP_TOTAL] // TRUENA CON ERROR: Subsistema: BASE
// Código de error: 1081
// Estado: .F.
// Descripción: Error de argumento
// Operación: +
// Argumentos: [ 1] = Tipo: U Valor: NIL [ 2] = Tipo: N Valor: 0.00
:nClrText := ::oLblFuente:nClrText
END WITH
NEXT
GROUP OF oRep ON FIELD->CtaConta HEADER FIELD->CtaConta + " " + AllTrim(FIELD->Nombre);
FOOTER "Subtotal (" + StrTrim(oRep:aGroups[1]:nCounter) + " movimientos)";
FONT 2
WITH OBJECT oRep
:oTitle:aFonts[1] := 3
:oTitle:aFonts[2] := 1
:oTitle:aFonts[3] := 2
:nGridStyle:= IF(::oChkLineas:lChecked, rgVERTICAL, rgNONE)
IF ::oChkPautado:lChecked
:nClrLined := RGB(230, 230, 230)
ENDIF
:oTitle:aLine := aTitulo // Se sobreescribe el Tí­tulo del reporte con los pasados en <aTitulo>
END WITH
IF lToExcel
oRep:ToExcel(::cArchivo)
ELSE
oRep:oFooter:aLine := {{||Application:cTitle + " - Página: " + StrTrim(oRep:nPage)}}
oRep:oFooter:aAlignment := { taCENTER }
RUN REPORT oRep ON STARTPAGE RepLogo(oRep, oImgLogo)
ENDIF
oFntNormal:Destroy()
oFntBld:Destroy()
oFnt2Bld:Destroy()
oImgLogo:Destroy()
RETURN NIL
Que estoy haciendo mal?
SALUDOS!!
Israel
--
Saludos :D

Israel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9441
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

TOTAL en Report

Mensaje por ignacio »

Israel,
Como le dice el mensaje de error en algún momento el valor de la columna es NIL y no un valor númerico. Al intentar sumar un valor NIL con otro valor numérico se produce el error.
En cualquier caso lo que está haciendo con lal propiedad lTotal no tiene ningún sentido, o es verdadero o es falso para todo el listado y tampoco tiene sentido ir cambiandole su valor constantemente. Si desea que en algún caso el valor de una columna no se totalice no tiene más que utilizar la función transform() para que se trate como de tipo carácter.
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
"Israel Solis" <isolis@sanroms.com> escribió en el mensaje news:[email=46cdc2bf@ozsrv2.ozlan.local...]46cdc2bf@ozsrv2.ozlan.local...[/email]
Hola
En un reporte, deseo especificar que se totalicen ciertas columnas con valores numéricos, lo hago alterando la propiedad oRep:lTotal := .T. lo hago de esta manera ya que las columnas las defino:
NOTA: <::aColumnas1> y <::aColumnas2> contienen las definiciones de cada propiedad de las columnas
METHOD RepToPrint(aTitulo, lToExcel) CLASS tFrmRepMovsCont
REPORT oRep;
PREVIEW MODAL;
FONT oFntNormal, oFntBld, oFnt2Bld;
HEADER SetIni("Escuela"), TimeRep(), " " ALIGN taRIGHT;
JOBNAME ::cName;
TITLE "Movimientos Contables", " ", " ", " ", " ", " " // Máximo de lí­neas a ocupar en el tí­tulo del reporte
// mas abajo se sobreescribe con :oTitle:aLine := <aTitulo>
// El array <aTitulo> no puede ser mas grande de lo especificado
// en TITLE ya que si no truena.
FOR nColumna := 1 TO LEN(::aColumnas1)
IF !::aColumnas1[nColumna, REP_IMPRIMIR]
LOOP
ENDIF
WITH OBJECT oRep:AddColumn()
:aTitle := ::aColumnas2[nColumna, REP_TITLES]
:aData :={::aColumnas2[nColumna, REP_DATA]}
:nCharSize := ::aColumnas1[nColumna, REP_SIZE]
:aPicture :={::aColumnas1[nColumna, REP_PICTURE]}
:nDataFont := ::aColumnas1[nColumna, REP_FONT, 2]
:nTitleFont:= ::aColumnas1[nColumna, REP_FONT, 1]
:nAlignment:= ::aColumnas1[nColumna, REP_ALIGN]
// Si se omite :lTotal el reporte funciona perfectamente...
:lTotal := ::aColumnas1[nColumna, REP_TOTAL] // TRUENA CON ERROR: Subsistema: BASE
// Código de error: 1081
// Estado: .F.
// Descripción: Error de argumento
// Operación: +
// Argumentos: [ 1] = Tipo: U Valor: NIL [ 2] = Tipo: N Valor: 0.00
:nClrText := ::oLblFuente:nClrText
END WITH
NEXT
GROUP OF oRep ON FIELD->CtaConta HEADER FIELD->CtaConta + " " + AllTrim(FIELD->Nombre);
FOOTER "Subtotal (" + StrTrim(oRep:aGroups[1]:nCounter) + " movimientos)";
FONT 2
WITH OBJECT oRep
:oTitle:aFonts[1] := 3
:oTitle:aFonts[2] := 1
:oTitle:aFonts[3] := 2
:nGridStyle:= IF(::oChkLineas:lChecked, rgVERTICAL, rgNONE)
IF ::oChkPautado:lChecked
:nClrLined := RGB(230, 230, 230)
ENDIF
:oTitle:aLine := aTitulo // Se sobreescribe el Tí­tulo del reporte con los pasados en <aTitulo>
END WITH
IF lToExcel
oRep:ToExcel(::cArchivo)
ELSE
oRep:oFooter:aLine := {{||Application:cTitle + " - Página: " + StrTrim(oRep:nPage)}}
oRep:oFooter:aAlignment := { taCENTER }
RUN REPORT oRep ON STARTPAGE RepLogo(oRep, oImgLogo)
ENDIF
oFntNormal:Destroy()
oFntBld:Destroy()
oFnt2Bld:Destroy()
oImgLogo:Destroy()
RETURN NIL
Que estoy haciendo mal?
SALUDOS!!
Israel
--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder