OTRAS PREGUNTAS DE REPORT - (RESUELTO)

User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

OTRAS PREGUNTAS DE REPORT - (RESUELTO)

Post by joseluisysturiz »

Gracias a los colegas ya adelante bastante mi reporte pero ahora me pasa algo curioso....

1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?

asi es una lata.....

HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"

2.estoy usando oRpt:CellView(), esta bien porque me pone valores de registros entre celdas estilo excel, pero, al colocar otros textos al final de la impresion del ultimo registro se siguen dibujando la lineas verticales..solo easa...aca anexo la imagen de mi report, probe de diferentes formas con oRpt:NewLine() , oRpt:Startline(), agregue oRpt:TotalLine( RPT_DOUBLELINE ) y nada...este es el codigo..

END REPORT

* oFont[1]:END()
* oFont[2]:END()
* oFont[3]:END()

oRpt:CellView() // COLOCA COLUMNAS DENTRO DE CELDAS TIPO HOJA EXCEL
oRpt:oDevice:lPrvModal:=.T. // NI IDEA PARA QUE SIRVE

oRpt:bPostEnd :={|| DatosFin( oRpt ) }

ACTIVATE REPORT oRpt

USE

return nil


FUNCTION datosfin( oRpt )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas en Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas solo Alicuota Reducida" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota Reducida" )

RETURN NIL

esta la imagen...mi ultimo registro es el 000114
Image
Image

Gracias de antemano...
Last edited by joseluisysturiz on Wed Oct 29, 2008 1:53 pm, edited 2 times in total.
Dios no está muerto...

Gracias a mi Dios ante todo!
Loren
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Post by Loren »

Jose Luis, yo hago así y me funciona de maravillas:

Code: Select all | Expand

 DEFINE PEN oPen1 WIDTH 1 COLOR CLR_HGRAY
  report infor preview title 'BALANCE','CALCULO POR ARTÍCULOS','Periodo: '+IIF(EMPTY(desde),'GENERAL','del '+dtoc(desde)+' al '+dtoc(hasta)) left PEN oPen1 HEADER alltrim(nempresa),' ' center footer 'Fecha del listado: '+dtoc(date())+space(80)+'Pagina: '+str(infor:npage,3) font letra_cabecera1, letra_cuerpo1, llistado CAPTION 'BALANCE. Calculo por artículos.'
   GROUP ON tipofami HEADER iif(tipofami='PL','>> PLANTAS',iif(tipofami='RI','>> RIEGOS',iif(tipofami='IN','>> INSUMOS',iif(tipofami='RA','>> RATIOS',)))) FOOTER "Total: "+ltrim(str(infor:aGroups[1]:nCounter))+' artículos.' font 1
    column title 'Código' data codigo size 6 font 2 grid
    column title 'Descripción' data descrip size 35 font 2 grid
    column title 'Udes.','Vendidas' data xudes TOTAL size 6 font 2 grid
    column title 'Importe','Venta','(A)' data xvven PICTURE '9999999.99' total size 8 font 2 grid
    column title 'Valor','Costo','(B)' data xvcos PICTURE '9999999.99' total size 8 font 2 grid
    column title 'Beneficio',' ','(C=A-B)' data xvven-xvcos PICTURE '9999999.99' total size 8 font 2 grid
    column title '% s/las','ventas' data (xvven/ttventa)*100 size 10 font 2 grid
    column title '% s/los','benef.' data ((xvven-xvcos)/(ttventa-ttcosto))*100 size 10 font 2 grid
  end report
  infor:oHeader:aFont[1]:= {|| 3 }
  infor:oHeader:aFont[2]:= {|| 3 }
 activate report infor on change balance3(.t.) ON POSTEND balance4()
 release xudes, xvcos, xvven
return

funct balance3(avanzar)
 select 2
 if avanzar=.t.
  skip
 endif
 c=codigo
 select 24
 find &c
 store 0 to xvcos, xudes, xvven
 do while .not. eof() .and. c=codart
  xudes+=cantidad
  xvcos+=cantidad*pcosto
  xvven+=importe
  skip
 enddo
 select 2
 if avanzar=.t.
  skip-1
 endif
return

funct balance4
 infor:lGrid:=.f.
 for x=1 to 4
  infor:NewLine()
 next
 infor:Say(2,'Total Ingresos por ventas:')
 infor:Say(4,transform(infor:aColumns[4]:nTotal,'9,999,999.99'),2,2) ; infor:NewLine() &&Penultimo 2=tipo letra ; ultimo 2=justificacion a la dcha, si fuese 1, a la izda.
 infor:Say(2,'Total Costes de las ventas:')
 infor:Say(4,transform(infor:aColumns[5]:nTotal,'9,999,999.99'),2,2) ; infor:NewLine()
 infor:Say(2,'Total Beneficio Bruto:')
 infor:Say(4,transform(infor:aColumns[6]:nTotal,'9,999,999.99'),2,2) ; infor:NewLine()
 infor:Say(2,'Total Gastos en este periodo:')
 infor:Say(4,transform(ttgasto+ttbase,'9,999,999.99'),2,2) ; infor:NewLine() ; infor:NewLine()
 infor:Say(2,'TOTAL BENEFICOS NETOS:',3) && 3=tipo de letra
 infor:Say(4,transform(infor:aColumns[4]:nTotal-infor:aColumns[5]:nTotal-ttgasto-ttbase,'9,999,999.99'),3)
return


Estudia mi ejemplo.... le podrás sacar mucho partido.
Un saludo.
LORENZO
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OTRAS PREGUNTAS DE REPORT

Post by FranciscoA »

oRpt:lGrid:=.f. //quitar los divisores de columnas

Saludos.
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: OTRAS PREGUNTAS DE REPORT

Post by joseluisysturiz »

FranciscoA wrote:oRpt:lGrid:=.f. //quitar los divisores de columnas

Saludos.

Gracias por su pronta respuesta, sabia que eso es lo que me me esta saboteando, intentaba pero sobre oRpt:CellView() , tratando de desactivarla....lo intente, pero creo en el lugar equivocado, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: OTRAS PREGUNTAS DE REPORT

Post by joseluisysturiz »

joseluisysturiz wrote:
FranciscoA wrote:oRpt:lGrid:=.f. //quitar los divisores de columnas

Saludos.

Gracias por su pronta respuesta, sabia que eso es lo que me esta saboteando, intentaba pero sobre oRpt:CellView() , tratando de desactivarla....lo intente, pero creo en el lugar equivocado, y sobre este otro tema, se puede o no se puede....para no seguir dandole vuelta ni tratar de inventar la rueda..

1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?

asi es una lata.....

HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"
saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OTRAS PREGUNTAS DE REPORT

Post by FranciscoA »

Intenta asi, a ver que te resulta: (es una salida rápida)

COLUMN TITLE CentTitCol("NOMBRE DE LA CUENTA",45) ;
DATA CDIARIO->NOMBRE ;
SIZE 45;
GRID 1


//------------------------------------
Function CentTitCol(cTituCol,nColSize)
Return Space( nColSize-Len(alltrim(cTituCol)) ) + Alltrim(cTituCol)
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: OTRAS PREGUNTAS DE REPORT

Post by joseluisysturiz »

FranciscoA wrote:Intenta asi, a ver que te resulta: (es una salida rápida)

COLUMN TITLE CentTitCol("NOMBRE DE LA CUENTA",45) ;
DATA CDIARIO->NOMBRE ;
SIZE 45;
GRID 1


//------------------------------------
Function CentTitCol(cTituCol,nColSize)
Return Space( nColSize-Len(alltrim(cTituCol)) ) + Alltrim(cTituCol)

Franciso, esto seria como para que.....?
no tengo problema con las COLUMN, lo que preguntaba era sobre los HEADER mira mi pregunta,,,solo si se puede hacer algo...

1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?

asi es una lata.....

HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OTRAS PREGUNTAS DE REPORT

Post by FranciscoA »

joseluisysturiz wrote:
FranciscoA wrote:Intenta asi, a ver que te resulta: (es una salida rápida)

COLUMN TITLE CentTitCol("NOMBRE DE LA CUENTA",45) ;
DATA CDIARIO->NOMBRE ;
SIZE 45;
GRID 1


//------------------------------------
Function CentTitCol(cTituCol,nColSize)
Return Space( nColSize-Len(alltrim(cTituCol)) ) + Alltrim(cTituCol)

Franciso, esto seria como para que.....?
no tengo problema con las COLUMN, lo que preguntaba era sobre los HEADER mira mi pregunta,,,solo si se puede hacer algo...

1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?

asi es una lata.....

HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"


Hasta donde sé, el TITLE y/o HEADER de tReport, solo pueden colocarse a la izquierda, centro o derecha: RIGHT, CENTER, LEFT.

Quizás modificando la classe...
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: OTRAS PREGUNTAS DE REPORT

Post by joseluisysturiz »

FranciscoA wrote:
joseluisysturiz wrote:
FranciscoA wrote:Intenta asi, a ver que te resulta: (es una salida rápida)

COLUMN TITLE CentTitCol("NOMBRE DE LA CUENTA",45) ;
DATA CDIARIO->NOMBRE ;
SIZE 45;
GRID 1


//------------------------------------
Function CentTitCol(cTituCol,nColSize)
Return Space( nColSize-Len(alltrim(cTituCol)) ) + Alltrim(cTituCol)

Franciso, esto seria como para que.....?
no tengo problema con las COLUMN, lo que preguntaba era sobre los HEADER mira mi pregunta,,,solo si se puede hacer algo...

1. se puede poner la lineas de HEADER el la posicion que se quiera sin usar +space(n), es decir darle un nRow, nCol...?

asi es una lata.....

HEADER "NOMBRE"+SPACE(150)+"REGISTRO"+SPACE(150)+"PERIODO"


Hasta donde sé, el TITLE y/o HEADER de tReport, solo pueden colocarse a la izquierda, centro o derecha: RIGHT, CENTER, LEFT.

Quizás modificando la classe...

Ok Francisco, muchas gracias...
esperaba se pudiese hacer algo como...

oRpt:oHeader(n):SAY( 1,"Total Ventas" )

siendo (n) el numero de la linea del oHeader...bueno....luego probare con otra clase, esto de poner Hearder a punta d calculo es un LATA...pero esta casi listo el REPORTE gracias a vuestros aportes y sugerencias....feliz dia a todos...saludos.. :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Post by FranciscoA »

TReport tiene el methodo Say(). Yo nunca lo he usado directamente.

TReport:Say( nCol, xText, nFont, nPad, nRow )

Recuerda que tambien tienes la clase TPrinter
Saludos.
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Post by joseluisysturiz »

FranciscoA wrote:TReport tiene el methodo Say(). Yo nunca lo he usado directamente.

TReport:Say( nCol, xText, nFont, nPad, nRow )

Recuerda que tambien tienes la clase TPrinter
Saludos.

Ya probare TPrinter....por ahora termino este report...luego revisare las demas clases de impresion.....gracias por la ayuda.... como vas con xBrowse.-..?...respondeme si quieres a mi privado de yaho...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Post by joseluisysturiz »

Srs,
iba todo bien hasta que no se que invente...ahora tengo este error de repente

Application
===========
Path and name: C:\SISINGE\PRUEBASX\PRUEBA.Exe (32 bits)
Size: 508,928 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 28/10/2008, 18:43:25
Error description: Error BASE/1004 Class: 'NIL' has no exported method: NEW
Args:
[ 1] = U
[ 2] = N 10

Stack Calls
===========
Called from: => NEW(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => DATOSFIN(118)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => (b)MAIN(108)
Called from: .\source\classes\REPORT.PRG => TREPORT:ENDPAGE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:END(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:PLAY(0)
Called from: .\source\classes\REPORT.PRG => (b)TREPORT:ACTIVATE(0)
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG(0)
Called from: => TDIALOG:DISPLAY(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:ACTIVATE(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => MAIN(110)

agregue esto nuevo...y ahora da el error anterior....

intente usar, oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
y nVentas siempre me da 0, nose si es que lo estoy usando en el lugar equivocado, lo hacia para calcular totales y colocarlos al final de reporte... gracias por su atencion y ayuda... :shock:

lineas del reporte:


oRpt:CellView() // COLOCA COLUMNAS DENTRO DE CELDAS TIPO HOJA EXCEL
oRpt:oDevice:lPrvModal := .T. // NI IDEA PARA QUE SIRVE

*oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
*msginfo(cValToChar(nVentas))

oRpt:bPostEnd :={|| DatosFin( oRpt, oDbf ) }

ACTIVATE REPORT oRpt

USE

return nil

FUNCTION datosfin( oRpt, oDbf )

local nTotales := Array{10}

&(oDbf)->( dbgotop() )

SUM total TO nTotales[1]
* SUM exento TO nTotales[2]
* SUM base TO nTotales[3]
* SUM iva TO nTotales[4]
* SUM ivaret TO nTotales[5]
* SUM exento TO nTotales[6]

oRpt:lGrid := .F. // DESACTIVA LAS CELDAS DE LOS REGISTRO TIPO EXCEL

oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas en Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas solo Alicuota Reducida" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota Reducida" )

RETURN NIL
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Post by FranciscoA »

joseluisysturiz wrote:Srs,
iba todo bien hasta que no se que invente...ahora tengo este error de repente

Application
===========
Path and name: C:\SISINGE\PRUEBASX\PRUEBA.Exe (32 bits)
Size: 508,928 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 28/10/2008, 18:43:25
Error description: Error BASE/1004 Class: 'NIL' has no exported method: NEW
Args:
[ 1] = U
[ 2] = N 10

Stack Calls
===========
Called from: => NEW(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => DATOSFIN(118)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => (b)MAIN(108)
Called from: .\source\classes\REPORT.PRG => TREPORT:ENDPAGE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:END(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:PLAY(0)
Called from: .\source\classes\REPORT.PRG => (b)TREPORT:ACTIVATE(0)
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG(0)
Called from: => TDIALOG:DISPLAY(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:ACTIVATE(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => MAIN(110)

agregue esto nuevo...y ahora da el error anterior....

intente usar, oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
y nVentas siempre me da 0, nose si es que lo estoy usando en el lugar equivocado, lo hacia para calcular totales y colocarlos al final de reporte... gracias por su atencion y ayuda... :shock:

lineas del reporte:


oRpt:CellView() // COLOCA COLUMNAS DENTRO DE CELDAS TIPO HOJA EXCEL
oRpt:oDevice:lPrvModal := .T. // NI IDEA PARA QUE SIRVE

*oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
*msginfo(cValToChar(nVentas))

oRpt:bPostEnd :={|| DatosFin( oRpt, oDbf ) }

ACTIVATE REPORT oRpt

USE

return nil

FUNCTION datosfin( oRpt, oDbf )

local nTotales := Array{10}

&(oDbf)->( dbgotop() )

SUM total TO nTotales[1]
* SUM exento TO nTotales[2]
* SUM base TO nTotales[3]
* SUM iva TO nTotales[4]
* SUM ivaret TO nTotales[5]
* SUM exento TO nTotales[6]

oRpt:lGrid := .F. // DESACTIVA LAS CELDAS DE LOS REGISTRO TIPO EXCEL

oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas en Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas solo Alicuota Reducida" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota Reducida" )

RETURN NIL


Aqui existe una contradicción. Estas usando STR(.. y TRANSFORM(... a la vez.
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )

Prueba asi:
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + Transform(nTotales[1],"999,999.99") ,,PAD_RIGHT, )


Si deseas alinear los valores, debes utilizar otra columna, como en este ejemplo. (para el texto, uso col 1, para los valores, la col 2)
oReport:Say(1, "Valor Productos Malos",,PAD_LEFT, )
oReport:Say(2, Transform(nMalo,"999,999.99") ,,PAD_RIGHT,)

Saludos
Francisco
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Post by joseluisysturiz »

FranciscoA wrote:
joseluisysturiz wrote:Srs,
iba todo bien hasta que no se que invente...ahora tengo este error de repente

Application
===========
Path and name: C:\SISINGE\PRUEBASX\PRUEBA.Exe (32 bits)
Size: 508,928 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 28/10/2008, 18:43:25
Error description: Error BASE/1004 Class: 'NIL' has no exported method: NEW
Args:
[ 1] = U
[ 2] = N 10

Stack Calls
===========
Called from: => NEW(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => DATOSFIN(118)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => (b)MAIN(108)
Called from: .\source\classes\REPORT.PRG => TREPORT:ENDPAGE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:END(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:PLAY(0)
Called from: .\source\classes\REPORT.PRG => (b)TREPORT:ACTIVATE(0)
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG(0)
Called from: => TDIALOG:DISPLAY(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:ACTIVATE(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => MAIN(110)

agregue esto nuevo...y ahora da el error anterior....

intente usar, oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
y nVentas siempre me da 0, nose si es que lo estoy usando en el lugar equivocado, lo hacia para calcular totales y colocarlos al final de reporte... gracias por su atencion y ayuda... :shock:

lineas del reporte:


oRpt:CellView() // COLOCA COLUMNAS DENTRO DE CELDAS TIPO HOJA EXCEL
oRpt:oDevice:lPrvModal := .T. // NI IDEA PARA QUE SIRVE

*oRpt:bStartRecord := {|| nVentas+= &(oDbf)->total }
*msginfo(cValToChar(nVentas))

oRpt:bPostEnd :={|| DatosFin( oRpt, oDbf ) }

ACTIVATE REPORT oRpt

USE

return nil

FUNCTION datosfin( oRpt, oDbf )

local nTotales := Array{10}

&(oDbf)->( dbgotop() )

SUM total TO nTotales[1]
* SUM exento TO nTotales[2]
* SUM base TO nTotales[3]
* SUM iva TO nTotales[4]
* SUM ivaret TO nTotales[5]
* SUM exento TO nTotales[6]

oRpt:lGrid := .F. // DESACTIVA LAS CELDAS DE LOS REGISTRO TIPO EXCEL

oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas en Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Exportacion Afectadas solo Alicuota Reducida" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota General+Adicional" )
oRpt:NewLine()
oRpt:SAY( 1,"Total Ventas Internas Afectadas solo Alicuota Reducida" )

RETURN NIL


Aqui existe una contradicción. Estas usando STR(.. y TRANSFORM(... a la vez.
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + STR( Transform(nTotales[1],"999,999.99") ) ,,PAD_RIGHT, )

Prueba asi:
oRpt:SAY( 1,"Total Ventas y/o Sin Derecho a Credito Fiscal: " + Transform(nTotales[1],"999,999.99") ,,PAD_RIGHT, )


Si deseas alinear los valores, debes utilizar otra columna, como en este ejemplo. (para el texto, uso col 1, para los valores, la col 2)
oReport:Say(1, "Valor Productos Malos",,PAD_LEFT, )
oReport:Say(2, Transform(nMalo,"999,999.99") ,,PAD_RIGHT,)

Saludos
Francisco

Franciso,
hice lo que me dijistes y nada.....
aun si suspendo las lineas SAY, sigue el error, solo suspendiendo la llamada a la funcion donde coloco los totales, no sale el error....esto me tiene como loco, ya que no veo el porque de dicho error....
el programa compila y todo...el informe se ejecuta...pèro cuando va hacer el PREVIEW da el erro;

Error description: Error BASE/1004 Class: 'NIL' has no exported method: NEW
Args:
[ 1] = U
[ 2] = N 10

Stack Calls
===========
Called from: => NEW(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => DATOSFIN(118)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => (b)MAIN(108)
Called from: .\source\classes\REPORT.PRG => TREPORT:ENDPAGE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:END(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:PLAY(0)
Called from: .\source\classes\REPORT.PRG => (b)TREPORT:ACTIVATE(0)
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG(0)
Called from: => TDIALOG:DISPLAY(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:ACTIVATE(0)
Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => MAIN(110)
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Post by FranciscoA »

Prueba a cambiar esto...
local nTotales := Array{10}

por esto:
local nTotales := Array(10)

O si no, declaralo asi:
local nTotales := {0,0,0,0,0,0,0,0,0,0} //si es que solo se van a manejar valores numericos.

Si el erro continua, muestra solo el codigo de la fila que indica el mensaje.
Ej: Called from: C:\SISINGE\PRUEBASX\REPORT.PRG => DATOSFIN(118)

Saludos.
Francisco
Post Reply