a tree with tdatabase give me error
Posted: Thu Jan 26, 2023 12:09 pm
I tried to converte a tree into Tdatabase but make me error
I open the database with tdatabase
the error

the original
My test
I open the database with tdatabase
Code: Select all | Expand
::oTabMag:= TTabMag():New()
::oTabMag:SetOrder(1 )
::oTabMag:GoTop()
::oTreeMag := ::MakeTree()
Code: Select all | Expand
Error description: Error BASE/1004 Class: 'NIL' has no exported method: CARGO
Args:
[ 1] = U
Stack Calls
===========
Called from: => CARGO( 0 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:SETCOLSFORTREE( 7990 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:SETTREE( 7943 )
Called from: .\source\classes\XBROWSE.PRG => XBRWSETDATASOURCE( 17605 )
Called from: .\source\classes\XBROWSE.PRG => XBROWSENEW( 17348 )
Called from: source\Categorie\TCategorie.prg => TTABCAT:NEW( 135 )

the original
Code: Select all | Expand
static function MakeTree()
field CODICE
local oTree
local c1, c2, c3
USE "TABMAG" NEW SHARED
INDEX ON CODICE TAG CODICE TO TMP MEMORY
GO TOP
TREE oTree
do while ! eof()
TREEITEM CODICE CARGO { FIELD->DESC }
c1 := Left( CODICE, 2 )
SKIP
TREE
do while Left( CODICE,2 ) == c1
TREEITEM CODICE CARGO { FIELD->DESC }
c2 := Left( CODICE, 4 )
SKIP
TREE
do while Left( CODICE, 4 ) == c2
TREEITEM CODICE CARGO { FIELD->DESC }
SKIP
enddo
ENDTREE
enddo
ENDTREE
enddo
ENDTREE
oTree:OpenAll()
CLOSE TAG
return oTree
My test
Code: Select all | Expand
METHOD MakeTree() CLASS TTabCat
FIELD CODICE
local oTree
local c1, c2, c3
::oTabMag:gotop()
// USE "TABMAG" NEW SHARED
// INDEX ON CODICE TAG CODICE TO TMP MEMORY
// GO TOP
TREE oTree
do while ! ::oTabMag:eof()
TREEITEM ::oTabMag:CODICE CARGO { ::oTabMag:DESC }
c1 := Left( ::oTabMag:CODICE, 2 )
::oTabMag:skip()
TREE
do while Left( ::oTabMag:CODICE,2 ) == c1
TREEITEM ::oTabMag:CODICE CARGO { ::oTabMag:DESC }
c2 := Left( ::oTabMag:CODICE, 4 )
::oTabMag:skip()
TREE
do while Left( ::oTabMag:CODICE, 4 ) == c2
TREEITEM ::oTabMag:CODICE CARGO { ::oTabMag:DESC }
::oTabMag:skip()
enddo
ENDTREE
enddo
ENDTREE
enddo
ENDTREE
oTree:OpenAll()
return oTree