Página 1 de 1

TOTAL en Report

Publicado: Jue Ago 23, 2007 8:21 pm
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
--

TOTAL en Report

Publicado: Vie Ago 24, 2007 10:40 am
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
--