Verificar no banco apenas 1 vez com OnTimer

Delphi

28/06/2014

Olá, eu tenho uma rotina na minha agenda de eventos que estou criado que verifica no meu manco MySQL se a data de inicio do meu evento estiver próxima do horário, 30 min antes ela ira me exibir uma mensagem porém neste periodo de 30 min ela não para de me enviar a mensagem, alguem sabe com fazer esta rotina verificar apenas uma vez só?

Obs: Banco MySQL, Componente Zeos, e Delphi7

procedure TFrmAgenda.Timer1Timer(Sender: TObject);
var
  query: TZQuery;
begin
  try
    query := TZQuery.Create(nil);//oncreate
    query.Connection := DM_Agenda.db_Agenda;//oncreate
    query.SQL.Add('SELECT codigo_compromisso as compromisso FROM compromisso WHERE data_inicio_compromisso'+
                ' = :PDataInicio AND hora_inicio_compromisso < :PHoraFim2 AND hora_fim_compromisso > :PHoraFim1');
    query.ParamByName('PDataInicio').AsString := FormatDateTime ('yyyy/mm/dd', Now);
    query.ParamByName('PHoraFim1').AsString := FormatDateTime ('HH:mm:ss', Now);
    query.ParamByName('PHoraFim2').AsString := FormatDateTime ('HH:mm:ss',(IncMinute(now, 30)));
    query.Open;
    if (query.FieldByName('compromisso').AsString <> '') then
      ShowMessage ('Evento proximo de começar: ' + query.FieldByName('compromisso').AsString);
  finally
    FreeAndNil(query);
  end;

end;
Lucas Mees

Lucas Mees

Curtidas 0

Respostas

Jocelio Silva

Jocelio Silva

28/06/2014

Tente desligar o timer após o procedimento.
GOSTEI 0
Itamar Souza

Itamar Souza

28/06/2014

Boa tarde

Você pode tentar fechar o time logo após a mensagem. Só que ele pode não mais retornar a chama a mensagem, faz um teste.



procedure TForm1.ConsultaEvento;
begin
   //seu código aqui
  // if (query.FieldByName('compromisso').AsString <> '') then
     //  ShowMessage ('Evento proximo de começar: ' + query.FieldByName('compromisso').AsString);
       Timer1.Enabled :=false;
   // finally
  // FreeAndNil(query);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //consulta evento
   ConsultaEvento;
end;

GOSTEI 0
POSTAR