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?

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

Renan

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
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

Roberto Wutke
Responder

Mais Posts

20/07/2017

Renan

Obrigado amigo.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar