none
Por qué si ejecuto una consulta en SQL me devuelve datos completos y si la ejecuto desde visual para llenar un dataset no me retorna todos los datos?? RRS feed

  • Pregunta

  • Hola a ver si me pueden ayudar, llevo casi una semana y no he podido resolver esto:

    Tengo esta consulta;

    SELECT        vm.Numero_Viaticos,
                 vm.FechaSolicitud,
                          vm.Estado,
                          vm.UAR,
                          vm.UUA,
                           vm.FAR,
                          i.Nombres + '  ' + i.Apellidos AS NombreCompleto,
                          tv.Nombre as TipoViatico,  
                          CASE WHEN datename(dw, dv.FUA) = 'Lunes' THEN dv.Total ELSE 0 END as Lunes,
                        CASE WHEN datename(dw, dv.FUA) = 'Martes' THEN dv.Total ELSE 0 END as Martes,  
                        CASE WHEN datename(dw, dv.FUA) = 'Miércoles' THEN dv.Total ELSE 0 END as Miercoles,                                  
                        CASE WHEN datename(dw, dv.FUA) = 'Jueves' THEN dv.Total ELSE 0 END as Jueves,
                        CASE WHEN datename(dw, dv.FUA) = 'Viernes' THEN dv.Total ELSE 0 END as Viernes,
                        CASE WHEN datename(dw, dv.FUA) = 'Sábado' THEN dv.Total ELSE 0 END as Sabado,
                        CASE WHEN datename(dw, dv.FUA) = 'Domingo' THEN dv.Total ELSE 0 END as Domingo
                            
    FROM         dbo.Viaticos_master vm
                INNER JOIN Viaticos_detalles dv ON vm.Id_Viaticos_Master = dv.Id_Viaticos_Master
                INNER JOIN TipoViatico tv ON dv.IdTipoViatico = tv.IdTipoViatico
                INNER JOIN dbo.Inspector i ON vm.Id_Inspector = i.Id_Inspector
                INNER JOIN dbo.Regiones r ON vm.idRegion = r.idRegion 
               

    La consulta anterior ejecutada desde el manager de SQL me devuelve:


    Como pueden ver en la imagen en Lunes y Miercoles hay datos diferentes de 0, ahora bien si esa consulta la pongo en un string en visual y la ejecuto con un sqldataadapter para llenar un dataset asi:

    Using MySqlAdapter As New SqlDataAdapter(Sqlstr, Conexion.ConnectionString)         
                    MySqlAdapter.Fill(MyDataSet)            
            End Using
    'Sqlstr es la cadena que contiene la consulta

    El dataset se llena pero los datos que contiene resultan asi:


    Si se fijan todos los datos coinciden con los de los otros resultados excepto las cantidades de los dias... aqui todos los devuelve en 0...

    He intentado muchas cosas pero no he conseguido que me muestre los mismos resultados... agradeceria mucho sus sugerencias.

    Saludos.

    jueves, 12 de abril de 2012 16:57

Respuestas

  • Muchas gracias Leandro por tu soporte... ya logré solucionarlo.... tenía incorrectos el usuario y pass en la cadena de conexion. Lo raro es q como pueden ver en las imágenes la consulta me obtenia datos, solo que no completos.

    Gracias por su colaboración :)


    EddieF

    • Marcado como respuesta Eddief14 viernes, 13 de abril de 2012 14:22
    viernes, 13 de abril de 2012 14:21

Todas las respuestas

  • si en estas lineas

    CASE WHEN datename(dw, dv.FUA) = 'Lunes' THEN dv.Total ELSE 0 END as Lunes,

    en el ELSE pones un valor distinto a cero o sea

    CASE WHEN datename(dw, dv.FUA) = 'Lunes' THEN dv.Total ELSE 10 END as Lunes,

    y en cada case le poens valores diferentes cuando eejcutas puedes ver estos en el grid ?

    con esto validarias que en la query esta tomando el camino del ELSE


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 12 de abril de 2012 20:24
  • Ps de hecho tienes razon, si pongo else 10 as Lunes me devuelve todas las filas del lunes = 10

    Como resolveria esto??? :S

    Gracias x tu respuesta...

    Si invierto la consulta entonces me devuelve los datos del lunes y miercoles pero tambien los asigna al resto de dias que no tienen nada :(
    • Editado Eddief14 jueves, 12 de abril de 2012 21:19
    jueves, 12 de abril de 2012 20:40
  • Muchas gracias Leandro por tu soporte... ya logré solucionarlo.... tenía incorrectos el usuario y pass en la cadena de conexion. Lo raro es q como pueden ver en las imágenes la consulta me obtenia datos, solo que no completos.

    Gracias por su colaboración :)


    EddieF

    • Marcado como respuesta Eddief14 viernes, 13 de abril de 2012 14:22
    viernes, 13 de abril de 2012 14:21