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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  dia útil
®ogerVB
OSASCO
SP - BRASIL
ENUNCIADA !
Postada em 15/08/2005 16:26 hs            
Alguém tem alguma função que me informa se a data digitada é ou não um dia útil, e se não for, procurar o dia útil mais próximo!!!
Obrigado!!!
   
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
ENUNCIADA !
Postada em 15/08/2005 18:31 hs         
eu peguei um exemplo que eu tinha para encontrar os próximos 5 dias úteis após uma data (troquei 5 por 1 na linha "Do While diautil < 1
")
 
Private Sub Command1_Click()
 Dim dt_Pascoa As Variant 'feriado de páscoa
 Dim dt_Carnaval As Variant 'feriado de carnaval
 Dim dt_SextaSanta As Variant 'feriado de sexta-feira santa
 Dim dt_CorpusC As Variant 'feriado corpus cristi
 Dim Data As Variant 'data informada pelo usuário
 Dim diautil As Integer 'variavel de controle -> 5 dias úteis
 Dim dataaux As Date 'data após x dias úteis (x = diautil)
 Data = Format(CDate(Text1.Text), "dd/mm/yyyy")
 subFeriadosMoveis Year(Data), dt_Pascoa, dt_Carnaval, dt_SextaSanta, dt_CorpusC
 
diautil = 0
dataaux = Data
Do While diautil < 1
  dataaux = DateAdd("d", 1, dataaux)
  If (Weekday(dataaux) <> 1) And (Weekday(dataaux) <> 7) Then 'se dia não for sábado ou domingo
    If (dataaux <> dt_Pascoa) And (dataaux <> dt_Carnaval) And (dataaux <> dt_SextaSanta) And (dataaux <> dt_CorpusC) Then 'se dia não for feriado
      diautil = diautil + 1 'se for dia útil conta o dia
    End If
  End If
Loop
MsgBox dataaux
End Sub
Private Sub subFeriadosMoveis(ByVal Ano As Long, ByRef dt_Pascoa As Variant, ByRef dt_Carnaval As Variant, ByRef dt_SextaSanta As Variant, ByRef dt_CorpusC As Variant)
'Esta função calcula os feriados móveis nacionais:
'Pascoa, Carnaval, Sexta-Feira Santa e CorpusC.
     Dim A, B, C, D, E, F, G, H, I, K, L, M, P, Q As Long
     A = (Ano Mod 19)
     B = Int(Ano / 100)
     C = (Ano Mod 100)
     D = Int(B / 4)
     E = (B Mod 4)
     F = Int((B + 8) / 25)
     G = Int((B - F + 1) / 3)
     H = ((19 * A + B - D - G + 15) Mod 30)
     I = Int(C / 4)
     K = (C Mod 4)
     L = ((32 + 2 * E + 2 * I - H - K) Mod 7)
     M = Int((A + 11 * H + 22 * L) / 451)
     P = Int((H + L - 7 * M + 114) / 31)
     Q = ((H + L - 7 * M + 114) Mod 31)
   
     dt_Pascoa = CDate((Q + 1) & "/" & P & "/" & Ano)
     dt_Carnaval = DateAdd("d", -47, dt_Pascoa)
     dt_SextaSanta = DateAdd("d", -2, dt_Pascoa)
     dt_CorpusC = DateAdd("d", 60, dt_Pascoa)
End Sub
 
   
®ogerVB
OSASCO
SP - BRASIL
Postada em 16/08/2005 11:37 hs            
Legal essa função... Realmente ele te informa o próximo dia útil, mas e para eu saber se o dia que foi digitado é ou não um dia útil, pois eu gostaria que ele só me informasse o próximo dia útil, se aque que foi digitado não for um.

Obrigado!!!!
     
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
Postada em 16/08/2005 13:19 hs         
Private Sub Command1_Click()
 Dim dt_Pascoa As Variant 'feriado de páscoa
 Dim dt_Carnaval As Variant 'feriado de carnaval
 Dim dt_SextaSanta As Variant 'feriado de sexta-feira santa
 Dim dt_CorpusC As Variant 'feriado corpus cristi
 Dim Data As Variant 'data informada pelo usuário
 Dim diautil As Integer 'variavel de controle -> 5 dias úteis
 Dim dataaux As Date 'data após x dias úteis (x = diautil)
 Data = Format(CDate(Text1.Text), "dd/mm/yyyy")
 subFeriadosMoveis Year(Data), dt_Pascoa, dt_Carnaval, dt_SextaSanta, dt_CorpusC
 
diautil = 0
dataaux = Data
If (Weekday(dataaux) <> 1) And (Weekday(dataaux) <> 7) Then 'se dia não for sábado ou domingo
  If (dataaux <> dt_Pascoa) And (dataaux <> dt_Carnaval) And (dataaux <> dt_SextaSanta) And (dataaux <> dt_CorpusC) Then 'se dia não for feriado
    diautil = 1  'se for dia útil conta o dia
  End If
End If
If diautil = 1 Then
  MsgBox "A data " + Str(dataaux) + " é um dia útil.", vbInformation, "Aviso"
Else
  MsgBox "A data " + dataaux + " não é um dia útil.", vbInformation, "Aviso"
End If
End Sub
Private Sub subFeriadosMoveis(ByVal Ano As Long, ByRef dt_Pascoa As Variant, ByRef dt_Carnaval As Variant, ByRef dt_SextaSanta As Variant, ByRef dt_CorpusC As Variant)
'Esta função calcula os feriados móveis nacionais:
'Pascoa, Carnaval, Sexta-Feira Santa e CorpusC.
     Dim A, B, C, D, E, F, G, H, I, K, L, M, P, Q As Long
     A = (Ano Mod 19)
     B = Int(Ano / 100)
     C = (Ano Mod 100)
     D = Int(B / 4)
     E = (B Mod 4)
     F = Int((B + 8) / 25)
     G = Int((B - F + 1) / 3)
     H = ((19 * A + B - D - G + 15) Mod 30)
     I = Int(C / 4)
     K = (C Mod 4)
     L = ((32 + 2 * E + 2 * I - H - K) Mod 7)
     M = Int((A + 11 * H + 22 * L) / 451)
     P = Int((H + L - 7 * M + 114) / 31)
     Q = ((H + L - 7 * M + 114) Mod 31)
   
     dt_Pascoa = CDate((Q + 1) & "/" & P & "/" & Ano)
     dt_Carnaval = DateAdd("d", -47, dt_Pascoa)
     dt_SextaSanta = DateAdd("d", -2, dt_Pascoa)
     dt_CorpusC = DateAdd("d", 60, dt_Pascoa)
End Sub
 
     
®ogerVB
OSASCO
SP - BRASIL
ENUNCIADA !
Postada em 17/08/2005 09:58 hs            
Valeu mesmo Martini...!!!!
   
VACA
LIMEIRA
SP - BRASIL
ENUNCIADA !
Postada em 17/08/2005 11:07 hs            
coloca na seçao de dicas martini...

"Quando estou fraco, aí então é que sou Poderoso"
   
Página(s): 1/2      PRÓXIMA »


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