Mascara campo datetime
Estou criando um programa para somar horas trabalhadas, estou usando campo DateTime do FB, mas na hora de digitar esta horrivel, pois é necessario digitar a data e a hora, tem como o usuario entrar somente com as horas ? e a data eu pegar do sistema ?
Use a mascara:
Display Format = HH:MM
EditMask = !90:00;1;_
Mas se eu gravar usando dessa maneira, a data é gravada 31/12/1899
Gostaria do usuario digitar somente hora e minutos.
Abs
Felipe Ip
Curtidas 0
Respostas
Eriley Barbosa
08/09/2010
No before post de sua tabela digite:
SeuDataset.fieldbyname('seucampodatahora').asdatetime := FormatDateTime('dd/mm/yyyy', Now) + ' ' + Trim(SeuComponenteutilizadoparaarmazenarahora.text);
GOSTEI 0
Eriley Barbosa
08/09/2010
Desculpe amigo, o correto é:
No before post de sua tabela digite:
SeuDataset.fieldbyname('seucampodatahora').asdatetime := StrToDateTime(FormatDateTime('dd/mm/yyyy', Now) + ' ' + Trim(SeuComponenteutilizadoparaarmazenarahora.text));
Antes tava passando uma string para uma data hora ia dar erro de conversão.
GOSTEI 0
Felipe Ip
08/09/2010
Muito Obrigado,
Voce saberia me dizer como faço para calcular, no caso, horas negativas, por exemplo no caso do funcionario ter feito horas a menos.
Estou usando o seguinte codigo para somar as horas e encontrar a hora extra:
Existe algo mais simples ?
DecodeTime(CdsHorasHORA.Value, Hora, Min, Seg, MSeg); if (Min < 60) and (Min <> 0) then begin if (xAcuMin < 60) then xAcuMin := (xAcuMin + Min); if (xAcuMin >= 60) then begin xAcuHor := (xAcuHor + 1); // soma uma hora se minuto >= 60 xAcuMin := (xAcuMin - 60); // diminui horas do minuto >= 60 end; end; xAcuHor := (xAcuHor + Hora);
GOSTEI 0
Eriley Barbosa
08/09/2010
Vendo sua rotina, acho que ela ta bem simples, não me ocorre no momento uma maneira mais facil de fazer isso.
GOSTEI 0
Felipe Ip
08/09/2010
Certinho, entao.
E para calcular as horas negativas, vc tem alguma sujestao ?
Mt Obrigado pela atencao
GOSTEI 0
Eriley Barbosa
08/09/2010
Como assim horas a menos ou negativas, ilustre melhor a situação.
GOSTEI 0
Felipe Ip
08/09/2010
Sei que nao existe horas negativas, mas nesse caso é quando o funcionando trabalha menos, por exemplo, carga horario de 8:00 por dia, ele faz 7:00, entao ficou negativo em 1:00, preciso no final somar e ter um total de horas trabalhadas no periodo.
Abs
GOSTEI 0
Eriley Barbosa
08/09/2010
Só se você calcular o valor linha, exemplo:
if (Horas_Trabalhadas - 08:00) < 0 then//Fez horas a menos
Horas_negativas := Horas_negativas - (Horas_Trabalhadas - 08:00)
else
if (Horas_Trabalhadas - 08:00) > 0 then //Fez horas extras
Horas_Extras := Horas_Extras + (Horas_Trabalhadas - 08:00);
Isso você coloca dentro de um Loop após fazer a consulta das horas trabalhadas no mês, onde horas trabalhadas é o que o funcionario trabalhou no dia. Ai fazendo a soma de todas as horas_trabalhadas você obterá o que o funcionario trabalhou no mês.
GOSTEI 0