
Query para llenar una Grilla con datos de Alumnos por Materias
Publicado por Guillermo (49 intervenciones) el 11/05/2016 02:09:39
Buenas, disculpen que los moleste, los consulto para dar con una query para lo siguiente, si pueden darme una mano....:
Debo llenar una Grilla con datos de Alumnos por Materias......
El webform se presenta de la sig. forma:
- Elijo un Curso de la GrillaCurso (DataKeysName = idCurso) y se listan las Materias de ese Curso, llenando la Grilla Materia.....(ya esta solucionado esto: Funciona)
- Elijo una Materia dela GrillaMateria (DataKeysName = isMateria) y
- Con el Boton "Aceptar", debe aparecer GridMatPorAlum con los datos de los Alumnos por Materia de acuerdo a ese Filtro del Curso y de la Materia..

Aqui dejo las Tablas que dispongo para lograr esto: (estimo que pueden ser 4:(MateriaPorAlumno, Alumno, TurnoMateria y Materias) dejando de lado Asistencias, TipoCondicionMateria......

Tambien dejo el codigo aproximado de la Capa de Negocio para soporte:....(salvo la "query", si Uds. tambien lo consideran correcto, lo demas del codigo lo estaria)......
public List<MateriaPorAlumnoEntity> getAlumnosyMateria(int idCurso, int idMateria)
{
try
{
connection.Open();
command.Parameters.AddWithValue("@idCurso", idCurso);
command.Parameters.AddWithValue("@idMateria", idMateria);
command.CommandText = @"SELECT
///Debo dar con la QUERY apropiada para esto////
WHERE ( .Id_Curso = @idCurso) AND ( .Id_Materia = @idMateria)";
OleDbDataReader lector = command.ExecuteReader();
List<MateriaPorAlumnoEntity> listEntities = new List<MateriaPorAlumnoEntity>();
while (lector.Read())
{
MateriaPorAlumnoEntity materiaPorAlumno = new MateriaPorAlumnoEntity();
if (lector["Id"] != null)
materiaPorAlumno.Id = Convert.ToInt32(lector["Id"].ToString());
if (lector["Id_Alumno"] != null)
{
materiaPorAlumno.Alumno = new AlumnoEntity();
materiaPorAlumno.Alumno.Id_Alumno = Convert.ToInt32(lector["Id_Alumno"].ToString());
materiaPorAlumno.Alumno.Nombre = lector["NombreAlumno"].ToString();
materiaPorAlumno.Alumno.Apellido = lector["Apellido"].ToString();
}
if (lector["Id_Materia"] != null)
{
materiaPorAlumno.Turno = new TurnoEntity();
materiaPorAlumno.Turno.Id_Turno = Convert.ToInt32(lector["Id_Turno"].ToString());
materiaPorAlumno.Turno.Materia = new MateriaEntity();
materiaPorAlumno.Turno.Materia.Id_Materia = Convert.ToInt32(lector["Id_Materia"].ToString());
materiaPorAlumno.Turno.Materia.Nombre = lector["Nombre"].ToString();
}
listEntities.Add(materiaPorAlumno);
}
return listEntities;
}
Y aqui dejo el codigo del lado de Capa Presentacion:
protected void btnAceptar_Click(object sender, EventArgs e)
{
AccesoLogicaMateriaPorAlumno TurnoMateriaDAO = new AccesoLogicaMateriaPorAlumno();
GridMatPorAlum.DataSource = TurnoMateriaDAO.getAlumnosyMateria(idCurso, idMateria);
GridMatPorAlum.DataKeyNames = new string[] { "Id_Turno" };
GridMatPorAlum.DataBind();
}
Si me pueden dar una mano con la QUERY para lograr esto, mil millones de gracias, nos vemos....
PD: que les llueva muchas bendiciones¡¡
Debo llenar una Grilla con datos de Alumnos por Materias......
El webform se presenta de la sig. forma:
- Elijo un Curso de la GrillaCurso (DataKeysName = idCurso) y se listan las Materias de ese Curso, llenando la Grilla Materia.....(ya esta solucionado esto: Funciona)
- Elijo una Materia dela GrillaMateria (DataKeysName = isMateria) y
- Con el Boton "Aceptar", debe aparecer GridMatPorAlum con los datos de los Alumnos por Materia de acuerdo a ese Filtro del Curso y de la Materia..

Aqui dejo las Tablas que dispongo para lograr esto: (estimo que pueden ser 4:(MateriaPorAlumno, Alumno, TurnoMateria y Materias) dejando de lado Asistencias, TipoCondicionMateria......

Tambien dejo el codigo aproximado de la Capa de Negocio para soporte:....(salvo la "query", si Uds. tambien lo consideran correcto, lo demas del codigo lo estaria)......
public List<MateriaPorAlumnoEntity> getAlumnosyMateria(int idCurso, int idMateria)
{
try
{
connection.Open();
command.Parameters.AddWithValue("@idCurso", idCurso);
command.Parameters.AddWithValue("@idMateria", idMateria);
command.CommandText = @"SELECT
///Debo dar con la QUERY apropiada para esto////
WHERE ( .Id_Curso = @idCurso) AND ( .Id_Materia = @idMateria)";
OleDbDataReader lector = command.ExecuteReader();
List<MateriaPorAlumnoEntity> listEntities = new List<MateriaPorAlumnoEntity>();
while (lector.Read())
{
MateriaPorAlumnoEntity materiaPorAlumno = new MateriaPorAlumnoEntity();
if (lector["Id"] != null)
materiaPorAlumno.Id = Convert.ToInt32(lector["Id"].ToString());
if (lector["Id_Alumno"] != null)
{
materiaPorAlumno.Alumno = new AlumnoEntity();
materiaPorAlumno.Alumno.Id_Alumno = Convert.ToInt32(lector["Id_Alumno"].ToString());
materiaPorAlumno.Alumno.Nombre = lector["NombreAlumno"].ToString();
materiaPorAlumno.Alumno.Apellido = lector["Apellido"].ToString();
}
if (lector["Id_Materia"] != null)
{
materiaPorAlumno.Turno = new TurnoEntity();
materiaPorAlumno.Turno.Id_Turno = Convert.ToInt32(lector["Id_Turno"].ToString());
materiaPorAlumno.Turno.Materia = new MateriaEntity();
materiaPorAlumno.Turno.Materia.Id_Materia = Convert.ToInt32(lector["Id_Materia"].ToString());
materiaPorAlumno.Turno.Materia.Nombre = lector["Nombre"].ToString();
}
listEntities.Add(materiaPorAlumno);
}
return listEntities;
}
Y aqui dejo el codigo del lado de Capa Presentacion:
protected void btnAceptar_Click(object sender, EventArgs e)
{
AccesoLogicaMateriaPorAlumno TurnoMateriaDAO = new AccesoLogicaMateriaPorAlumno();
GridMatPorAlum.DataSource = TurnoMateriaDAO.getAlumnosyMateria(idCurso, idMateria);
GridMatPorAlum.DataKeyNames = new string[] { "Id_Turno" };
GridMatPorAlum.DataBind();
}
Si me pueden dar una mano con la QUERY para lograr esto, mil millones de gracias, nos vemos....
PD: que les llueva muchas bendiciones¡¡
Valora esta pregunta


0