USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Achar o nr dias úteis entre duas datas !
Francisco
não registrado
ENUNCIADA !
Postada em 16/02/2009 11:21 hs   
Olá,
 
Como é possivel em VB 6.0 achar o nr de dias úteis entre duas datas (dias da semana de segunda a sexta). Eu já estou a usar a instrução DateDiff, mas parece não resultar ... ou então estou a usar de forma errada. Obrigado.
   
MURILO
não registrado
ENUNCIADA !
Postada em 16/02/2009 11:31 hs   
Use a função: DatePart("w", Date)
 
para ver o resultado coloque msgbox(DatePart("w", Date))
 
ele irá retornar 1 para domingo, 2 para segunda e assim em diante.
 
utilizando um do until da data inicial até a final e uma variavel que será o contador de dias uteis, ele pode contar o número de dias uteis excluindo os que a função datepart retornar 1 ou 7.
 
No caso dos feriados seria necessário ter uma tabela com as datas de firiados para que ele consultasse e não registrasse a data na contagem.
   
Francisco
não registrado
ENUNCIADA !
Postada em 16/02/2009 11:34 hs   
Obrigado,
 
Vou experimentar ... e ver se resulta. Obrigadissimo.
   
PASCOAL-PG
PRAIA GRANDE
SP - BRASIL
ENUNCIADA !
Postada em 16/02/2009 20:03 hs            
EU TENHO ISSO JÁ ALGUM TEMPO V SE AJUDA :

Private Function WorkDays(ByVal dtBegin As Date, ByVal dtEnd As Date) As Long
   Dim dtMinSunday As Date
   Dim dtMaxSaturday As Date
   Dim lngWorkDays As Long
   dtMinSunday = dtBegin + ((8 - Weekday(dtBegin)) Mod 7)
   dtMaxSaturday = dtEnd - (Weekday(dtEnd) Mod 7)
   lngWorkDays = (((dtMaxSaturday - dtMinSunday) + 1) / 7) * 5
   If dtMinSunday <> dtBegin Then
   lngWorkDays = lngWorkDays + (7 - Weekday(dtBegin))
   End If
   If dtMaxSaturday <> dtEnd Then
      lngWorkDays = lngWorkDays + (Weekday(dtEnd) - 1)
   End If
   WorkDays = lngWorkDays
End Function
 

==========================================================================
Dim I As Integer
Dim cont As Integer
Dim resultado As Integer
cont = 0
'
For I = 1 To Len(Text1.Text)
If Mid(Text1.Text, I, 1) = IsNumeric(Mid(Text1, I, 1)) Then
        cont = cont + 1
        If cont = 2 Then
        resultado = Mid(Text1, I, 1)
        Text2.Text = resultado
        End If
    
      
    End If
Next  End If
Next
=====================================================================
Function DiaDaSemana(Data As String) As String
    If IsDate(Data) Then
        Select Case Format(Data, "w")
        Case 1
            DiaDaSemana = "Domingo"
        Case 2
            DiaDaSemana = "Segunda-feira"
        Case 3
            DiaDaSemana = "Terça-feira"
        Case 4
            DiaDaSemana = "Quarta-feira"
        Case 5
            DiaDaSemana = "Quinta-feira"
        Case 6
            DiaDaSemana = "Sexta-feira"
        Case 7
            DiaDaSemana = "Sábado"
        End Select
    Else
        DiaDaSemana = "Data Inválida!"
    End If
End Function
=======================================================================
Public Function DiaSemana(ByVal Semana As Integer, Optional ByVal Ano As Integer = -1) As Date
'Função criada por Matheus de Oliveira (MATIOLI)
Dim pDia As Date, uDia As Date
If Ano < 0 Then Ano = Year(Date)
DiaSemana = DateAdd("WW", Semana - 1, DateSerial(Ano, 1, 1)) - (Weekday(DateSerial(Ano, 1, 1)) - 1)
End Function
 
'Para usar:
'Dim pDia As Date, uDia As Date
''Se não informar o ano, será usado pela função o Ano da data atual do sistema
'pDia = DiaSemana([Semana], [Ano])
'uDia = DateAdd("d", 6, pDia)
'
'MsgBox "A semana " & Semana & " vai de " & pDia & " até " & uDia
=======================================================================
'Coloque esta função em um módulo
Public Function DiaSemana(vDia As Date) As String
    Select Case weekday(vDia)
        Case 1
            DiaSemana = "Domingo"
        Case 2
            DiaSemana = "Segunda"
        Case 3
            DiaSemana = "Terça"
        Case 4
            DiaSemana = "Quarta"
        Case 5
            DiaSemana = "Quinta"
        Case 6
            DiaSemana = "Sexta"
        Case 7
            DiaSemana = "Sábado"
    End Select
End Function
 
'Para chamar a função é simples
txtdiadasemana.Text = DiaSemana(date)
ME AVISE SE FUNCIONA,.,,,,,,rsrsrsrsrsr
 
 BOA SORTE
 
 
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 16/02/2009 20:32 hs            
Pascoal este código faz o que?
 
pois é bem simples veja esta função
 
Private Sub Command1_Click()
MsgBox DiasUteis("01/02/2009", "05/03/2009")
End Sub

Function DiasUteis(DataIni As Date, DataFim As Date) As Integer
While Not DataIni = DataFim + 1
If DatePart("w", DataIni) <> 1 And DatePart("w", DataIni) <> 7 Then
DiasUteis = DiasUteis + 1
End If
DataIni = DateAdd("d", 1, DataIni)
Wend
End Function
 
a função conta os dias uteis entre duas datas, menos os feriados, acho qu é isso que ele precisa
 
TÓPICO EDITADO
 
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página