[ Foro de C# ]
Hola, consulto si alguno se da cuenta donde esta el error que señala el titulo que encabeza la consulta??.....Si alguien sabe, agradeceria que me lo hagan saber, y desde ya mil bendiciones...
public List<NotaEntity> getNota(int idCurso, int idMateria, DateTime fecha)
{
try
{
connection.Open();
command.Parameters.AddWithValue("@idCurso", idCurso);
command.Parameters.AddWithValue("@idMateria", idMateria);
command.Parameters.AddWithValue("@Fec", fecha);
command.CommandText = @"SELECT Notas.Id_Nota, Notas.Nota, Notas.Fecha, Notas.Id_Tipo, Notas.Trimestre, Notas.Orden,
Alumno.Id_Alumno, Alumno.Nombre, Alumno.Apellido, TipoNota.Descripcion AS NombreTipo
FROM Notas INNER JOIN (((MateriaPorAlumno ON Notas.Id_Tipo = MateriaPorAlumno.Id)
INNER JOIN Alumno ON MateriaPorAlumno.Id_Alumno = Alumno.Id_Alumno)
INNER JOIN TipoNota ON TipoNota.Id = Notas.Id_Tipo)
INNER JOIN TurnoMateria ON TurnoMateria.Id_Turno = MateriaPorAlumno.Id_Turno
WHERE (TurnoMateria.Id_Curso = @idCurso) AND (TurnoMateria.Id_Materia = @idMateria) AND Notas.Fecha = @Fec";
OleDbDataReader lector = command.ExecuteReader();
List<NotaEntity> listNota = new List<NotaEntity>();
while (lector.Read())
{
NotaEntity nota = new NotaEntity();
if (lector["Id_Nota"] != null)
nota.Id_Nota = Convert.ToInt32(lector["Id_Nota"].ToString());
if (lector["Id_Tipo"] != null)
{
nota.Tipo = new TipoNotaEntity();
nota.Tipo.Id = Convert.ToInt32(lector["Id_Tipo"].ToString());
nota.Tipo.Descripcion = lector["NombreTipo"].ToString();
}
if (lector["Nota"] != null)
nota.Nota = Convert.ToInt32(lector["Nota"].ToString());
if (lector["Fecha"] != null)
nota.Fecha = Convert.ToDateTime(lector["Fecha"].ToString());
if (lector["Trimestre"] != null)
nota.Trimestre = Convert.ToInt32(lector["Trimestre"].ToString());
if (lector["Orden"] != null)
nota.Orden = Convert.ToInt32(lector["Orden"].ToString());
MateriaPorAlumnoEntity mpa = new MateriaPorAlumnoEntity();
mpa.Alumno = new AlumnoEntity();
mpa.Alumno.Id_Alumno = Convert.ToInt32(lector["Id_Alumno"].ToString());
mpa.Alumno.Nombre = lector["Nombre"].ToString();
mpa.Alumno.Apellido = lector["Apellido"].ToString();
nota.MateriaPorAlumno = mpa;
listNota.Add(nota);
}
return listNota;
}
catch (Exception ex)
Hola lo que esta pasan que nesecitas las comillas simples en @Fec ya que tu tipo de dato es datetime o date y no te las reconoce yo le haria de la siguiente manera
FROM Notas INNER JOIN (((MateriaPorAlumno ON Notas.Id_Tipo = MateriaPorAlumno.Id)
INNER JOIN Alumno ON MateriaPorAlumno.Id_Alumno = Alumno.Id_Alumno)
INNER JOIN TipoNota ON TipoNota.Id = Notas.Id_Tipo)
INNER JOIN TurnoMateria ON TurnoMateria.Id_Turno = MateriaPorAlumno.Id_Turno
WHERE (TurnoMateria.Id_Curso = @idCurso) AND (TurnoMateria.Id_Materia = @idMateria) AND Notas.Fecha = '@Fec'";
Espero y te sirva saludos..
El error es que fecha la debes de poner entre comillas simples, pero aun mas por eso no entiendo por que no realizas un store procedure en el gestor, y mandas a llamar el mismo claro enviándole los parámetros si es necesario.
Es una mejor programación limpia, no código espaguetti .
Te recomiendo manejar los join en el Gestor de BD
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)