FUNCAO QUE VERIFIQUE FERIADOS MOVEIS E FIXOS
Pessoal, to fazendo um sistema de cartão ponto...
e todos os dias quando os funcionãrios batem o ponto, junto com todas as verificações de horas de entrada e saÃda
preciso que o progrma verifique se aquele dia é feriado ou não, gravando na tabela [Ô]horários[Ô], se é feriado, e qual feriado é.
Como posso fazer isso em VB6?
sendo que existem feriados móveis.
Obrigado desde já.
e todos os dias quando os funcionãrios batem o ponto, junto com todas as verificações de horas de entrada e saÃda
preciso que o progrma verifique se aquele dia é feriado ou não, gravando na tabela [Ô]horários[Ô], se é feriado, e qual feriado é.
Como posso fazer isso em VB6?
sendo que existem feriados móveis.
Obrigado desde já.
http://www.macoratti.net/dica65.htm
Veja se isto pode te ajudar
Uma dica diminua esta foto.
Veja se isto pode te ajudar
Uma dica diminua esta foto.
Citação::
Uma dica diminua esta foto.
Concordo!!!
Os feriados FIXOS são:
01/01 - Confraternização Universal
21/04 - Tiradentes
01/05 - Dia do Trabalho
07/09 - Independência
02/11 - Finados
15/11 - Proclamação da República
25/12 - Natal
Os feriados ESTADUAIS são:
09/07 - Revolução Contitucionalista (SP)
???? - Revolução Farroupilha (RS)
Etc
Os feriados MUNICIPAIS são:
20/01 - São Sebastião do Rio de Janiro (RJ)
25/01 - Fundação de São Paulo (SP)
20/11 - Conciência Nêgra (depende do municÃpio)
Etc
Os feriados MÓVEIS (Carnaval, Sexta-feira Santa, Corpus Cristi, Etc) devem ser cadastrados em uma banco de dados a cada ano. Você pode cadastrar os feriados fixos no banco também e solicitar a alteração apenas dos feriados MÓVEIS.
Então você pode fazer algo [Ô]parecido[Ô] com:
public funcion fFeriado(Wdata)
select function right(Wdata,5)
case [Ô]01/01[Ô]
msgbox([Ô]Confraternização Universal[Ô])
case [Ô]21/04[Ô]
msgbox([Ô]Tiradentes[Ô])
case [Ô]01/05[Ô]
msgbox([Ô]Dia do Trabalho[Ô])
case [Ô]07/09[Ô][Ô]
msgbox([Ô]Independência[Ô])
end select
Tem outros ainda, como aniversário de emancipação de municÃpio e dia da reforma (em apenas alguns municipios)
Pode acontecer de uma empresa ter a matriz em um municipio (e ali é processada a folha de pagamento) e ela ter filiais em vários municipios onde cada um tem feriados que não coinsidem com os demais.
Neste caso você precisa criar uma tabela de feriados por unidade de operação.
Pode acontecer de uma empresa ter a matriz em um municipio (e ali é processada a folha de pagamento) e ela ter filiais em vários municipios onde cada um tem feriados que não coinsidem com os demais.
Neste caso você precisa criar uma tabela de feriados por unidade de operação.
Abaixo segue rotina para calcular feriados móveis no Brasil
Para chamar a função faça
Espero ter ajudado.
Function FeriadoMovel(ByVal Ano As Long, ByRef Carnaval As Date, ByRef SextaFeiraSanta As Date, ByRef Pascoa As Date, ByRef CorpusChristi As Date) As Boolean
On Local Error GoTo errHandle
Dim a, b, c, d, e, f, g, h, i, k, l, m, p, q As Integer
Dim feriado(1 To 4) As Date
FeriadoMovel = False
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
[ô] *** A Páscoa será no dia Q + 1, do mês P ***
feriado(1) = CDate((q + 1) & [Ô]/[Ô] & p & [Ô]/[Ô] & Ano)
[ô] *** Carnaval: 47 dias antes da Páscoa ***
feriado(2) = feriado(1) - 47
[ô] *** Sexta Feira Santa (Paixão): 2 dias antes da Páscoa ***
feriado(3) = feriado(1) - 2
[ô] *** Corpus Christi: 60 dias após a Páscoa ***
feriado(4) = feriado(1) + 60
Carnaval = feriado(2)
SextaFeiraSanta = feriado(3)
Pascoa = feriado(1)
CorpusChristi = feriado(4)
FeriadoMovel = True
Exit Function
errHandle:
Debug.Print Err.Number & vbTab & Err.Description
FeriadoMovel = False
End Function
Para chamar a função faça
Private Sub Command1_Click()
Dim lAno As Long
Dim b As Boolean
Dim dCarnaval As Date, d6FeiraSanta As Date, dPascoa As Date, dCorpusChristi As Date
lAno = 2010
b = FeriadoMovel(lAno, dCarnaval, d6FeiraSanta, dPascoa, dCorpusChristi)
If b Then
MsgBox [Ô]Feriados móveis em [Ô] & lAno [Ô].[Ô] & vbCr & vbCr & _
[Ô]Carnaval: [Ô] & Format(dCarnaval, [Ô]dd/mm/yyyy[Ô]) & vbCr & _
[Ô]Sexta-feira Santa: [Ô] & Format(d6FeiraSanta, [Ô]dd/mm/yyyy[Ô]) & vbCr & _
[Ô]Páscoa: [Ô] & Format(dPascoa, [Ô]dd/mm/yyyy[Ô]) & vbCr & _
[Ô]Corpus Christi: [Ô] & Format(dCorpusChristi, [Ô]dd/mm/yyyy[Ô])
Else
MsgBox [Ô]Não foi possÃvel determinar os feriados para o ano de [Ô] & lAno & [Ô].[Ô], vbCritical
End If
End Sub
Espero ter ajudado.
Valeeeeeu pessoal!
Vou teste aqui.
PS: Tirei a foto, axo melhor né ^-^
Vou teste aqui.
PS: Tirei a foto, axo melhor né ^-^
Tópico encerrado , respostas não são mais permitidas