CALCULO ENTRE DATAS
                    fala galera 
tenho este codigo que faz calculos entre datas como eu faço para subtrair finais de semana e feriados
Dim date2Entered As String = dtVencimento.Text
Dim date1Entered As String = mskValorpercela.Text
Try
Dim date2 As Date = Date.Parse(date2Entered)
Dim date1 As Date = Date.Parse(date1Entered)
Dim days As Long = DateDiff(DateInterval.Day, date1, date2)
Dim day As Long = DateDiff(DateInterval.Weekday, date1, date2)
MessageBox.Show([Ô]Dias até hoje: [Ô] & days.ToString)
Catch ex As Exception
MessageBox.Show([Ô]Data invalida: [Ô] & ex.Message)
End Try
grato
            tenho este codigo que faz calculos entre datas como eu faço para subtrair finais de semana e feriados
Dim date2Entered As String = dtVencimento.Text
Dim date1Entered As String = mskValorpercela.Text
Try
Dim date2 As Date = Date.Parse(date2Entered)
Dim date1 As Date = Date.Parse(date1Entered)
Dim days As Long = DateDiff(DateInterval.Day, date1, date2)
Dim day As Long = DateDiff(DateInterval.Weekday, date1, date2)
MessageBox.Show([Ô]Dias até hoje: [Ô] & days.ToString)
Catch ex As Exception
MessageBox.Show([Ô]Data invalida: [Ô] & ex.Message)
End Try
grato
                    Basta você realizar um For Next entre a data 1 e a data 2 e contar quantos dias são sábados e domingos, e após isso, subtrair do total de dias encontrados.
No caso dos feriados você tem de fazer uma lista para comparar com as datas dentro desse mesmo laço For Next
                
            No caso dos feriados você tem de fazer uma lista para comparar com as datas dentro desse mesmo laço For Next
                    Mais simples ainda
Exemplo.
DateDiff ([Ô]d[Ô],[Ô]2012-01-01[Ô],[Ô]2012-02-10[Ô]) vai me retornar 40 dias
Eu sei que a semana tem 7 dia, logo
40/7 será a qtd de semana existente no resultado.
5.714
Já sei que tenho 5 semanas, mais ainda me sobram alguns pontos.
Mas uma coisa por vez.
Se cada semanda tem 2 dias no fim (Sab e Dom) sei que terei 10 dias de fim de semana.
que é: 5 x 2 = 10 (entre sabados e domingos)
Para saber a diferença lá de cima vamos prosseguir assim.
7 x 5 = 35
40 - 35 = 5
então os [Ô]0,714[Ô] é equivalem a 5 dias.
Agora você vai ter que ver como montar isso:
Se o 1º dia da formula é sabado o 40° dia será quarta.
Assim sendo o resto (aqueles 5 dias) serão Sab, Dom, Seg, Ter e Qua.
Então você tem nesse exemplo, 12 fins de semana.
Espero que você tenha entendido.
E possa simplificar para você.
                
            Exemplo.
DateDiff ([Ô]d[Ô],[Ô]2012-01-01[Ô],[Ô]2012-02-10[Ô]) vai me retornar 40 dias
Eu sei que a semana tem 7 dia, logo
40/7 será a qtd de semana existente no resultado.
5.714
Já sei que tenho 5 semanas, mais ainda me sobram alguns pontos.
Mas uma coisa por vez.
Se cada semanda tem 2 dias no fim (Sab e Dom) sei que terei 10 dias de fim de semana.
que é: 5 x 2 = 10 (entre sabados e domingos)
Para saber a diferença lá de cima vamos prosseguir assim.
7 x 5 = 35
40 - 35 = 5
então os [Ô]0,714[Ô] é equivalem a 5 dias.
Agora você vai ter que ver como montar isso:
Se o 1º dia da formula é sabado o 40° dia será quarta.
Assim sendo o resto (aqueles 5 dias) serão Sab, Dom, Seg, Ter e Qua.
Então você tem nesse exemplo, 12 fins de semana.
Espero que você tenha entendido.
E possa simplificar para você.
                    E ai cara, beleza?
Ache que a função de cima ficou meio complicada né?
Segue algo mais prático
Dim wDataInical, wDataFinal, wDataAtual As Date
wDataInical = [Ô]2012-01-01[Ô]
wDataFinal = [Ô]2012-02-10[Ô]
wDataAtual = wDataInical
   
Do While wDataAtual <> wDataFinal
Dim wDiaSemana As String
Dim qtdDias As Integer
If Weekday(wDataAtual) = 1 Or Weekday(wDataAtual) = 7 Then
qtdDias = qtdDias + 1
End If
[ô]Aqui você abre seu Recordset (DataSet)
using ds as new sqlconnection (conexao)
Do While Not ds.read (sei lá agora não lembro bem, mais acho que é isso)
If wDataAtual = rs!Feriado Then
qtdDias = qtdDias + 1
End If
rs.movenext
Loop
using end
wDataAtual = DateAdd([Ô]d[Ô], 1, wDataAtual)
Loop
MsgBox [Ô]Dias: [Ô] & qtdDias & [Ô][Ô]
[txt-color=#e80000]
O importante é a Lógica da coisa.
Boa Sorte[/txt-color]
            Ache que a função de cima ficou meio complicada né?
Segue algo mais prático
Dim wDataInical, wDataFinal, wDataAtual As Date
wDataInical = [Ô]2012-01-01[Ô]
wDataFinal = [Ô]2012-02-10[Ô]
wDataAtual = wDataInical
Do While wDataAtual <> wDataFinal
Dim wDiaSemana As String
Dim qtdDias As Integer
If Weekday(wDataAtual) = 1 Or Weekday(wDataAtual) = 7 Then
qtdDias = qtdDias + 1
End If
[ô]Aqui você abre seu Recordset (DataSet)
using ds as new sqlconnection (conexao)
Do While Not ds.read (sei lá agora não lembro bem, mais acho que é isso)
If wDataAtual = rs!Feriado Then
qtdDias = qtdDias + 1
End If
rs.movenext
Loop
using end
wDataAtual = DateAdd([Ô]d[Ô], 1, wDataAtual)
Loop
MsgBox [Ô]Dias: [Ô] & qtdDias & [Ô][Ô]
[txt-color=#e80000]
O importante é a Lógica da coisa.
Boa Sorte[/txt-color]
                    Olá 
Pode-se saber qual é o objectivo?
Depende do que queira fazer.
            Pode-se saber qual é o objectivo?
Depende do que queira fazer.
                    desculpe a demora para responder estava bem enrolado aqui preciso montar sla. VELDRAME pq sql connection 
                
            
                        Tópico encerrado , respostas não são mais permitidas
                    
                


