[firebase-br] Trabalhando com Hora em quantidade

Leonardo Vinicius Freitag freitagnx em gmail.com
Ter Set 23 21:56:24 -03 2008


Pessoal!

Fiz uma série de testes e acho que encontrei uma forma de fazer pelo banco
de dados, segue o código que utilizei em um procedure pra ver se funcionava:

CREATE PROCEDURE TESTA_HORA (
    IQUANTIDADE NUMERIC(15,3),
    CT_VLR_EQUIV NUMERIC(15, 2))
RETURNS (
    OQUANTIDADE NUMERIC(15,2),
    V_QTDE_TEXTO VARCHAR(20),
    V_HORA time,
    v_horas numeric(15, 2),
    V_MINUTOS NUMERIC(15, 2),
    V_HORA_CONVERTIDA NUMERIC(15, 2))
AS
begin
  oquantidade = :iquantidade;
  v_qtde_texto = cast(:oQUANTIDADE as varchar(20));
  v_hora = cast(:v_qtde_texto as TIME);                /* ADICIONADO */
  v_minutos = cast(extract(minute from :v_hora) as numeric(15, 2));
  v_horas = cast(extract(hour from :v_hora) as numeric(15, 2));
  v_hora_convertida = :v_minutos / :ct_vlr_equiv;
  OQUANTIDADE = :V_HORA_CONVERTIDA + :v_horas;
  suspend;
end

Está meio baguçado, mas acho que dah pra entender a lógica.

Abraço a todos.

Leonardo

2008/9/23 Leonardo Vinicius Freitag <freitagnx em gmail.com>

> Blz pessoal, obrigado pelas dicas...
>
> 2008/9/23 Eduardo Pelizzari de Andrade <eduardoandrade em persoft.com.br>
>
> Acerte isso no programa e já envie para o banco correto é mais fácil.
>> Você pode receber em campos separados ou se for receber no mesmo campo
>> pode calcular tipo:
>>
>> horacerta = int(hora) + ( (((hora -int(hora))*100)  / 60)
>>
>> Eduardo Pelizzari de Andrade
>> Persoft Softwares Aplicativos
>>
>>
>>
>>
>> Leonardo Vinicius Freitag escreveu:
>>  > Olá pessoal!
>> >
>> > Estou com o seguinte problema, e entendo talvez ser simples a solução,
>> mas
>> > confesso que estou apanhando.
>> > Tenho um banco de dados onde um cliente precisa lançar horas de boliche
>> num
>> > campo numeric(15, 2) e que o sistema entenda como hora.
>> > Então se o cliente quiser lançar 1h e 30min ele lançaria 1,3 na
>> quantidade,
>> > ao invés de 1,5.
>> > O máximo que consegui foi converter 1,3 pra 01:30:00 num trigger, mas
>> agora
>> > quero fazer o firebird entender que isso significa 1,5 e multiplique
>> pelo
>> > valor da hora boliche dando o total.
>> >
>> > Alguém pode me ajudar.
>> >
>> >
>> > Leonardo Vinicius Freitag
>>  > ______________________________________________
>> > 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
>> > ------------------------------------------------------------------------
>> >
>> >
>> > No virus found in this incoming message.
>> > Checked by AVG - http://www.avg.com
>> > Version: 8.0.169 / Virus Database: 270.7.1/1686 - Release Date:
>> 23/09/2008 07:38
>>  >
>> >
>>
>> ______________________________________________
>> 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