[firebase-br] RES: RES: Verificar ciclos no firebird[RESOLVIDO]

Rafael Voltani rafael.volts em turbocode.com.br
Seg Nov 7 18:26:52 -03 2011


Consegui chegar no resultado esperado... ufa..

Resolvi testar no Excel pra ganhar tempo...
Cada informação em um campo com seus respectivos nomes 

Os dados iniciais para testes foram:
>> ULTIMO : 26/09/2011 - data do ultimo evento
>> INTERVALO : 21 - intervalo de dias entre uma limpeza e outra
>> _HOJE :  =HOJE()

A formula que me passou foi esta... 
(((CURRENT_DATE - DATA_ULT_LIMPEZA) / 25+1) * 25 + DATA_ULT_LIMPEZA)

Transferida para o Excel ficou: 
=((_HOJE - ULTIMO) / INTERVALO + 1 ) * INTERVALO + ULTIMO
Chegando ao resultado de 28/11/2011

Ai montei uma coluna que pega a data anterior e soma INTERVALO, para
comparação de informação

Depois de algum tempo alterando a formula recebida, cheguei formula
abaixo que atende ao esperado.
=INT( ((_HOJE-1) - ULTIMO) / INTERVALO + 1)  * INTERVALO + ULTIMO

Mas no firebird ficou assim:
  (CAST( ((CURRENT_DATE-1)-CAST(DATA_ULT_LIMPEZA AS DATE))/21+1 AS
INTEGER)*21+ DATA_ULT_LIMPEZA)  

Tive que converter o campo timestamp para data, senão dava errado em
algumas datas mais distantes, mas agora está corretíssimo.

Obrigado a tds pela ajuda...

[]s

Rafael

-----Mensagem original-----
De: lista-bounces em firebase.com.br
[mailto:lista-bounces em firebase.com.br] Em nome de Alysson Gonçalves de
Azevedo
Enviada em: segunda-feira, 7 de novembro de 2011 13:53
Para: FireBase
Assunto: Re: [firebase-br] RES: Verificar ciclos no firebird

Man, não mexo com fb já faz um tempo... e não tenho base de testes
aqui, então vc vai ter que se virar aew xD.

Uma vez eu postei algo parecido que te ajudaria... Adaptando a ideia
ao seu problema, deixa eu tentar explicar.

Só pra confirmar, o que você precisa é saber a data da próxima
limpeza, independente se a última cadastrada no seu banco foi ontem ou
se foi ano passado, certo?

Bem, para isso, vamos trabalhar exatamente com ciclos (isso você já
sabe,
neh) de 25 dias.
Para resolver o seu problema, você precisa contar quantos ciclos
passaram desde a última limpeza até a data atual, somar 1, multiplicar
por 25 e somar o resultado à data da última limpeza, isso irá retornar
a data da próxima limpeza.

Exemplo:
Data Ul. Limpeza: 15/08/2011
Data atual: 07/11/2011

Calculando mentalmente, sabemos que se passaram 84 dias, e a data da
próxima limpeza seria daqui a 16 dias (quando completasse o quarto
ciclo, 100 dias), no dia 23/11/2011

Como calcular:
Como eu disse, não tenho fb aqui, então vou passar apenas a teoria, e
você converte para sql.
Primeiro, calcule a quantidade de dias que se passaram (data_atual -
data_ult_limpeza).
Depois,divida o resultado por 25 para calcular quantos ciclos se
passaram, no nosso caso, 84/25 = 3 (o firebird arrendonda pra baixo).
3 é o número de ciclos que se passaram até a data atual, some 1 ao
resultado para ter o ciclo da próxima limpeza, ficará 4.
Pegue esse 4 e multiplique pelo numero de dias, 25. Resultado = 100.
Some 100 à data da ultima limpeza, 15/08/2011 + 100 = 23/11/2011.

Em outras palavras,
select (((current_date-data_ult_limpeza)/25+1)*25+data_ult_limpeza) as
data_prox_limpeza from...

Imagino que isso resolverá seu problema.


Alysson Gonçalves de Azevedo
(11) 8491-7730



Em 4 de novembro de 2011 20:53, Oliveira, José Augusto Siqueira de <
contabil em sivolc.ind.br> escreveu:

> Não entendi ! Não seria fazer um SQL para verificar quais as bombas 
> estão completando 25 dias naquele dia especifico ? Para saber quais 
> bombas teria de efetuar manutenção no dia ?
>
> Oliveira, José Augusto Siqueira de
> Sivolc  Móveis e Complementos
> (32) 3531-4677
> contabil em sivolc.ind.br
>
> "Aviso de confidencialidade profissional" - Esta mensagem eletrônica
e 
> seus anexos são destinados exclusivamente ao(s) destinatário(s)
acima 
> e podem conter informações confidenciais sujeitas a restrição legal
de 
> comunicação entre as partes. Caso tenha recebido esta mensagem por
engano, fica V.Sa.
> ciente de que a distribuição, divulgação ou disseminação das 
> informações aqui contidas ou anexadas é terminantemente proibida, 
> sujeitando o responsável às penalidades aplicáveis. Assim,
solicitamos 
> a gentileza de retorná-la de imediato ao remetente, eliminando-a 
> definitivamente de seu sistema. Em caso de dúvida, queira por favor
entrar em contato conosco."
>
> "Confidentiality notice" - This message and its attachments are 
> addressed solely to the persons above and may contain privileged and

> confidential communication. If you have received the message in
error, 
> the distribution or dissemination of the content hereof is
prohibited. 
> Please return it immediately to the sender and please delete the 
> message from your system on a permanent basis. Should you have any
questions, please contact."
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br 
> [mailto:lista-bounces em firebase.com.br]
> Em
> nome de Rafael Voltani
> Enviada em: sexta-feira, 4 de novembro de 2011 18:16
> Para: lista em firebase.com.br
> Assunto: [firebase-br] Verificar ciclos no firebird
> Prioridade: Alta
>
> Boa tarde
>
> É possível montar no firebird a verificação de ciclos a partir de
uma 
> data.
>
> Ex:
> Supondo que seja para uma loja de aquários.
> Numa consulta, o usuário quer saber a previsão de limpeza da bomba
de 
> ar de cada aquário.
>
> A limpeza se faz de 25 em 25 dias.
>
> DT_ULTIMA_LIMPEZA = 04/09/2011
>
> A partir da DT_ULTIMA_LIMPEZA faz o ciclo de 25 em 25 dias até a 
> próxima data da data atual.
>
> []'s
>
> Rafael
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista