91 lines
1.8 KiB
Plaintext
91 lines
1.8 KiB
Plaintext
SCHEMA smarmotech
|
|
|
|
DEFINE id int
|
|
|
|
DEFINE datos DYNAMIC ARRAY OF RECORD
|
|
ano SMALLINT,
|
|
nombre_Vend CHAR (10),
|
|
parentId STRING,
|
|
id STRING,
|
|
hasChildren BOOLEAN
|
|
END RECORD
|
|
|
|
|
|
MAIN
|
|
|
|
OPEN FORM f FROM "test"
|
|
DISPLAY form f
|
|
|
|
CALL nodo1(id)
|
|
DISPLAY ARRAY datos TO sdatos.* ATTRIBUTE(UNBUFFERED)
|
|
ON EXPAND(ID)
|
|
CALL nodo1(id)
|
|
END DISPLAY
|
|
|
|
END MAIN
|
|
|
|
FUNCTION nodo1(p)
|
|
DEFINE p INT
|
|
DEFINE NAME, parentId STRING
|
|
|
|
DEFINE i INT
|
|
|
|
CONNECT TO "smarmotech" USER "jsoto" USING "12345"
|
|
|
|
IF p == 0 THEN
|
|
LET parentId = 0
|
|
DECLARE busca1 CURSOR FOR
|
|
SELECT UNIQUE a.ano FROM prdtable a
|
|
WHERE a.ano in (2008,2009)
|
|
|
|
LET p = 1
|
|
FOREACH busca1 INTO datos[p].ano
|
|
LET p = p + 1
|
|
CALL datos.insertElement(p)
|
|
LET id = parentId || "." || i
|
|
LET datos[p].id = id
|
|
LET datos[p].parentId = parentId
|
|
LET i = 2
|
|
DECLARE busca_m CURSOR FOR
|
|
SELECT UNIQUE a.mes FROM prdtable a
|
|
WHERE a.ano = datos[p].ano
|
|
|
|
FOREACH busca_m INTO datos[i].nombre_vend
|
|
|
|
IF i MOD 2 THEN
|
|
LET datos[p].hasChildren = TRUE
|
|
ELSE
|
|
LET datos[p].hasChildren = FALSE
|
|
END IF
|
|
LET i = i + 1
|
|
END FOREACH
|
|
END FOREACH
|
|
|
|
ELSE
|
|
LET parentId = datos[p].id
|
|
LET NAME = "mESES"
|
|
END IF
|
|
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION contraer()
|
|
DEFINE p INT
|
|
LET p = 1
|
|
WHILE p < datos.getLength()
|
|
CALL collapse(p)
|
|
LET p = p + 1
|
|
END WHILE
|
|
END FUNCTION
|
|
|
|
FUNCTION collapse(p)
|
|
DEFINE p INT
|
|
DEFINE id STRING
|
|
LET id = datos[p].id
|
|
WHILE p < datos.getLength()
|
|
IF datos[p + 1].parentId <> id THEN EXIT WHILE END IF
|
|
CALL collapse(p + 1)
|
|
CALL datos.deleteElement(p + 1)
|
|
END WHILE
|
|
END FUNCTION
|