LOCAL ARRAY aId(7),aNombre(7),aNUmero(7),aAbono(7),afecha(7)
aId[1]=26876414
aId[2]=26876414
aId[3]=26876414
aId[4]=49691995
aId[5]=49691995
aId[6]=49691995
aId[7]=77175549
anombre[1]=[asdfg]
anombre[2]=[asdfg]
anombre[3]=[asdfg]
anombre[4]=[qwer]
anombre[5]=[qwer]
anombre[6]=[qwer]
anombre[7]=[zxcv]
anumero[1]=123
anumero[2]=123
anumero[3]=123
anumero[4]=124
anumero[5]=124
anumero[6]=124
anumero[7]=321
aabono[1]=100
aabono[2]=100
aabono[3]=150
aabono[4]=285
aabono[5]=285
aabono[6]=285
aabono[7]=576
afecha[1]=[2013-01]
afecha[2]=[2013-02]
afecha[3]=[2013-06]
afecha[4]=[2014-01]
afecha[5]=[2014-02]
afecha[6]=[2014-03]
afecha[7]=[2014-02]
CREATE CURSOR curDatos ("id" i,"nombre" c(40),"numero" i,"abono" n(12,2),"fecha" c(7))
FOR i = 1 TO ALEN(aId)
INSERT INTO curDatos(id,nombre,numero,abono,fecha) ;
VALUES (aid[i],aNombre[i],anumero[i],aAbono[i],afecha[i])
NEXT
SELECT curDatos
SELECT distinct fecha FROM curDatos INTO ARRAY laFecha
lnTally = _tally
LOCAL ARRAY laCursor(3,4)
laCursor[1,1]="Id"
laCursor[1,2]="I"
laCursor[1,3]=0
laCursor[1,4]=0
laCursor[2,1]="Nombre"
laCursor[2,2]="C"
laCursor[2,3]=40
laCursor[2,4]=0
laCursor[3,1]="Numero"
laCursor[3,2]="I"
laCursor[3,3]=0
laCursor[3,4]=0
lnDim = ALEN(laCursor,1)
FOR i = 1 TO m.lnTally
lnDim = lnDim + 1
DIMENSION laCursor(lnDim,4)
laCursor[lnDim,1] = "P_"+CHRTRAN(laFecha[i,1],"-","")
laCursor[lnDim,2] = "N"
laCursor[lnDim,3] = 12
laCursor[lnDim,4]= 2
NEXT
CREATE CURSOR curPivot FROM ARRAY laCursor
SELECT curPivot
INDEX on id TAG id_tag
SELECT curDatos
SCAN
lnId = Id
lcPer = "P_"+TRIM(CHRTRAN(FECHA,"-",""))
IF !INDEXSEEK(m.lnId,.f.,"curPivot","id_tag")
INSERT INTO curPivot (id,nombre,numero) ;
VALUES (lnId,curDatos.Nombre,curDatos.numero)
ENDIF
SELECT curPivot
INDEXSEEK(m.lnId,.t.,"curPivot","id_tag")
replace (m.lcPer) WITH EVALUATE("curPivot."+m.lcPer) + curDatos.Abono
ENDSCAN
SELECT curPivot
GO top
BROWSE
USE IN curpivot
USE IN curDatos
IF USED("prueba")
USE IN prueba
endif
CREATE TABLE prueba (id n(10),nombre c(20),numero n(10),abono n(10),fecha c(7))
INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (26876414,"asdfg",123,100,"2013-2")
INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (26876414,"asdfg",123,100,"2013-6")
INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (49691995,"qwer",124,285,"2014-1")
INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (49691995,"qwer",124,285,"2014-2")
INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (49691995,"qwer",124,285,"2014-3")
INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (77175549,"zxcv",321,576,"2014-2")
Select prueba
oXtab = NewObject("FastXtab", "FastXtab.prg")
oXtab.nPageField = 1 && id
oXtab.nRowField = 2 && nombre
oXtab.nColField = 5 && fecha
oXtab.nDataField = 4 && abono
oXtab.lCursorOnly = .t.
oXtab.lDisplayNulls = .f.
oXtab.lBrowseAfter = .t.
oXtab.lCloseTable = .F.
If oXtab.RunXtab() = .T.
MessageBox("Corecto")
EndIf
oXtab.nPageField = 1 && id
oXtab.nRowField = 2 && nombre
IF USED("prueba") USE IN pruebaendif
CREATE TABLE prueba (id n(10),nombre c(20),numero n(10),abono n(10),fecha c(7))
INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (26876414,"asdfg",123,100,"2013-2")INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (26876414,"asdfg",123,100,"2013-6")INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (49691995,"qwer",124,285,"2014-1")INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (49691995,"qwer",124,285,"2014-2")INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (49691995,"qwer",124,285,"2014-3")INSERT INTO prueba (id,nombre,numero,abono,fecha) VALUES (77175549,"zxcv",321,576,"2014-2")
Select prueba
oXtab = NewObject("FastXtab", "FastXtab.prg")
oXtab.nPageField = 1
oXtab.nRowField = 2oXtab.nColField = 5oXtab.nDataField = 4
oXtab.lCursorOnly = .t.oXtab.lDisplayNulls = .f.
oXtab.lBrowseAfter = .f.
oXtab.lCloseTable = .F.If oXtab.RunXtab() = .T.