none
Actualizar datagridview en función de una fecha

    Pregunta

  • Hola, tengo el siguiente Datagrid, Designo Una Etapa, Un Nombre de Tarea, Una Fecha de Inicio y Una de Termino la agrego al Datagrid y todo bien, lo que quiero es lo siguiente, haré un ejemplo

    Tengo tres Fechas Inicio = 14/12/2013 Termino = 15/12/2016 Fecha Actual  = 15/10/2016

    Quiero que en base a esas fechas se genere un % de avance en comparación con la fecha actual, como el dia 14/12/2016 ya termino la tarea debería ir en un 0,5(50% )de avance quiero que al presionar el botón me calcule ese porcentaje para cada tarea agregada en el datagrid, pero solo consigo que lo realize en la primera tarea agregada y no en las demas, como puedo lograr eso, estoy usando el siguiente codigo

     For Each fila As DataGridViewRow In Listado_tareas.Rows
                Dim inicio As DateTime = CStr(fila.Cells("FECHA_INICIO").Value)
                Dim termino As DateTime = CStr(fila.Cells("FECHA_TERMINO").Value)
                Dim dias As Integer = DateDiff(DateInterval.Day, inicio, Date.Today) ' Dias de diferencia entre las dos 
                Dim finesDeSemana As Integer = (dias / 7) * 2 ' Restas el número de fines de semana completos entre las dos 
                dias = dias - finesDeSemana
                If Date.Today < CStr(fila.Cells("FECHA_INICIO").Value) Then
                    fila.Cells("PORCENTAJE_AVANC").Value = 0
                    Exit Sub
                End If
    
                If Date.Today > CStr(fila.Cells("FECHA_TERMINO").Value) Then
                    fila.Cells("PORCENTAJE_AVANC").Value = 1
                    Exit Sub
    
                Else
                    fila.Cells("PORCENTAJE_AVANC").Value = dias / fila.Cells("DURACIÓN").Value
                    Exit Sub
                End If
            Next


    jueves, 15 de diciembre de 2016 3:29

Respuestas

  • El_vena,

    La instrucción Exit Sub ejecuta la salida del procedimiento Sub, por tanto no permites que se termine de recorrer todas las filas de la colección.

    	dias = dias - finesDeSemana
    	If Date.Today < CStr(fila.Cells("FECHA_INICIO").Value) Then
    		fila.Cells("PORCENTAJE_AVANC").Value = 0
    	Else
    		If Date.Today > CStr(fila.Cells("FECHA_TERMINO").Value) Then
    			fila.Cells("PORCENTAJE_AVANC").Value = 1
    		Else
    			fila.Cells("PORCENTAJE_AVANC").Value = dias / fila.Cells("DURACIÓN").Value
    		End If
    	End If
    Next


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 15 de diciembre de 2016 3:38