C sharp - Query para llenar una Grilla con datos de Alumnos por Materias

   
Vista:
Imágen de perfil de Guillermo

Query para llenar una Grilla con datos de Alumnos por Materias

Publicado por Guillermo (48 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..

MaxiJorge3




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

TablasMatsPorAlum





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
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 Wilfredo Patricio Castillo

Query para llenar una Grilla con datos de Alumnos por Materias

Tienes un mal diseño de la base de datos, para comenzar, tienes una tabla llamada MATERIAPORALUMNO, que es lo que estás buscando, pero sin embargo esa tabla no tiene ninguna referencia a materia, así que no sé porque el nombre.

Otro punto en contra, tienes una referencia circular que no se deberían dar en un diseño relacional, eso te dará problemas.

Esa relacion circular se da entre las tablas: Alumnos, Materiaporalumno,Asistencias, TurnosMateria, y como verás la tabla MateriaPorAlumno, para nada tiene una clave foránea que diga que pertenece a una Materia, así que o ese nombre está demás o te faltó una relación.

Saludos cordiales,
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