reporte de calificaciones

62 views
Skip to first unread message

JUAN MANUEL MALDONADO PEREZ

unread,
Dec 7, 2016, 2:47:23 PM12/7/16
to Comunidad de Visual Foxpro en Español

Si tengo una tabla con los siguientes datos


como hago para obtener un informe como el siguiente, estoy usando el reporteador de vfp


Saludos gracias.




Douglas Sánchez

unread,
Dec 7, 2016, 3:27:21 PM12/7/16
to publice...@googlegroups.com

Madre mia que es eso, y quien fue el inventor de la primera tabla.
ya se ya se no es vieres.
recorre los campos lees con field() o bien en un arreglo afield()

Slds


Jesús Ahmed Bustamante Alzamora

unread,
Dec 7, 2016, 3:55:33 PM12/7/16
to Comunidad de Visual Foxpro en Español
Debes generar una consulta cruzada, no sé cual es tu fuente de datos, pero si es SQL Server te puede servir este enlace https://social.msdn.microsoft.com/Forums/es-ES/5aed2354-b24c-4920-a28a-0d6910c08587/consulta-referencias-cruzadas?forum=sqlserveres

Víctor Hugo Espínola Domínguez

unread,
Dec 7, 2016, 6:20:00 PM12/7/16
to publice...@googlegroups.com
Local laCalificaciones[1],    ;
    laField[1],                ;
    lcMatricula As String,    ;
    lcMes As String,        ;
    lnFields As Number,        ;
    lnMateria As Number,    ;
    lnMes As Number

Create Cursor Calificaciones (Matricula C(5), Alumno C(10), Espanyol N(2), Matematicas N(2), Ciencias N(2), Mes N(2))
Insert Into Calificaciones Values ("12345", "Juan", 10, 8, 7, 1)
Insert Into Calificaciones Values ("12345", "Juan",  8, 9, 7, 2)
Insert Into Calificaciones Values ("12345", "Juan",  9, 8, 7, 3)

lcMatricula = "12345"

lnFields = Afields(laField, "Calificaciones")

Select *                              ;
    From Calificaciones               ;
    Where Matricula == m.lcMatricula  ;
    Order By Matricula, Mes           ;
    Into Array laCalificaciones

Create Cursor curCalificaciones (Matricula C(5), Alumno C(10), Materia C(15), Mes1 N(2), Mes2 N(2), Mes3 N(2))

For lnMateria = 1 To 3
    Insert Into curCalificaciones                     ;
        Values (  m.laCalificaciones[m.lnMateria, 1]  ;
          , m.laCalificaciones[m.lnMateria, 2]        ;
          , m.laField[m.lnMateria + 2, 1]             ;
          , 0, 0, 0)
    For lnMes = 1 To 3
        lcMes = "Mes" + Transform(m.lnMes)
        Replace (m.lcMes) With m.laCalificaciones[m.lnMes, m.lnMateria + 2] ;
            In curCalificaciones
    Endfor
Endfor

Select curCalificaciones
Browse


Saludos,
Víctor.
Lambaré - Paraguay.

Víctor Hugo Espínola Domínguez

unread,
Dec 7, 2016, 6:22:59 PM12/7/16
to publice...@googlegroups.com
Te acompaño en el espanto, con los datos normalizados se puede encontrar una mejor solución.

Saludos,
Víctor.
Lambaré - Paraguay.


JUAN MANUEL MALDONADO PEREZ

unread,
Dec 7, 2016, 8:23:07 PM12/7/16
to Comunidad de Visual Foxpro en Español

Gracias Victor ( y a los demas también)  solo qué pensé era algo más simple.

integral

unread,
Dec 8, 2016, 11:13:21 AM12/8/16
to Comunidad de Visual Foxpro en Español

Que tal Amigo VICTOR HUGO :

Como siempre un bien elaborado código de sirve de ejemplo para futuras codificaciones.

Saludos,

INTEGRAL


El miércoles, 7 de diciembre de 2016, 14:47:23 (UTC-5), JUAN MANUEL MALDONADO PEREZ escribió:
Reply all
Reply to author
Forward
0 new messages