Criação de lista de horarios
19/07/2017
0
Amigos, preciso criar uma lista de horarios com intervalo de 45min.
Essa rotina deve ir das 08:00 até as 11:45 e depois das 13:30 até as 20:15
Só consegui gerar direto, sem intervalo ao meio dia.
Como poderia fazer?
Essa rotina deve ir das 08:00 até as 11:45 e depois das 13:30 até as 20:15
Só consegui gerar direto, sem intervalo ao meio dia.
Como poderia fazer?
var x : Integer; HoraIni : TTime; begin // Abre e fecha o componente de memoria cdsHorarios.Close; cdsHorarios.IsEmpty; cdsHorarios.CreateDataSet; cdsHorarios.Open; // Procedimento de inicio de hora HoraIni := StrToTime('08:00'); // For para ir das 08:00 as 19:00 for x := 1 to 17 do begin cdsHorarios.Append; cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni; cdsHorarios.Post; HoraIni := IncMinute(HoraIni,45); end; cdsHorarios.First;
Renan
Curtir tópico
+ 0
Responder
Post mais votado
20/07/2017
Bom dia bro,
se seu problema é só o intervalo das 11:45, ou no caso, as quebras, você pode fazer assim...
quando vc faz essa validação
depois que receber o HoraIni vc verifica se ele está entre os horários que vc quer fazer o intervalo e passa um valor fixo para o HoraIni tipo assim uma ideia.
HoraIni := IncMinute(HoraIni,45);
if horaIni > 11:45 then // Vamos saber se passou de 11:45
begin
if horaIni < 13:30 then // Se for menor que 13:30, sinal que é intervalo de almoço,
begin // ja posta o valor final do almoço no banco e atribui o novo valor da variavel para as 13:30
horaIni := StrToTime('11:45');
[code]cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni;
cdsHorarios.Post;
horaIni := StrToTime('13:30');
end;
if horaIni > 20:15 then // Se for maior que 20:15, ja atribui o valor à variavel e aplica no banco.
begin
horaIni := StrToTime('20:15');
[code]cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni;
cdsHorarios.Post;
HoraIni := IncMinute(HoraIni,45); // Aqui so vai atribuir +45 min pq se for 20:15 será o ultimo registro, então passo +45 pra sair do for.
end;
end;
acho que assim resolveria sua questão.... ai é só vc validar o seu for certinho, no seu caso vc não usa 'x' pra nada, voce pode criar uma validação com o HoraIni, verificando <for horaIni := strtoTime('08:00') to strToTime('20:15) do> mais ou menos assim, ai vc validaria melhor, pq dessa forma o ultimo horario sempre vai ser 20:15
acho que é isso, bro!
as vezes vou imaginando demais e acabo viajando nas ideias...
Qualquer coisa, tamo ai, bons códigos!
se seu problema é só o intervalo das 11:45, ou no caso, as quebras, você pode fazer assim...
quando vc faz essa validação
cdsHorarios.Append; cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni; cdsHorarios.Post; HoraIni := IncMinute(HoraIni,45);
depois que receber o HoraIni vc verifica se ele está entre os horários que vc quer fazer o intervalo e passa um valor fixo para o HoraIni tipo assim uma ideia.
HoraIni := IncMinute(HoraIni,45);
if horaIni > 11:45 then // Vamos saber se passou de 11:45
begin
if horaIni < 13:30 then // Se for menor que 13:30, sinal que é intervalo de almoço,
begin // ja posta o valor final do almoço no banco e atribui o novo valor da variavel para as 13:30
horaIni := StrToTime('11:45');
[code]cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni;
cdsHorarios.Post;
horaIni := StrToTime('13:30');
end;
if horaIni > 20:15 then // Se for maior que 20:15, ja atribui o valor à variavel e aplica no banco.
begin
horaIni := StrToTime('20:15');
[code]cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni;
cdsHorarios.Post;
HoraIni := IncMinute(HoraIni,45); // Aqui so vai atribuir +45 min pq se for 20:15 será o ultimo registro, então passo +45 pra sair do for.
end;
end;
acho que assim resolveria sua questão.... ai é só vc validar o seu for certinho, no seu caso vc não usa 'x' pra nada, voce pode criar uma validação com o HoraIni, verificando <for horaIni := strtoTime('08:00') to strToTime('20:15) do> mais ou menos assim, ai vc validaria melhor, pq dessa forma o ultimo horario sempre vai ser 20:15
acho que é isso, bro!
as vezes vou imaginando demais e acabo viajando nas ideias...
Qualquer coisa, tamo ai, bons códigos!
Roberto Wutke
Responder
Mais Posts
Clique aqui para fazer login e interagir na Comunidade :)