FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error en TREE de Xbrowse vacío (Soluc a medias)
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Error en TREE de Xbrowse vacío (Soluc a medias)
Posted: Thu Jul 08, 2010 07:42 PM
Estimados Amigos

Estoy usando el tree integrado al Xbrowse basándome en el ejemplo xbrwtree.prg que genera el tree desde una tabla dbf, y yo lo uso con un recordset. El tree se genera muy bien, pero cuando la tabla está vacía se obtiene el error " No Exported Method CARGO", igual sucede si vacío la tabla dbf que usa el ejemplo ubicado en la carpeta samples.

Maestros Daniel , Antonio o alguien por favor me pueden ayudar a solucionar este inconveniente?, lo ideal sería que se genere un tree (browse) vacío.
Por si sirve, este es el código:
Code (fw): Select all Collapse
  @ 0, 0 XBROWSE ::oBrwAct OF ::oWinGen LINES CELL
    ::oBrwAct:SetTree( TreePlan(), { "openfold", "closefold", "nocheck" } )
    ADD TO ::oBrwAct DATA ::oBrwAct:oTreeItem:Cargo[ 1 ] HEADER "id_rubpre"
    ADD TO ::oBrwAct DATA ::oBrwAct:oTreeItem:Cargo[ 2 ] HEADER "rend_hora"
    ADD TO ::oBrwAct DATA ::oBrwAct:oTreeItem:Cargo[ 3 ] HEADER "unidad"
    ::oBrwAct:CreateFromCode()

Code (fw): Select all Collapse
static function TreePlan()

   local oTree, cState

   TREE oTree
      while !oVial:oRsRpl:EOF .and. !oVial:oRsRpl:BOF
         if Empty( cState )
            _TreeItem( ovial:oRsRpl:fields('proyecto'):Value ):Cargo := { space(20), Space( 20 ),Space( 20 ) }
            TREE
                cState = ovial:oRsRpl:fields('id_proy'):Value 
         else
            if cState != ovial:oRsRpl:fields('id_proy'):Value 
               ENDTREE
               cState = ovial:oRsRpl:fields('id_proy'):Value 
               _TreeItem( ovial:oRsRpl:fields('proyecto'):Value  ):Cargo := { Space( 20 ), Space( 20 ),Space( 20 ) }
               TREE
            endif   
         endif   
         if ovial:oRsRpl:fields('id_proy'):Value  == cState
            _TreeItem( ovial:oRsRpl:fields('descripcion'):Value  ):Cargo := { ovial:oRsRpl:fields('id_rubpre'):Value, ovial:oRsRpl:fields('rend_hora'):Value , ovial:oRsRpl:fields('unidad'):Value  }
         endif   
         ovial:oRsRpl:MoveNext()
      enddo
      ENDTREE
   ENDTREE
    if !oVial:oRsRpl:EOF .and. !oVial:oRsRpl:BOF
    ovial:oRsRpl:MoveFirst()
    endif

return oTree


Tengo la versión FW904 y es posible que actualmente ya esté arreglada, pero aún no hay money para actualizarme.

Saludos
Marcelo Jingo
Marcelo Jingo
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Error en TREE de Xbrowse vacío (Soluc a medias)
Posted: Fri Jul 09, 2010 05:08 PM

Bueno como no hay respuestas he realizado una chapuza: Si la tabla está vacia creo un item con una leyenda que indique al usuario adicionar elementos, y asi evito el error.

TREE oTree
_TreeItem( "Adicione Proyectos" ):Cargo := { space(20), Space( 20 ),Space( 20 ) }
ENDTREE
RETURN otree

Si alguien lo tiene ya solucionado como debe ser, por favor comparta.

Gracias y un Saludo

Marcelo Jingo

Marcelo Jingo
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Error en TREE de Xbrowse vacío (Soluc a medias)
Posted: Sat Jul 10, 2010 01:08 PM

Method SetTree of XBrowse is not intended to work with empty trees.

Implementation for empty trees would involve coding something like If( Empty( oBrw:oTreeItem ), <somevalue>, <oBrw:oTreeItem:<data>> )

For this even the method SetTree is to be modified.

Your work around is the best.

Regards



G. N. Rao.

Hyderabad, India

Continue the discussion