Feriado entre duas data
Pessoal!
Estou tendo dificuldade para pegar a quantidade de feriado entre duas datas para um sistema de locadora onde tenho a data prevista para devolucao e a data da devolucao, tenho a tabela calendario com os feriados uso o Firebir 2.0. delphi 7.
Agradeço.
Estou tendo dificuldade para pegar a quantidade de feriado entre duas datas para um sistema de locadora onde tenho a data prevista para devolucao e a data da devolucao, tenho a tabela calendario com os feriados uso o Firebir 2.0. delphi 7.
Agradeço.
Fernandoaco
Curtidas 0
Respostas
Paulo
06/07/2008
Cara uma vez fiz algo semelhante. Criei uma tabela com todos os feriados nos próximos 10 anos e fui setando variáveis caso acontecesse um desses feriados. Aí com as variáveis carregadas ou não, eu então fazia meus códigos. Eu tinha dois tipos. Os feriados com dia e mes fixos, tipo(01/01, 21/04,01/05,07/09,12/10,02/11,15/11 e 25/12). Esses eu não precisava carregar nas tabelas pois são fixos, ou seja, serão sempre nesse dia e mes. Eu apenas criava uma rotina para saber se esse dia é:
Sexta, ou Segund(Prolongado), Sábado ou Domingo(Nada acontecia) ou outro dia da semana. A tabela eu criei para os feriados religiosos, que variam, como: Carnaval, Sexta da Paixão e Copus Cristis. Para esse sim eu setava as variáveis, de acordo com a minha tabela para os próximos 10 anos. Claro que há várias formas de se fazer. Essa forma é apenas uma de muitas.
Sexta, ou Segund(Prolongado), Sábado ou Domingo(Nada acontecia) ou outro dia da semana. A tabela eu criei para os feriados religiosos, que variam, como: Carnaval, Sexta da Paixão e Copus Cristis. Para esse sim eu setava as variáveis, de acordo com a minha tabela para os próximos 10 anos. Claro que há várias formas de se fazer. Essa forma é apenas uma de muitas.
GOSTEI 0
Javapaulomg
06/07/2008
A dica que posso lhe dar que utilizo e que itero a quantidade de dias e vejo dia a dia se o mesmo e feriado, caso não seja incremento a contagem.
GOSTEI 0
Fernandoaco
06/07/2008
Valeu a dica, vou fazer incrementando.
Obrigado.
Obrigado.
GOSTEI 0
Emerson Nascimento
06/07/2008
isso pode ser muito fácil, dependendo da estrutura da sua tabela Calendario.
supondo que a sua tabela Calendario contenha apenas os feriados, e a estrutura seja:*o tipo baseia-se no estado/município de origem. como estou em São Paulo/SP, os feriados de 25/01/2008 e 09/07/2008 são válidos
agora, para contar, basta:
select count(*) from Calendario where Data between DataInicio and DataFim
no Delphi:
(adicione a unit SQLTimSt para poder utilizar a função DateTimeToSQLTimeStamp())
supondo que a sua tabela Calendario contenha apenas os feriados, e a estrutura seja:
Data Descricao Tipo* 01/01/2008 Confraternização Universal Nacional 25/01/2008 Aniversário de São Paulo Municipal 01/05/2008 Dia do trabalho Nacional 09/07/2008 Revolução Const. de 1932 Estadual 25/12/2008 Natal Nacional
agora, para contar, basta:
select count(*) from Calendario where Data between DataInicio and DataFim
no Delphi:
cds.Close; cds.CommandText := ´select count(*) from Calendario ´+ ´where Data between :DataInicio and :DataFim ´; cds.Params.ParamByName(´DataInicio´).AsSQLTimeStamp := DateTimeToSQLTimeStamp( DateTimePicker1.Date ); cds.Params.ParamByName(´DataFim´).AsSQLTimeStamp := DateTimeToSQLTimeStamp( DateTimePicker2.Date ); cds.Open; ShowMessage(´Há ´+cds.Fields[0].AsString+ ´ feriados entre ´+DateToStr(DateTimePicker1.Date)+ ´ e ´+DateToStr(DateTimePicker2.Date) ) cds.Close;
(adicione a unit SQLTimSt para poder utilizar a função DateTimeToSQLTimeStamp())
GOSTEI 0