Fórum Mascara campo datetime #385850
08/09/2010
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
Posts
08/09/2010
Eriley Barbosa
No before post de sua tabela digite:
SeuDataset.fieldbyname('seucampodatahora').asdatetime := FormatDateTime('dd/mm/yyyy', Now) + ' ' + Trim(SeuComponenteutilizadoparaarmazenarahora.text);
08/09/2010
Eriley Barbosa
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.
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:
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);
Existe algo mais simples ?
08/09/2010
Eriley Barbosa
Vendo sua rotina, acho que ela ta bem simples, não me ocorre no momento uma maneira mais facil de fazer isso.
Certinho, entao.
E para calcular as horas negativas, vc tem alguma sujestao ?
Mt Obrigado pela atencao
08/09/2010
Eriley Barbosa
Como assim horas a menos ou negativas, ilustre melhor a situação.
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
09/09/2010
Eriley Barbosa
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.