FoxPro/Visual FoxPro - Acomodar datos en una tabla

 
Vista:
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Acomodar datos en una tabla

Publicado por Ana (33 intervenciones) el 17/03/2016 01:34:06
Hola Gente!!! Como andan?

Tengo una tabla temporal con la siguiente información:

MES RUBRO IMPORTE
1 VERDULERIA 100
1 ALMACEN 150
1 CARNE 200
2 VERDULERIA 150
2 ALMACEN 50
2 CARNE 280
3 VERDULERIA 50
3 ALMACEN 350
3 CARNE 100

Esta tabla la tengo que pasar a un reporte que se vea de la siguiente forma

RUBRO ENERO FEBRERO MARZO......
VERDULERIA 100 150 50
ALMACEN 150 50 350
CARNE 200 180 100

Como me recomiendan hacerlo?????
Desde ya muchas gracias!!!
Saludos!!!


Ana - Argentina
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Acomodar datos en una tabla

Publicado por Fidel José (657 intervenciones) el 17/03/2016 16:48:00
En un ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
*<simulaCursor>
TEXT TO LCTEXT NOSHOW PRETEXT 7
1 VERDULERIA 100
1 ALMACEN 150
1 CARNE 200
2 VERDULERIA 150
2 ALMACEN 50
2 CARNE 280
3 VERDULERIA 50
3 ALMACEN 350
3 CARNE 100
ENDTEXT
 
CREATE CURSOR CURVEN ("mes" I,"RUBRO" C(30),"IMPORTE" N(12,2))
lnLines = ALINES(laLines,lcText,1+4,CHR(10),CHR(13))
 
FOR i = 1 TO lnLines
	INSERT INTO curven (mes,rubro,importe) ;
		VALUES (VAL(GETWORDNUM(laLines[i],1,SPACE(1))) ,;
			GETWORDNUM(lalines[i],2,SPACE(1)),;
			VAL(GETWORDNUM(laLines[i],3,SPACE(1))) )
NEXT
SELECT curven
GO top
*</simulaCursor>
 
 
*<Cuantos meses tiene el cursor>
SELECT distinct mes FROM curven WHERE .t. INTO ARRAY laMes
lnTally = _tally
*</Cuantos meses tiene el cursor>
 
*<CrearCursorMuestra>
lnCount = 1
LOCAL ARRAY laFields(1,4)
laFields[1,1]="RUBRO"
laFields[1,2]="C"
laFields[1,3]=30
laFields[1,4]=0
 
FOR i= 1 TO lnTally
 
	DIMENSION laFields(i+1,4)
 
	laFields[i+1,1]="MES"+TRANSFORM(laMes[i,1])
	laFields[i+1,2]="N"
	laFields[i+1,3]=12
	laFields[i+1,4]=2
	lnCount = lnCount + 1
NEXT
ln = lnCount + 1
DIMENSION laFields(ln,4)
laFields[ln,1]="TOTAL"
laFields[ln,2]="N"
laFields[ln,3]=12
laFields[ln,4]=2
 
CREATE CURSOR CURTEMP FROM ARRAY LAFIELDS
SELECT CURTEMP
INDEX ON RUBRO TAG IRUBRO
 
*</CrearCursorMuestra>
 
*<ActualizarCursorMuestra>
SELECT CURVEN
SCAN
	lcRubro = TRIM(rubro)
	lnMes = Mes
	lnImporte = Importe
	lcField = "MES"+TRANSFORM(lnMes)
	IF !INDEXSEEK(lcRubro,.f.,"CURTEMP","IRUBRO")
		INSERT INTO curtemp (rubro) VALUES (m.lcrubro)
	ENDIF
	SELECT curtemp
	INDEXSEEK(lcRubro,.t.,"CURTEMP","IRUBRO")
	REPLACE (lcField) WITH EVALUATE(lcField) + m.lnImporte
 
ENDSCAN
 
SELECT curtemp
SCAN
	lnSumRub = 0
	FOR i = 1 TO lnTally
		lcField = "MES"+TRANSFORM(laMes[i,1])
		lnSumRub = lnSumRub + EVALUATE(lcField)
	NEXT
	REPLACE total WITH lnSumRub
ENDSCAN
GO top
*</ActualizarCursorMuestra>
 
BROWSE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar