Código: Selecionar todos
PROCEDURE Main
LOCAL aList := {}, aUF, aCidade, aBairro, aInfo
SetMode(30,100)
CLS
AddArray( aList, "SP", "SAO PAULO", "CENTRO", "JOSE", "RUA 1", "123" )
AddArray( aList, "SP", "SAO PAULO", "CENTRO", "JOSE", "RUA 1", "123" )
AddArray( aList, "SP", "SAO PAULO", "CENTRO", "JOSE", "RUA 1", "123" )
AddArray( aList, "SP", "SAO PAULO", "CENTRO", "JOSE", "RUA 1", "123" )
AddArray( aList, "SP", "SAO PAULO", "CENTRO", "JOSE", "RUA 1", "123" )
FOR EACH aUF IN aList
FOR EACH aCidade IN aUF[ 2 ]
FOR EACH aBairro IN aCidade[ 2 ]
FOR EACH aInfo IN aBairro[ 2 ]
? "UF:" + aUF[ 1 ] + ;
", Cidade:" + aCidade[ 1 ] + ;
", Bairro:" + aBairro[ 1 ] + ;
", Nome:" + aInfo[ 1 ] + ", End:" + aInfo[ 2 ] + ", DOC:" + aInfo[ 3 ]
NEXT
NEXT
NEXT
NEXT
Inkey(0)
RETURN
FUNCTION AddArray( aList, cUF, cCidade, cBairro, cNome, cEndereco, cCnpj )
LOCAL nPosUf, aListCidade, nPosCidade, aListBairro, nPosBairro, aListNomes
nPosUF := AScan( aList, cUF )
IF nPosUF == 0
AAdd( aList, { cUF, {} } )
nPosUF := Len( aList )
ENDIF
aListCidade := aList[ nPosUF, 2 ]
nPosCidade := ASCan( aListCidade, cCidade )
IF nPosCidade == 0
AAdd( aListCidade, { cCidade, {} } )
nPosCidade := Len( aListCidade )
ENDIF
aListBairro := aListCidade[ nPosCidade, 2 ]
nPosBairro := ASCan( aListBairro, cBairro )
IF nPosBairro == 0
AAdd( aListBairro, { cBairro, {} } )
nPosBairro := Len( aListBairro )
ENDIF
aListNomes := aListBairro[ nPosBairro, 2 ]
AAdd( aListNomes, { cNome, cEndereco, cCnpj } )
RETURN Nil
Então, criando em níveis, fica menos coisas pro Ascan() testar.
Nota: meu menu principal do aplicativo é assim
