none
VB,Sumar columnas de horas en un datagridview y mostrar resultado en otra columna de datagridview RRS feed

  • Pregunta

  • buenas tardes:

    tengo asi me consulta que me llena mi datagridview en vb,c...

    SELECT usuario,CASE WHEN (CONVERT(varchar(10), entrada, 103) = '01/01/1900') THEN NULL ELSE CONVERT(varchar(10), entrada, 108)end AS ENTRADAS ,CASE WHEN (CONVERT(varchar(10), comida, 103) = '01/01/1900') THEN NULL ELSE CONVERT(varchar(10), comida, 108) end AS COMIDAS,CASE WHEN (CONVERT(varchar(10), salida, 103) = '01/01/1900') THEN NULL ELSE CONVERT(varchar(10), salida, 108) end as Salidas, horas, laborar 

    y quiero que se sume la c  mis horas de mis columna de as Entradas y as comidas y as salidas en una nueva columna de mi datagridview.

    Alguien podria guiarme, gracias!

    miércoles, 29 de julio de 2015 22:39

Respuestas

  • Podrías aprovechar la consulta para hacer la suma. 

    Te adjunto un ejemplo:

    Declare @table as table (usuario nvarchar(10),Fechas datetime)    
    Insert into @table values('Sanchez',cast('08/01/2015 00:01:06' as datetime))
    Insert into @table values('Sanchez',cast('08/01/2015 00:12:05' as datetime))
    Insert into @table values('Fracisco',cast('08/01/2015 00:04:43' as datetime))
    Insert into @table values('Fracisco',cast('08/01/2015 00:15:43' as datetime))
    --------------------------------------------------------
    
    ;WITH CTE
    as
    (
    Select usuario, sum(datediff(SECOND, 0, cast(Fechas as time))) as TotalTiempoEnSegundos
    from @table 
    Group by usuario 
    )
     
    Select *, RIGHT('0' + CONVERT(VARCHAR(12), TotalTiempoEnSegundos / 60 / 60 / 24),2 )
    + ':' +  RIGHT('0' + CONVERT(VARCHAR(12), TotalTiempoEnSegundos / 60 / 60 % 24),2) 
    + ':' +  RIGHT('0' + CONVERT(VARCHAR(2), TotalTiempoEnSegundos / 60 % 60) ,2)
    + ':' +  RIGHT('0' + CONVERT(VARCHAR(2), TotalTiempoEnSegundos % 60),2) AS ' Día(s) : Hora(s) : Minuto(s) : Segundo(s) '
    
    from CTE
    

    Un saludo.


    Solo unos pocos marcan las diferencias. Tu mismo.

    jueves, 30 de julio de 2015 8:43

Todas las respuestas

  • Podrías aprovechar la consulta para hacer la suma. 

    Te adjunto un ejemplo:

    Declare @table as table (usuario nvarchar(10),Fechas datetime)    
    Insert into @table values('Sanchez',cast('08/01/2015 00:01:06' as datetime))
    Insert into @table values('Sanchez',cast('08/01/2015 00:12:05' as datetime))
    Insert into @table values('Fracisco',cast('08/01/2015 00:04:43' as datetime))
    Insert into @table values('Fracisco',cast('08/01/2015 00:15:43' as datetime))
    --------------------------------------------------------
    
    ;WITH CTE
    as
    (
    Select usuario, sum(datediff(SECOND, 0, cast(Fechas as time))) as TotalTiempoEnSegundos
    from @table 
    Group by usuario 
    )
     
    Select *, RIGHT('0' + CONVERT(VARCHAR(12), TotalTiempoEnSegundos / 60 / 60 / 24),2 )
    + ':' +  RIGHT('0' + CONVERT(VARCHAR(12), TotalTiempoEnSegundos / 60 / 60 % 24),2) 
    + ':' +  RIGHT('0' + CONVERT(VARCHAR(2), TotalTiempoEnSegundos / 60 % 60) ,2)
    + ':' +  RIGHT('0' + CONVERT(VARCHAR(2), TotalTiempoEnSegundos % 60),2) AS ' Día(s) : Hora(s) : Minuto(s) : Segundo(s) '
    
    from CTE
    

    Un saludo.


    Solo unos pocos marcan las diferencias. Tu mismo.

    jueves, 30 de julio de 2015 8:43
  • bUENOS dias:

    ago asi quiero que quede, mi campos de entrada hasta salidas no existen, como el ejmeplo de la consulta las renombre con as entradas y asi sucesivamente...como seria para sacar el calculo de horas?...

                        entrada     comida       regreso        salida         Total Horas

    pedro          9:20AM     2:12PM      4:00PM     7:16PM             8:08
     luis            8:13AM     12:08PM    2:05PM     6:33PM              8:23




    jueves, 30 de julio de 2015 13:34