I want to share my problem based on the topic above... the details are below:
Code: Select all | Expand
Given the table:
IID NAME ParentID Level
1 Test01 0 2
2 Test003a1 1 3
3 Test003a2 1 3
4 Test02 0 2
5 Test003b1 4 3
6 Test003b2 4 3
7 Test004 6 4
Code: Select all | Expand
FUNCTION uTreeInitDb()
TREE aTree[i]
TREEITEM aItem[i] PROMPT "Root"
aItem[i]:Cargo := { "Root", Space(20), Space(20), Space(20)}
aItem[i]:nLevel := 1
nLvl := Len(aRec) + 1
o3 := aItem[i]
uFillChild(aItem[i])
ENDTREE
.........
//----------------------------------------------------------------------------//
FUNCTION uFillChild(oParent)
LOCAL oErr, nAdsErr
LOCAL nLevel, oTree, oItem
TRY
nCtr := nCtr + 1
msginfo(cvaltochar(nLvlTmp) + ' -- '+ cvaltochar(aRec[nCtr-1][4]) )
IF nLvlTmp <> aRec[nCtr-1][4]
TREE oTree
ELSE
oTree := o3
ENDIF
IF nLvl <> nCtr
IF nLvlTmp == aRec[nCtr-1][4]
TREEITEM oItem PROMPT aRec[nCtr - 1][ 2 ]
oItem:Cargo := {aRec[nCtr-1][1], aRec[nCtr-1][2], aRec[nCtr-1][3], aRec[nCtr-1][4]}
oItem:nlevel := aRec[nCtr-1][4]
msginfo('oooops')
oItem:bAction := { |o| o:SetTree( uFillChild( o ) ) , o:bACtion := nil } //o:SetTree( uFillChild( o ) ) // The error stops here
ELSE
nLevel := oParent:nLevel + 1
TREEITEM oItem PROMPT aRec[nCtr - 1][ 2 ]
oItem:Cargo := {aRec[nCtr-1][1], aRec[nCtr-1][2], aRec[nCtr-1][3], aRec[nCtr-1][4]}
oItem:nlevel := nLevel
nLvlTmp := aRec[nCtr-1][4]
oItem:bAction := { |o| o:SetTree( uFillChild( o ) ), o:bACtion := nil }
ENDIF
ELSE
TREEITEM oItem PROMPT aRec[nCtr - 1][ 2 ]
oItem:Cargo := {aRec[nCtr-1][1], aRec[nCtr-1][2], aRec[nCtr-1][3], aRec[nCtr-1][4]}
oItem:nlevel := aRec[nCtr-1][4]
oItem:bAction := { |o| MsgInfo( o:cPrompt ) }
ENDIF
IF nLvlTmp <> aRec[nCtr-1][4]
ENDTREE
ENDIF
CATCH oErr
IF ValType( oErr ) == "O"
nAdsError := AdsGetLastError()
MsgStop( '::AdsError ' + '['+cValToChar(nAdsError)+'] ' + CRLF +;
'::SubSystem ' + cValToChar( oErr:SubSystem ) + CRLF +;
'::SubCode ' + cValToChar( oErr:SubCode ) + CRLF +;
'::Operation ' + cValToChar( oErr:Operation ) + CRLF +;
'::Description ' + cValToChar( oErr:Description ) + CRLF +;
'::Argument ' + valToPrg( oErr:Args ), 'uFillChild()' )
END
END
RETURN oTree
I hope someone can help me to solve my problem... thanks in advance....
regards,
apollo