Ir para o conteúdo

Adiciona Dias


Criado por Marcos A. Sanches, Dez 16 2011 14:41

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 Marcos A. Sanches

Marcos A. Sanches
  • Marcos A. Sanches
  • Colaborador
  • 3 Revisões
  • LocalizaçãoSao José dos Campos

Revisou 16 dezembro 2011 - 14:41

Olá a todos.

Encontrei essa função faz um tempo na internet e dei uma modificada espero que ajude a todos.

Public Function AddDias(ByVal DataInicial As Date, ByVal Dias As Integer)
        Dim resultado As Date
        Dim Conexao As MySqlConnection
        Dim CMD As MySqlCommand
        Dim DR As MySqlDataReader
        Dim Feriados(11) As String
        Dim SSQL As String
        Dim StrConexao As String
        Dim Dados() As String
        Dim Banco As New Banco
        Dim Cont As Integer = 0

        Feriados(0) = CDate("01/01/2011")
        Feriados(1) = CDate("08/03/2011")
        Feriados(2) = CDate("21/04/2011")
        Feriados(3) = CDate("22/04/2011")
        Feriados(4) = CDate("01/05/2011")
        Feriados(5) = CDate("23/06/2011")
        Feriados(6) = CDate("07/09/2011")
        Feriados(7) = CDate("12/10/2011")
        Feriados(8) = CDate("02/11/2011")
        Feriados(9) = CDate("15/11/2011")
        Feriados(10) = CDate("25/12/2011")

        Try
            Dados = Banco.LeXML
            StrConexao = Banco.StrConecta(Dados(1), Dados(2), Dados(3), Dados(4), Dados(5))

            Conexao = New MySqlConnection(StrConexao)
            Conexao.Open()

            SSQL = "select * from tb_feriados"

            CMD = New MySqlCommand(SSQL, Conexao)
            DR = CMD.ExecuteReader

            resultado = DataInicial 

            While (Dias > -1)
                If resultado.DayOfWeek = DayOfWeek.Saturday Or resultado.DayOfWeek = DayOfWeek.Sunday Or Feriados.Contains(resultado) Then
                    resultado = resultado.AddDays(1)
                ElseIf (Dias > 0) Then
                    resultado = resultado.AddDays(1)
                    Dias = Dias - 1
                ElseIf (Dias = 0) Then
                    While (resultado.DayOfWeek = DayOfWeek.Saturday Or resultado.DayOfWeek = DayOfWeek.Sunday Or Feriados.Contains(resultado))
                        resultado = resultado.AddDays(1)
                    End While

                    Dias = Dias - 1
                End If
            End While

            Return resultado
        Catch ex As Exception
            MsgBox("Ocorreu um erro: " + ex.Message, vbCritical, "Erro")
            Return Nothing
        End Try
    End Function

Atenciosamente
Marcos.




1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)