FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour como crear grupo en tiempo de ejecucion
Posts: 400
Joined: Fri May 11, 2007 08:20 PM
como crear grupo en tiempo de ejecucion
Posted: Sat Aug 13, 2011 03:17 AM
Espero que esta vez si me puedan ayudar les explico con un ejemplo
Te explico que quiero hacer usando la clase report

    --------------------------------------------------------------------------------------------
    cta ruc Descripcion Monto
    --------------------------------------------------------------------------------------------
    12 Emitidas en cartera
    1221 Emitidas en cartera .....

    1221 04205149 YAHR HD LAU 450.00
    1221 06154943 LOPEZ CASANA FLORENCIA 200.00
    1221 0 7777360 BOBBIO GARCIA CARLOS 550.55
    ..........
    --------------------------------------------------------------------------------------------
    Subtotal 1221 1200.55
    1220 Anticipo de Clientes
    1220001 01343072 VALDIVIA PINAZO 800.00
    1220001 33255222 OLIVARI VASQUEZ 2362.22
    1220001 69633222 CERRUTI MARIA 255.33
    1220002 44222223 BROZOVICH MARIA 116.33
    1220002 56666665 LIGIA SILVIA 4555.33
    1220003 45896652 BATISTA NICOLA 223.36
    1220003 22221232 FUNES CARLITOS 1222.22
    1220003 88282122 YLLANA LUCRECIA 2333.22

    Quiero poder partir este ultimo grupo en subgrupos
    que quede asi:
    1220 Anticipo de clientes
    12200001 Proyecto Tallanes

    1220001 01343072 VALDIVIA PINAZO 800.00
    1220001 33255222 OLIVARI VASQUEZ 2362.22
    1220001 69633222 CERRUTI MARIA 255.33
    -----------------------------------------------------------------------------------------
    Subtotal 1220001 3417.53
    12200002 Proyecto Tradiciones
    1220002 44222223 BROZOVICH MARIA 116.33
    1220002 56666665 LIGIA SILVIA 4555.33
    -----------------------------------------------------------------------------------------
    Subtotal 1220002 4671.66

    12200002 Proyecto Sur
    1220003 45896652 BATISTA NICOLA 223.36
    1220003 22221232 FUNES CARLITOS 1222.22
    1220003 88282122 YLLANA LUCRECIA 2333.22
    -----------------------------------------------------------------------------------------
    Subtotal 1220002 3778.80
    Subtotal 1220 11867. 99

    [/list:u]

    Este es mi codigo de programa pero no me obedece

    Code (fw): Select all Collapse
    REPORT oRpt                                                       ;
        ...
        GROUP oGrp1                           ;
            ON Left(TMP->Cuenta,2)            ;
            HEADER Left(TMP->Cuenta,2)+' '+ACONCUE->Descrip;
            FOOTER 'Total :'           ;
            FONT 5
    
        GROUP oGrp2                           ;
            ON Left(TMP->Cuenta,4)            ;
            HEADER Left(TMP->Cuenta,4)+' '+ACONCUE->Descrip;
            FOOTER 'SubTotal :'           ;
            FONT 5
    
          COLUMN TITLE " ","Cuenta"                 ;
                DATA TMP->CUENTA                    ;
                FONT 2 SIZE 9
    
          COLUMN TITLE " ","Ruc"                    ;
                DATA TMP->Ruc                       ;
                FONT 2 SIZE 15                                                                                                                                                                                 
          ...                                             
          ...
    
         ACTIVATE REPORT oRpt ;
            ON STARTGROUP iif(len(tmp->cuentat)=8,createnewgroup(),);
            ON ENDGROUP iif(len(oRpt:aGroups)=3, eval({||oRpt:Delgroup(3), oRpt:Stabilize() }),)
    
    END REPORT
    
    Static Function createnewgroup()
    oGrp3:= TRGroup():New({|| left(tmp->cuenta,8) }, {|| tmp->cuenta+" "+aconcue->descrip}, {|| "Subtotal" }, , , oRpt) 
    oRpt:Stabilize()
    Return Nil
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: como crear grupo en tiempo de ejecucion
Posted: Sun Aug 14, 2011 05:42 PM
Yo lo haría así:

Code (fw): Select all Collapse
     ACTIVATE REPORT oRpt ;
        ON INIT iif(len(tmp->cuentat)=8,createnewgroup( oRpt  ),);
        ON ENDGROUP iif(len(oRpt:aGroups)=3, eval({||oRpt:Delgroup(3), oRpt:Stabilize() }),)

END REPORT

Static Function createnewgroup( oRpt )
oGrp3:= TRGroup():New({|| left(tmp->cuenta,8) }, {|| tmp->cuenta+" "+aconcue->descrip}, {|| "Subtotal" }, , , oRpt)
oRpt:Stabilize()
Return Nil
______________________________________________________________________________

Sevilla - Andalucía

Continue the discussion