jueves, 7 de abril de 2011

Calcula Dias Habiles Con Visual Basic.net

Function DiasFestivos(ByVal FInicial As Date, ByVal FFinal As Date) As String

        Dim DiasTotales As Integer = 0
        Dim rangodias As Integer = 0
        Dim finicial2 As Date
        Dim ffinal2 As Date
        Dim diaNOhabil As Integer = 0
        Dim contador As Integer = 0
        Dim contador2 As Integer = 0
        'Dim test As Integer = 0
        Dim dtDiasBD As New DataTable
        dtDiasBD = TablaDiasFestivos()
        Dim tamanioDatos As Integer
        tamanioDatos = dtDiasBD.Rows.Count
        tamanioDatos = tamanioDatos - 1
        If IsDate(FInicial) And IsDate(FFinal) Then
            finicial2 = CDate(FInicial)
            ffinal2 = CDate(FFinal)
            If finicial2 < ffinal2 Then
                'Se obtiene el rango de dias
                rangodias = DateDiff(DateInterval.Day, finicial2, ffinal2)
                'rangodias = rangodias + 1
                'se recorre el rango
                For contador = 0 To rangodias Step 1
                    If Weekday(finicial2) = 1 Or Weekday(finicial2) = 7 Then
                        diaNOhabil = diaNOhabil + 1
                    End If
                    For contador2 = 0 To tamanioDatos Step 1
                        If CDate(finicial2).ToString("dd-MM-yyyy") = CDate(dtDiasBD.Rows(contador2)("fecha")).ToString("dd-MM-yyyy") Then
                            diaNOhabil = diaNOhabil + 1
                        End If
                    Next

                    finicial2 = DateAdd("d", 1, finicial2) ' se incrementa la fecha un dia mas
                Next
                DiasTotales = (rangodias + 1) - diaNOhabil
            End If
        End If

        Return DiasTotales.ToString()
    End Function