Estou com uma pequena agenda de compromissos, onde tenho uma duvida sobre trabalhar com dados em memoria, para melhorar a performance.
O funcionamento é bem simples.
Ao clicar num calendário, executo esse código, que varre a tabela AGENDA e conta quantos compromissos tenho por hora, listando os horários num clientdataset e exibido num dbgrid.
procedure TFrmAgenda.CarregaHorarios(f_Data: TDate);
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('07:15');
// For para ir das 08:00 as 11:45 e 13:30 as 20:15
for X := 1 to 16 do
begin
HoraIni := IncMinute(HoraIni, 45);
//Contando os registros pra colorir o grid horarios
with qrCont do
begin
Close;
SQL.Clear;
SQL.Add('SELECT DATA, HORA FROM AGENDA');
SQL.Add('WHERE HORA = :H AND DATA = :D');
ParamByName('H').AsTime := HoraIni;
ParamByName('D').AsDate := Calendario.Date;
Open;
FetchAll;
end;
cdsHorarios.Append;
cdsHorarios.FieldByName('HORA').AsDateTime := HoraIni;
cdsHorarios.FieldByName('QTDE').AsInteger := qrCont.RecordCount;
cdsHorarios.Post;
if HoraIni = StrToTime('11:45') then
HoraIni := IncMinute(HoraIni, 60);
end;
cdsHorarios.First;
GridHorariosCellClick(GridHorarios.Columns[0]); //Mostra a agenda do 1º registro
end;
Pergunta
renanbg
Estou com uma pequena agenda de compromissos, onde tenho uma duvida sobre trabalhar com dados em memoria, para melhorar a performance.
O funcionamento é bem simples.
Ao clicar num calendário, executo esse código, que varre a tabela AGENDA e conta quantos compromissos tenho por hora, listando os horários num clientdataset e exibido num dbgrid.
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.