FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Una duda con Report
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM

Una duda con Report

Posted: Tue Feb 03, 2009 03:45 PM
Hola a todos
Tengo un report donde saco un balance contable, el tema es que tengo tres columnas de importes de las cuales siempre dos de ellas estan a cero, lo que deseo es poner la que no tiene cero como columna a sacar en el report, y no doy con el tema ya que me da este error

Application
===========
Path and name: C:\Proyectos\Wconta\GCONTA.Exe (32 bits)
Size: 709,120 bytes
Time from start: 0 hours 0 mins 10 secs
Error occurred at: 03-02-2009, 16:39:36
Error description: Error BASE/1068 Argument error: array access
Args:
[ 1] = A { ... }
[ 2] = O Object

Stack Calls
===========
Called from: .\source\classes\RCOLUMN.PRG => TRCOLUMN:STABILIZE(0)
Called from: .\source\classes\REPORT.PRG => (b)TREPORT:STABILIZE(0)
Called from: => AEVAL(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:STABILIZE(0)
Called from: .\source\classes\REPORT.PRG => TREPORT:ACTIVATE(0)
Called from: C:\PROYEC~1\Wconta\Source\gesh0520.prg => IMPRIMEBAL(534)

este es el codigo del report.
* ----------------------------------------------------------------------------
Function  ImprimeBal(aBalance)
* ----------------------------------------------------------------------------   
LOCAL aoFont[3], oPen1, oPen2
Local oReport
Local nSele := SELECT()
Local nImporte := 0,n := 0
Local cMes := "de "+NombMes(aBalance[2]) 
Local cTitulo

      dbSelectArea("BALA")      
      BALA->(dbGotop())
      

     DEFINE FONT aoFont[1] NAME "ARIAL" SIZE 0,-9 BOLD
     DEFINE FONT aoFont[2] NAME "ARIAL" SIZE 0,-9 
     DEFINE FONT aoFont[3] NAME "ARIAL" SIZE 0,-10 BOLD
     
     DEFINE PEN oPen1 WIDTH 3 COLOR CLR_HGREEN
     DEFINE PEN oPen2 WIDTH 1 COLOR CLR_HMAGENTA
     
    
     
     dbSelectArea("BALA")      
     BALA->(dbGotop())
     
     
     PrinterSetup()
     
     REPORT oReport TITLE  "BALANCE DE ACTIVO Y PASIVO", ;
                           aDatEmp[1]+"   EJERCICIO : " +aDatEmp[7],;
                           "Datos al mes "+cMes; 
          FONT   aoFont[1], aoFont[2],aoFont[3] ;
          PEN    oPen1, oPen2 ;
          HEADER "Fecha: "+aBalance[3],"","Página:"+Str(oReport:nPage,3) RIGHT ;
          PREVIEW
          
          cTitulo := BALA->descrip
          If BALA->importe == 0 .and. BALA->totalgrupo <> 0
             nImporte := BALA->totalgrupo
             n := 3
          ElseIf BALA->importe == 0 .and. BALA->totalsgrup <> 0
             nImporte :=  BALA->totalsgrup
             n := 1 
          ElseIf BALA->importe <> 0 
             nImporte :=  BALA->importe
             n := 2
          EndIf   
          
          
          COLUMN TITLE "DESCRIPCION" ;
          DATA cTitulo ;
          FONT aoFont[2]  ;
          GRID 2     
                       
          COLUMN TITLE "IMPORTE" ;
          DATA nImporte ;
          PICTURE "9,999,999.99";
          FONT aoFont[n];   
          GRID 2
                 

  END REPORT
  
  ACTIVATE REPORT oReport
     For n := 1 to 3
         aoFont[n]:End()
     EndFor
     
     oPen1:End()
     oPen2:End()
     
 RETURN NIL


Una ayudita plis, es urgente. Gracias
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 350
Joined: Wed Nov 02, 2005 03:28 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 03:59 PM

Te da error de array access, y viendo asi rapido es porque algun registro todos lo valores son "0". Por lo que yo pondria
If BALA->importe == 0 .and. BALA->totalgrupo <> 0
nImporte := BALA->totalgrupo
n := 3
ElseIf BALA->importe == 0 .and. BALA->totalsgrup <> 0
nImporte := BALA->totalsgrup
n := 1
ElseIf BALA->importe <> 0
nImporte := BALA->importe
n := 2
ELse <-----
nImporte :=0 <----
n:=1 <----- por ejemplo, el valor que quieras
EndIf

Espero sea eso y te sea de ayuda.
Saludos.

Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 04:30 PM
Hola Garbi

No creo que sea ese el tema, ya que he probado con un Do Case con todas las posibilidades que son cuatro y no hay más,
1 - Todos los importes de las tres columnas son cero
2 - La primera es cero, la segunda no y la tercera si
3 - La primera es cero, la segunda tambien, y la tercera no
4 - La primera no es cero, la segunda si y la tercera tambien
y el error es el mismo.
La n que has visto ahĂ­ es para seleccionar el font que voy a poner, segĂşn se de el caso.
Este era el cĂłdigo que estaba puesto antes

     REPORT oReport TITLE  "BALANCE DE ACTIVO Y PASIVO", ;
                           aDatEmp[1]+"   EJERCICIO : " +aDatEmp[7],;
                           "Datos al mes "+cMes; 
          FONT   aoFont[1], aoFont[2],aoFont[3] ;
          PEN    oPen1, oPen2 ;
          HEADER "Fecha: "+aBalance[3],"","Página:"+Str(oReport:nPage,3) RIGHT ;
          PREVIEW
          
          cTitulo := BALA->descrip
          Do Case
             Case BALA->importe = 0 .and. BALA->totalgrupo == 0 ;
                                    .and. BALA->totalsgrup == 0
                  nImporte := 0
                  n := 2
             Case BALA->imorte == 0 .and. BALA->totalgrupo == 0;
                                    .and. BALA->totalsgrup <> 0
                  nImporte := BALA->totalsgrup
                  n := 1
             Case BALA->importe == 0 .and. BALA->totalgrupo <> 0 ;
                                     .and. BALA->totalsgrup == 0
                  nImporte := BALA->totalgrupo                    
                  n := 3
             Case BALA->importe <> 0 .and. BALA->totagrupo == 0;
                                     .and. BALA->totalsgrup == 0
                  nImporte := BALA->importe
                  n := 2
          EndCase                                                                                   
          
          COLUMN TITLE "DESCRIPCION" ;
          DATA cTitulo ;
          FONT aoFont[2]  ;
          GRID 2     
                       
          COLUMN TITLE "IMPORTE" ;
          DATA nImporte ;
          PICTURE "@E9,999,999.99";
          FONT aoFont[n];   
          GRID 2
                 

  END REPORT


Alguien me tira un ladrillo plissssssssssss (a ver si me despierto :-) )
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 350
Joined: Wed Nov 02, 2005 03:28 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 04:46 PM

Hola, el error de array es porque algun valor que asignas como array no existe, como supongo que ya sabras.
Una preguntilla es posible que algun registro el importe sea != 0 y algun total tambien sea distinto de cero,
es decir yo pondira un otherwise por si acaso.

Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 05:23 PM

Pues no Garbi

La primera columna de importes es donde se acumula el importe de las cuentas, es posible que algun grupo no tenga importes y en esa posiciĂłn esa columna sea cero.
La segunda columna es la de sumas de los grupos de importes, por tanto habra columnas donde el importe no sea cero (donde se indique que se sume el grupo de importes de la anterior columna)
Y la tercera columna es la suma de subgrupos de la columna de importes por tanto el tema es idéntico al anterior de la segunda columna.
Los cuatro casos que describí antes con el Do Case son los únicos que se pueden dar, eso está comprobado con la tabla que se genera, no hay otros casos posibles.
Por explicarlo mejor, donde la columna importe no es cero, las otras dos columnas son cero, donde la columna totalgrupo no es cero, las otras dos son cero, y donde la columna totalsgrup no es cero, las otras dos si lo son, y por Ăşltimo se pude dar el caso que las tres columnas sean cero, bien por que sean lĂ­neas de encabezado o bien porque el grupo de cuentas que lo integran no tengna movimiento ni saldo inicial.
Ademas el error lo da en la clase TrColumn método stabilize

Gracias Garbi

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 06:47 PM

Pedro,

inicializa n := 1

podria ser por ahi el problema

William, Morales

Saludos



méxico.sureste
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 08:10 PM

Hola

prueba

.......

DATA If( BALA->totalgrupo <> 0 , BALA->totalgrupo,;
If( BALA->totalsgrup <> 0,BALA->totalsgrup,;
BALA->importe ) ,;
)

algo asi diretamente sobre la columna del reporte, si no, tendrias que acualizar nImporte en bStartRecord o bStartLine del reporte

espero haber entendido

saludos

Marcelo

Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 08:11 PM

Hola William

No es el tema de inicializar n a 1 , pues ya lo estaba, el problema era el FONT, no lo cogía, pero ya está solucionado.
El caso es que me ha hecho cosas curiosas, cuando intentas poner un campo de una tabla y un resultado (que no es campo de la tabla sobre la que se va a ejecutar el report), por ejemplo el skip no funciona, saca el report con el mismo registro.
Si hay 30 registros, repite el primero 30 veces.
Pero bueno lo solucioné rellenando un arreglo con el campo de la tabla, el importe que quiero sacar y el numero del font que quiero poner. Así solo reporto el arreglo y listo.

Muchas gracias a todos.

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM

Re: Una duda con Report

Posted: Tue Feb 03, 2009 08:13 PM

Gracias Marcelo, pero como he puesto en el post anterior, lo más fácil era con un arreglo y listo

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO

Continue the discussion