sábado, 2 de mayo de 2015

Listar días no laborables(domingos) en Datagridview

Un saludo y un post más para los seguidores de mis publicaciones. En esta vez  me toco desarrollar  un algoritmo  que necesitaba personalmente y como su nombre lo dice tenia que listar, no solo la cantidad de dias no laborables de una fecha próxima , sino también buscar la manera que me mostrara la fecha en la que acertaba el día.

Siendo así el algoritmo que les presento, busca los días domingos partiendo de la fecha actual  hasta una fecha posterior. Esto nos ocurre cuando queremos saber que fecha cae tal domingo y evitarnos recurrir al calendario y hacerlo manualmente. Les expongo el código:

Public Class Form1
    Dim n_dias As Integer
    Dim captura_fecha(500) As String
    Public Function DiasNo_Laborables(ByVal fechaProxima As Date)
        Try
            Dim dias_no_laborables As Integer = 0
            Dim FechaActual As Date = Now.Date
            While FechaActual <= fechaProxima
                If FechaActual.DayOfWeek = DayOfWeek.Sunday Then
                    dias_no_laborables = dias_no_laborables + 1
                    captura_fecha(dias_no_laborables) = FechaActual
                End If
                FechaActual = FechaActual.AddDays(1)
            End While
            Return dias_no_laborables
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Function
    Sub llenargrid(ByVal dias As Integer)
        Try
            DataGridView1.Rows.Add(dias)
            For i As Integer = 0 To n_dias - 1
                DataGridView1.Item(0, i).Value = i + 1
                DataGridView1.Item(1, i).Value = captura_fecha(i + 1)
            Next
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
        n_dias = DiasNo_Laborables(DateTimePicker1.Value)
        borrartabla()
        llenargrid(n_dias)
    End Sub
    Sub borrartabla()
        Try
            DataGridView1.Rows.Clear()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
End Class

Por ejemplo si la fecha actual = 02/05/2015 y queremos saber cuantos domingos y la fecha que cae hasta el rango de 05/09/2015, La cantidad de domingos es = 18 y las fechas vean en la captura:

NOTA: Hago uso de un Control DateTimePicker , un  Boton y Datagridview



y es todo hagan uds mismos y me comentan:

Para los que quieren mi ejemplo: