none
Filtrar DataGridView Con 2 DateTimePicker RRS feed

  • Pregunta

    • Mi pregunta es la siguiente tengo un formulario en el cual tengo un datagridview, en él debo cargar los datos de mi Procedimiento Almacendo que trae datos de una tabla la cual tiene dos campos Inicio_Semana y Final_Semana ambos son Datetime en mi BD de SQL Server 2005, estos datos los debe tomar de los picker y al momento de que los picker cambien se deben filtrar los datos de Mi P.A Ayudenme Please es mi proyecto de Tesis y no se que hacer .... =)
    miércoles, 23 de junio de 2010 14:06

Respuestas

  • hola

    cual es la query que estas usando, porque peude quee ste todo correcto solo que los filtros no devuelvan registros

    cuando lo ejecutas desde el TableAdapter y devuelve datos, como le pasas las fecha de filtro ?

    de esa misma forma deberias pasarle las fechas a los parametros cuando haces

    cmd.Parameters.AddWithValue("@Fecha1", DateTimePicker1.Value)  cmd.Parameters.AddWithValue("@Fecha2", DateTimePicker2.Value)

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta MuzzBlack miércoles, 14 de julio de 2010 13:53
    jueves, 24 de junio de 2010 15:37

Todas las respuestas

  • hola

    podrias hacer algo como esto

     

    Private Sub DateTimePicker_ValueChanged(sender as Object, e as EventArgs) _
         Handles DateTimePickerInicio.ValueChanged, DateTimepickerFinal.ValueChanged

        Using cnn As SqlConnection = New SqlConnection("connection string")
           
            Dim cmd As SqlCommand = New SqlCommand("nombre stored procedure", cnn)
            cmd.CommandType = CommandType.StoredProcedure

            cmd.Parameters.AddWithValue("@InicioSemana", DateTimePickerInicio.Value)
            cmd.Parameters.AddWithValue("@FinalSemana", DateTimepickerFinal.Value)

           
            Dim da As New SqlDataAdapter(cmd)
            Dim dt As New DataTable
            da.Fill(dt)
           
            DataGridView1.DatyaSource = dt

        End Using

    End Sub

    Como vera en este caso los parametro @InicioSemana y @FinalSemana les puse un nombre que imagine podria usar
    pero sino son los nombre que ahs definido en tu stored procedure puedes cambiarlo

    veras ademas que se usa el mismo evento para ambos DateTimePicker, de esta forma no importa cual cambe lanza la actualizacion de los datos de la grilla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 23 de junio de 2010 14:46
  • Muchas Gracias Leandro la verdad estaba desesperado, Lo pruebo y le aviso si me funcionó ....

    De nuevo Gracias... =)

    Los limites de la inteligencia terminan donde inicia la curiosidad By:Me

    jueves, 24 de junio de 2010 12:28
  • hola

    podrias hacer algo como esto

     

    Private Sub DateTimePicker_ValueChanged(sender as Object, e as EventArgs) _
         Handles DateTimePickerInicio.ValueChanged, DateTimepickerFinal.ValueChanged

        Using cnn As SqlConnection = New SqlConnection("connection string")
           
            Dim cmd As SqlCommand = New SqlCommand("nombre stored procedure", cnn)
            cmd.CommandType = CommandType.StoredProcedure

            cmd.Parameters.AddWithValue("@InicioSemana", DateTimePickerInicio.Value)
            cmd.Parameters.AddWithValue("@FinalSemana", DateTimepickerFinal.Value)

           
            Dim da As New SqlDataAdapter(cmd)
            Dim dt As New DataTable
            da.Fill(dt)
           
            DataGridView1.DatyaSource = dt

        End Using

    End Sub

    Como vera en este caso los parametro @InicioSemana y @FinalSemana les puse un nombre que imagine podria usar
    pero sino son los nombre que ahs definido en tu stored procedure puedes cambiarlo

    veras ademas que se usa el mismo evento para ambos DateTimePicker, de esta forma no importa cual cambe lanza la actualizacion de los datos de la grilla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

     

    Private

     

    Sub DateTimePicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged, DateTimePicker2.ValueChanged

     

    Using cnn As SqlConnection = New SqlConnection("Data Source=DT-PIED003;Initial Catalog=RUP_SARA;Integrated Security=True")

     

    Dim cmd As SqlCommand = New SqlCommand("Demora", cnn)

    cmd.CommandType = CommandType.StoredProcedure

    cmd.Parameters.AddWithValue(

    "@Fecha1", DateTimePicker1.Value)

    cmd.Parameters.AddWithValue(

    "@Fecha2", DateTimePicker2.Value)

     

    Dim da As New SqlDataAdapter(cmd)

     

    Dim dt As New DataTable

    da.Fill(dt)

     

    Me.DataGridView1.DataSource = dt

     

    Me.DataGridView1.Update()

     

    End Using

     

    End Sub

    End

     

    Class

    Solo falta que el datagrid muestre los datos por que no lo esta haciendo y desde el diseñador de mi dataset si puedo ejecutar dicho P.A y me trae los datos , cabe mencionar que mi datagrid esta ligado a el Table adapter de Mi P.A y que ya utilicé el método UPDATE por favor ayuda .... =S

    jueves, 24 de junio de 2010 14:34
  • hola

    cual es la query que estas usando, porque peude quee ste todo correcto solo que los filtros no devuelvan registros

    cuando lo ejecutas desde el TableAdapter y devuelve datos, como le pasas las fecha de filtro ?

    de esa misma forma deberias pasarle las fechas a los parametros cuando haces

    cmd.Parameters.AddWithValue("@Fecha1", DateTimePicker1.Value)  cmd.Parameters.AddWithValue("@Fecha2", DateTimePicker2.Value)

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta MuzzBlack miércoles, 14 de julio de 2010 13:53
    jueves, 24 de junio de 2010 15:37
  • hola

    cual es la query que estas usando, porque peude quee ste todo correcto solo que los filtros no devuelvan registros

    cuando lo ejecutas desde el TableAdapter y devuelve datos, como le pasas las fecha de filtro ?

    de esa misma forma deberias pasarle las fechas a los parametros cuando haces

    cmd.Parameters.AddWithValue("@Fecha1", DateTimePicker1.Value)  cmd.Parameters.AddWithValue("@Fecha2", DateTimePicker2.Value)

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

    Ya se por que en los procesos del depurador me dice lo siguiente

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\Documents and Settings\tellod\Desktop\Presentación de Marco Muñoz Estadias\WindowsApplication1\WindowsApplication1\bin\Debug\SARA.vshost.exe', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\System.Deployment\2.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    'SARA.vshost.exe' (administrado): se cargó 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualBasic\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll', se omitió la carga de símbolos. Se optimizó el módulo y se habilitó la opción 'Sólo mi código'.

    El subproceso '<Sin nombre>' (0x7b8) terminó con código 0 (0x0).

    ME DICE QUE SE OMITIO LA CARGA DE LOS SIGNOS AL MOMENTO DE USAR LOS DATETIMEPICKER... ??

    jueves, 24 de junio de 2010 17:16
  • No es eso son los problemas que tiene con el depurador me podrias ayudar???
    jueves, 24 de junio de 2010 18:01
  • hola

    no entiendo cual es la relacion entre el depurador con los filtros del datetimepicker

    que te muestre esos registros de debug no deberian influir en tu query, salgo que vengan de la ventana de errores

    como es la query que estas usando ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 24 de junio de 2010 19:21
  • hola

    no entiendo cual es la relacion entre el depurador con los filtros del datetimepicker

    que te muestre esos registros de debug no deberian influir en tu query, salgo que vengan de la ventana de errores

    como es la query que estas usando ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

    Mi PA Se llama Demora y el codigo es el siguiente:

    @Fecha1

    datetime,

    @Fecha2

    datetime as

    SELECT

     

    TOP 5 dbo.Maquinaria.Nombre_Máquina AS Equipo, dbo.Demoras.Tiempo_Perdido AS [Tiempo Muerto], dbo.Módulos.Nombre_Módulo AS Módulo,

    dbo

    .Demoras.Falla AS Observaciones

    FROM

     

    dbo.Demoras INNER JOIN

    dbo

    .Maquinaria ON dbo.Demoras.Id_Máquina = dbo.Maquinaria.Id_Máquina INNER JOIN

    dbo

    .Lineas ON dbo.Maquinaria.Id_Linea = dbo.Lineas.Id_Linea INNER JOIN

    dbo

    .Módulos ON dbo.Lineas.Id_Módulo = dbo.Módulos.Id_Módulo INNER JOIN

    dbo

    .Encargados ON dbo.Módulos.Id_Encargado = dbo.Encargados.Id_Encargado

    WHERE

     

    Inicio_Semana=@Fecha1 and Final_Semana=@Fecha2

    GROUP

     

    BY dbo.Maquinaria.Nombre_Máquina, dbo.Demoras.Tiempo_Perdido, dbo.Módulos.Nombre_Módulo, dbo.Demoras.Falla

    ORDER

     

    BY dbo.Demoras.Tiempo_Perdido DESC

    viernes, 25 de junio de 2010 12:48
  • hola

    no entiendo cual es la relacion entre el depurador con los filtros del datetimepicker

    que te muestre esos registros de debug no deberian influir en tu query, salgo que vengan de la ventana de errores

    como es la query que estas usando ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

    Mi PA Se llama Demora y el codigo es el siguiente:

    @Fecha1

    datetime,

    @Fecha2

    datetime as

    SELECT

     

    TOP 5 dbo.Maquinaria.Nombre_Máquina AS Equipo, dbo.Demoras.Tiempo_Perdido AS [Tiempo Muerto], dbo.Módulos.Nombre_Módulo AS Módulo,

    dbo

     

    .Demoras.Falla AS Observaciones

    FROM

     

    dbo.Demoras INNER JOIN

    dbo

    .Maquinaria ON dbo.Demoras.Id_Máquina = dbo.Maquinaria.Id_Máquina INNER JOIN

    dbo

    .Lineas ON dbo.Maquinaria.Id_Linea = dbo.Lineas.Id_Linea INNER JOIN

    dbo

    .Módulos ON dbo.Lineas.Id_Módulo = dbo.Módulos.Id_Módulo INNER JOIN

    dbo

    .Encargados ON dbo.Módulos.Id_Encargado = dbo.Encargados.Id_Encargado

    WHERE

     

    Inicio_Semana=@Fecha1 and Final_Semana=@Fecha2

    GROUP

     

    BY dbo.Maquinaria.Nombre_Máquina, dbo.Demoras.Tiempo_Perdido, dbo.Módulos.Nombre_Módulo, dbo.Demoras.Falla

    ORDER

     

    BY dbo.Demoras.Tiempo_Perdido DESC

     

    Una cosa fuera de visual basic sabes como sumar los alores de un campo de sql todos los valores de ese campo es que tengo un campo que se llama timepo y quiero sacar el total de timepo de todos.

    GRACIAS

    viernes, 25 de junio de 2010 12:51
  • hola

    el tema es que las horas no se pueden sumar tan libremente, si es que guardas hh:mm:ss, o sea estan en distintas unidades, es una operacion algo ams manual de conversion a segundo para que puedas sumar y luego obtener las horas nuevamente

    salvo que cuando dices horas te refieras a un valor simple del estilo 2 hs, 4 hs , 1 hs, teniendo en el campo solo el valor numerico

    en ese caso podrias hacer

    SELECT SUM(horas) as horas FROM NombreTabla

     

    pero esto solo aplcia si el campo es numerico

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 25 de junio de 2010 13:29
  • hola

    el tema es que las horas no se pueden sumar tan libremente, si es que guardas hh:mm:ss, o sea estan en distintas unidades, es una operacion algo ams manual de conversion a segundo para que puedas sumar y luego obtener las horas nuevamente

    salvo que cuando dices horas te refieras a un valor simple del estilo 2 hs, 4 hs , 1 hs, teniendo en el campo solo el valor numerico

    en ese caso podrias hacer

    SELECT SUM(horas) as horas FROM NombreTabla

     

    pero esto solo aplcia si el campo es numerico

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

    Por ejemplo si tengo una tabla llamada demoras donde hay un campo con muchos registros y quiero los 5 mayores y sumar esos cinco mayores para obtener el total de horas ("El campo si es decimal")

    y si hago esto

    SELECT

     

    TOP (5) SUM(Tiempo_Perdido) AS [Total de Horas]

    FROM

     

    dbo.Demoras

    ORDER

     

    BY [Total de Horas] DESC

    no funciona me suma todos..... que crees que pase

    viernes, 25 de junio de 2010 15:39
  • hola

    el tema es que las horas no se pueden sumar tan libremente, si es que guardas hh:mm:ss, o sea estan en distintas unidades, es una operacion algo ams manual de conversion a segundo para que puedas sumar y luego obtener las horas nuevamente

    salvo que cuando dices horas te refieras a un valor simple del estilo 2 hs, 4 hs , 1 hs, teniendo en el campo solo el valor numerico

    en ese caso podrias hacer

    SELECT SUM(horas) as horas FROM NombreTabla

     

    pero esto solo aplcia si el campo es numerico

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

     

    SERIA ALGO ASI

    alter

     

    PROCEDURE HORAS

    @Num_Semana

    int as

    SELECT

     

    TOP (5) SUM(Tiempo_Perdido) AS [Total de Horas], Num_Semana AS [Numero de Semana]

    FROM

     

    dbo.Demoras

    WHERE

     

    Num_Semana=@Num_Semana

    GROUP

     

    BY Num_Semana

    ORDER

     

    BY SUM(Tiempo_Perdido) DESC

    PERO ME SUMA TODOS LOS REGISTROS DE Tiempo_Perdido

    que estará pasando??

    viernes, 25 de junio de 2010 15:44
  • hola

    claro, el tema es que necesitas agrupar por otro campo, si solo pones el campo de timepo es logico que sumara todo, pero si agrupas por ejemplo algun otro campo ahi si generara registros

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 25 de junio de 2010 15:46
  • hola

    claro, el tema es que necesitas agrupar por otro campo, si solo pones el campo de timepo es logico que sumara todo, pero si agrupas por ejemplo algun otro campo ahi si generara registros

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

     

    Pero ya estoy agrupando por Num_Semana no por el tiempo me puedes mostrar un ejemplo ??

    GRACIAS

    viernes, 25 de junio de 2010 16:32
  • hola

    ahh no habia visto que estabas agrupando

    SELECT TOP (5) SUM(Tiempo_Perdido) AS [Total de Horas], Num_Semana AS [Numero de Semana]
    FROM dbo.Demoras
    WHERE Num_Semana=@Num_Semana
    GROUP BY Num_Semana
    ORDER BY SUM(Tiempo_Perdido) DESC

    lo que deberias quitar es el WHERE

    SELECT TOP (5) SUM(Tiempo_Perdido) AS [Total de Horas], Num_Semana AS [Numero de Semana]
    FROM dbo.Demoras
    GROUP BY Num_Semana
    ORDER BY SUM(Tiempo_Perdido) DESC

     

    ya que si filtras no tiene sentido agrupar, porque el filtro hara que se devuelva solo un registro de esa semana

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 25 de junio de 2010 16:53
  • hola

    ahh no habia visto que estabas agrupando

    SELECT TOP (5) SUM(Tiempo_Perdido) AS [Total de Horas], Num_Semana AS [Numero de Semana]
    FROM dbo.Demoras
    WHERE Num_Semana=@Num_Semana
    GROUP BY Num_Semana
    ORDER BY SUM(Tiempo_Perdido) DESC

    lo que deberias quitar es el WHERE

    SELECT TOP (5) SUM(Tiempo_Perdido) AS [Total de Horas], Num_Semana AS [Numero de Semana]
    FROM dbo.Demoras
    GROUP BY Num_Semana
    ORDER BY SUM(Tiempo_Perdido) DESC

     

    ya que si filtras no tiene sentido agrupar, porque el filtro hara que se devuelva solo un registro de esa semana

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

     

     

    No lo que pasa es que quiero solo un registro de todos los dias de esa semana , es decir que me filtre por id semana que yo se lo daré la suma de las horas de los primero 5 registros de mi tabla

    viernes, 25 de junio de 2010 17:00

  • quizas algo como esto

     

    SELECT SUM(Tiempo_Perdido) AS [Total de Horas]
    FROM (SELECT TOP 5 Tiempo_Perdido
            FROM dbo.Demoras
            WHERE Num_Semana=@Num_Semana)

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 26 de junio de 2010 2:47