none
Consulta con join trae campo vacío RRS feed

  • Pregunta

  • Hago una consulta con tres join y un campo me lo trae vacío, es el nombre del cliente.

    ¿Por qué puede ser y cómo lo puedo solucionar?

    Este es el código:

                    List<clsLogTrabxEnsayos> listTrabajos = (from trabajos in datosEstructuras.LogTrabxEnsayos
                                                             join clientes in datosEstructuras.Clientes
                                                             on trabajos.IdCliente equals clientes.IdCliente
                                                             join ensayos in datosEstructuras.Ensayos
                                                             on trabajos.IdEnsayo equals ensayos.IdEnsayo
                                                             join usuario in datosEstructuras.Usuarios
                                                             on trabajos.IdUsuario equals usuario.IdUsuario
                                                             where (trabajos.AnioSolicitud == pTrabajos.AnioSolicitud || pTrabajos.AnioSolicitud == 0)
                                                             && (trabajos.IdCliente == pTrabajos.IdCliente || pTrabajos.IdCliente == 0)
                                                             && (trabajos.IdEnsayo == pTrabajos.IdEnsayo || pTrabajos.IdEnsayo == 0)
                                                             && (trabajos.NroSolicitud == pTrabajos.NroSolicitud || pTrabajos.NroSolicitud == 0)
                                                             && (trabajos.IdUsuario == pTrabajos.IdUsuario || pTrabajos.IdUsuario == null)
                                                             && (trabajos.Operacion == pTrabajos.Operacion || pTrabajos.Operacion == null)
                                                             && (trabajos.NombrePc == pTrabajos.NombrePc || pTrabajos.NombrePc == null)
                                                             orderby clientes.Nombre,
                                                             trabajos.AnioSolicitud,
                                                             trabajos.NroSolicitud,
                                                             ensayos.Descripcion,
                                                             trabajos.Fecalt
                                                             select new clsLogTrabxEnsayos
                                                             {
                                                                 AnioSolicitud = trabajos.AnioSolicitud,
                                                                 Descripcion = ensayos.Descripcion,
                                                                 Fecalt = trabajos.Fecalt,
                                                                 IdCliente = trabajos.IdCliente,
                                                                 Lim = trabajos.Lim.Value,
                                                                 Nombre = clientes.Nombre,
                                                                 NombrePc = trabajos.NombrePc,
                                                                 NroSolicitud = trabajos.NroSolicitud,
                                                                 Operacion = (trabajos.Operacion == "A") ? "Alta" : (trabajos.Operacion == "B") ? "Baja" : "Modificación",
                                                                 Usuario = usuario.Nombre
                                                             }).ToList();
    

    jueves, 12 de mayo de 2016 18:26

Todas las respuestas

  • No hay nada obvio en la propia consulta que pueda hacer que el nombre del cliente llegue vacío. Tendrías que buscar por otros sitios, como por ejemplo, cerciorarte de que en la base de datos realmente ese campo está relleno (y no otro campo que pueda existir con un nombre muy similar), o que el problema no esté en otro sitio distinto de la consulta, como por ejemplo un error en la parte de código que muestra los resultados de la misma. En estos casos hay que usar el debugger para examinar el código paso a paso, y si no se consigue encontrar el error en el C#, auxiliarse del Profiler para capturar la sentencia SQL en el lado servidor y depurar la sentencia capturada copiándola en SSMS.
    viernes, 13 de mayo de 2016 6:37