FoxPro/Visual FoxPro - ayuda con grid y tablas

 
Vista:
sin imagen de perfil

ayuda con grid y tablas

Publicado por hugo (3 intervenciones) el 05/06/2016 07:27:42
Hola, soy nuevo en el foro y requiero su ayuda, espero contar con ella.
Les cuento lo que pretendo hacer:

tengo 2 tablas de la siguiente forma

tabla: grupos
en ella estan grupos con una clave que no se repite
muestra cuantos alumnos hay en ese grupo
materia y datos referentes al grupo
por ejemplo:

clave | capacidad | materia |
GPO1 | 2 | ciencias |
GPO2 | 3 | historia |

tabla: asistencias
en esta tabla se registran las asistencias de los alumnos por semana (de acuerdo al numero de semana del año)

clave | alumno | grupo | semana | asistencia |
ALU1| JUAN | GPO1 | 10 | A |
ALU2| PEP | GPO2 | 10 | A |
ALU3| MARIA | GPO1 | 10 | A |
ALU4|LUISA | GPO2 | 10 | A |
ALU5| LUIS | GPO2 | 10 | F |
ALU1| JUAN | GPO1 | 11 | F |
ALU2| PEP | GPO2 | 11 | A |
ALU3| MARIA | GPO1 | 11 | A |
ALU4|LUISA | GPO2 | 11 | A |
ALU5| LUIS | GPO2 | 11 | F |
A= asistio
F = falto

como verán en asistencias los registros se hacen por semana y se anota el grupo

lo que quiero hacer es que en un grid de formulario se muestre lo siguiente de acuerdo a la semana consultada por ejemplo quiero ver lo de la semana 11

clave | inicia | asistencias | faltas | termina |
GPO1 | 2 | 1 | 1 | 1 |
GPO2 | 3 | 2 | 1 | 2 |

basicamene en el grid solo quiero que aparezcan las claves de los grupos con su capacidad (eso ya lo he realizado con un select) y agregar columnas extras, la de asistencias para que cuente cuantas asistencias se registraron de ese grupo en la semana marcada y lo mismo con faltas y la columna termina sea una resta de la columna inicia menos las faltas de la semana.

Alguien me podria orientar con esto por favor, no se me ocurre como hacerlo
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
Imágen de perfil de xve

ayuda con grid y tablas

Publicado por xve (83 intervenciones) el 05/06/2016 19:25:53
Hola Hugo, según entiendo, tienes que vincular las tablas... algo así seria para MySQL (no se que motor de base de datos estas utilizando):

1
2
select * from asistencias a left join grupo g ON a.grupo=g.clave
WHERE a.semana=10

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ayuda con grid y tablas

Publicado por hugo (3 intervenciones) el 05/06/2016 19:48:26
Estoy trabajando en visual fox pro con tablas dbf y ese resultado lo pretendo mostrar en un gris dentro de un formulario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ayuda con grid y tablas

Publicado por hugo (3 intervenciones) el 05/06/2016 23:27:46
ya realice tu ejemplo y veo que ya habia dado con algo como eso, pero veras, como en la tabla grupos la clave del grupo no se repite y en la tabla asistencias el el grupo si se repite por que hay varios alumnos en ese grupo solo quiero:

1. mostrar la lista (grid) de los grupos de la tabla grupos
2. columnas adicionales que me permitan contar las asistencias y faltas que están en la tabla de asistencias (sin que me muestre la lista de todos los registros)

clave | inicia | asistencias | faltas | termina |
GPO1 |--- 2-- |-- 1----------- |--- 1--- |----- 1--- |
GPO2 |---3--- | --2----------- |--- 1 ---|----- 2--- |

no se si me explico
algo asi como si fuero una especie de tabla en excel y el conteo lo busco en base a la clave del grupo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con grid y tablas

Publicado por Foxshin (34 intervenciones) el 18/06/2016 19:30:50
Hola :)
Eso lo puedes hacer con Agrupaciones (GROUP BY), subconsultas, varios cursores u otras formas que por lo pronto no se me ocurren.
Te dejo una forma (con GROUP BY), ya tu lo analizas y lo modificas según tus necesidades.
**
SET ENGINEBEHAVIOR 70 && Sólo si usas VFP 7 o superior, si usas el VFP 6 no será necesario
LOCAL lnSemana AS Integer
lnSemana = 11
SELECT G.Clave ;
,G.Capacidad AS Inicia;
,SUM(IIF(A.Asistencia="A",1,0)) AS Asistencias;
,SUM(IIF(A.Asistencia="F",1,0)) AS Faltas;
,G.Capacidad - SUM(IIF(A.Asistencia="F",1,0)) AS Termina;
FROM Asistencias A;
LEFT JOIN Grupos G ON A.Grupo = G.Clave;
WHERE A.Semana = lnSemana ;
GROUP BY A.Grupo;
INTO CURSOR curResultado
RELEASE lnSemana
**

la variable lnSemana pues es eso, una variable para que escojas el número de semana.

Espero sirva de algo.

Saludos

Bytes :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar