Criação de lista de horarios
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
Curtidas 0
Melhor post
Roberto Wutke
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!
GOSTEI 1
Mais Respostas
Renan
19/07/2017
Obrigado amigo.
GOSTEI 0